
Scalable Breakout Trading Strategy adalah strategi breakout yang sangat fleksibel dan dapat diperluas dengan mengidentifikasi area resistensi pendukung utama harga dan menghasilkan sinyal perdagangan ketika harga menembus area tersebut. Strategi ini dapat diterapkan pada periode waktu yang berbeda dengan menyesuaikan parameter, dan dapat dengan mudah mengintegrasikan berbagai kondisi penyaringan tambahan dan mekanisme manajemen risiko sehingga dapat dioptimalkan untuk aset tertentu.
Strategi ini pertama kali menggunakanswings()Fungsi ini menghitung titik tertinggi dan terendah dari harga saat ini berdasarkan periode pengembalian.swingLookbackSet parameter, dengan default 20 garis K. Setelah itu, ketika harga menembus titik tinggi fluktuasi, lakukan lebih banyak; ketika harga jatuh ke titik rendah fluktuasi, lakukan lebih sedikit.
Logika spesifik dari sinyal over adalah, ketika harga close lebih besar dari sama dengan harga high yang berfluktuasi, maka over. Logika spesifik dari sinyal under adalah, ketika harga close lebih kecil dari sama dengan harga low yang berfluktuasi, maka under.
Selain itu, strategi ini juga menetapkan stop loss, melaluistopTargetPercentParameter untuk mengatur tingkat stop loss. Misalnya, stop loss plus diatur di bawah 5% dari harga tertinggi, stop loss plus diatur di atas 5% dari harga terendah.
Keuntungan dari strategi ini adalah bahwa Anda dapat mengontrol frekuensi perdagangan dengan menyesuaikan periode review. Semakin pendek periode review, semakin sensitif terhadap terobosan, semakin tinggi frekuensi perdagangan. Sebaliknya, terlalu lama periode review, frekuensi perdagangan menurun tetapi kemungkinan kehilangan peluang.
Tanggapan:
Strategi ini dapat dioptimalkan dalam beberapa hal:
Uji coba dengan berbagai parameter review period untuk menemukan kombinasi optimal;
Uji siklus perdagangan yang berbeda, seperti 5 menit, 15 menit, 1 jam, dan lain-lain, untuk memilih periode terbaik;
Mengoptimalkan stop loss margin, menyeimbangkan ruang profit dan pengendalian risiko;
Menambahkan kondisi penyaringan, seperti penyaringan volume transaksi, penyaringan kenaikan dan penurunan, untuk mengurangi sinyal berkualitas rendah;
Integrasi lebih banyak mekanisme manajemen risiko, seperti stop loss yang bergerak, penguncian keuntungan, dan sebagainya;
Optimalisasi parameter, optimalisasi langkah demi langkah, pencarian acak, dan lain-lain;
Mengintegrasikan teknologi pembelajaran mesin, menggunakan AI untuk mengoptimalkan parameter secara otomatis.
Scalable breakout trading strategy adalah sistem breakout yang sangat praktis. Ini sederhana dan mudah digunakan, dapat disesuaikan, dan dapat dioptimalkan untuk aset yang berbeda dengan menyesuaikan periode review dan mengintegrasikan berbagai kondisi penyaringan.
/*backtest
start: 2023-09-29 00:00:00
end: 2023-10-29 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © deperp
//@version=5
// strategy("Range Breaker", overlay=true, initial_capital=100000, default_qty_type=strategy.percent_of_equity, default_qty_value=10, commission_type=strategy.commission.percent, commission_value=0.07, pyramiding=0)
// Backtest Time Period
useDateFilter = input.bool(true, title="Begin Backtest at Start Date",
group="Backtest Time Period")
backtestStartDate = input(timestamp("1 Jan 2020"),
title="Start Date", group="Backtest Time Period",
tooltip="This start date is in the time zone of the exchange " +
"where the chart's instrument trades. It doesn't use the time " +
"zone of the chart or of your computer.")
inTradeWindow = true
swingLookback = input.int(20, title="Swing Lookback", minval=3)
stopTargetPercent = input.float(5, title="Stop Target Percentage", step=0.1)
// Calculate lockback swings
swings(len) =>
var highIndex = bar_index
var lowIndex = bar_index
var swingHigh = float(na)
var swingLow = float(na)
upper = ta.highest(len)
lower = ta.lowest(len)
if high[len] > upper
highIndex := bar_index[len]
swingHigh := high[len]
if low[len] < lower
lowIndex := bar_index[len]
swingLow := low[len]
[swingHigh, swingLow, highIndex, lowIndex]
// Strategy logic
[swingHigh, swingLow, highIndex, lowIndex] = swings(swingLookback)
longCondition = inTradeWindow and (ta.crossover(close, swingHigh))
shortCondition = inTradeWindow and (ta.crossunder(close, swingLow))
if longCondition
strategy.entry("Long", strategy.long)
if shortCondition
strategy.entry("Short", strategy.short)
longStopTarget = close * (1 + stopTargetPercent / 100)
shortStopTarget = close * (1 - stopTargetPercent / 100)
strategy.exit("Long Stop Target", "Long", limit=longStopTarget)
strategy.exit("Short Stop Target", "Short", limit=shortStopTarget)
// Plot break lines
// line.new(x1=highIndex, y1=swingHigh, x2=bar_index, y2=swingHigh, color=color.rgb(255, 82, 82, 48), width=3, xloc=xloc.bar_index, extend=extend.right)
// line.new(x1=lowIndex, y1=swingLow, x2=bar_index, y2=swingLow, color=color.rgb(76, 175, 79, 47), width=3, xloc=xloc.bar_index, extend=extend.right)
// Alert conditions for entry and exit
longEntryCondition = inTradeWindow and (ta.crossover(close, swingHigh))
shortEntryCondition = inTradeWindow and (ta.crossunder(close, swingLow))
longExitCondition = close >= longStopTarget
shortExitCondition = close <= shortStopTarget
alertcondition(longEntryCondition, title="Long Entry Alert", message="Enter Long Position")
alertcondition(shortEntryCondition, title="Short Entry Alert", message="Enter Short Position")
alertcondition(longExitCondition, title="Long Exit Alert", message="Exit Long Position")
alertcondition(shortExitCondition, title="Short Exit Alert", message="Exit Short Position")