
Strategi ini adalah strategi pelacakan tren yang didesain berdasarkan teori terobosan saluran. Strategi ini membangun saluran dengan menghitung harga tertinggi dan terendah dalam siklus tertentu, yang menghasilkan sinyal perdagangan ketika harga menembus saluran. Strategi ini berlaku untuk perilaku tren, dapat menangkap arah tren harga, untuk pelacakan tren.
Strategi ini pertama-tama menghitung harga tertinggi dan terendah dalam periode panjang, membangun saluran atas dan bawah. Ketika harga close out menembus uptrend, lakukan over; Ketika harga close out menembus downtrend, lakukan short.
Strategi ini juga memetakan panjang ke length*2 indikator EMA menilai arah tren. Ketika harga menembus saluran dan naik, jika EMA berada dalam tren naik, meningkatkan efektivitas pengambilan keputusan.
Strategi ini secara keseluruhan adalah strategi pelacakan tren sederhana yang didasarkan pada saluran breakouts untuk menangkap tren. Ini memiliki kemampuan pelacakan tren yang kuat, yang dapat menghasilkan keuntungan yang baik dalam situasi tren. Namun, ada juga risiko tertentu yang perlu dioptimalkan lebih lanjut untuk meningkatkan stabilitas.
/*backtest
start: 2023-11-15 00:00:00
end: 2023-11-22 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
initial_capital = 1000,
default_qty_value = 90,
default_qty_type = strategy.percent_of_equity,
pyramiding = 0,
commission_value = 0.002,
commission_type = strategy.commission.percent,
calc_on_every_tick = true
length_val = 2
max_bars_back = 1440
risk_max_drawdown = 9
strategy("Channel Break",max_bars_back=max_bars_back,initial_capital = initial_capital,default_qty_value = default_qty_value,default_qty_type = default_qty_type,pyramiding = pyramiding,commission_value = commission_value,commission_type = commission_type,calc_on_every_tick = calc_on_every_tick)
// strategy.risk.max_drawdown(risk_max_drawdown, strategy.percent_of_equity)
length = input(title="Length", minval=1, maxval=1000, defval=length_val)
upBound = highest(high, length)
downBound = lowest(low, length)
//plot (upBound)
//plot (downBound)
//plot (close, color=red)
//plot (ema(close,length * 2), color=green)
//
if (not na(close[length]) and time>timestamp(2018, 02, 24, 0, 00) )
strategy.entry("Buy", strategy.long, stop=upBound + syminfo.mintick, comment="Buy")
strategy.entry("Short", strategy.short, stop=downBound - syminfo.mintick, comment="Short")
position = strategy.position_size
//plot(position , title="equity", color=red,style=cross,linewidth=4)
plot(variance(position,2)>0?1:0,style=circles,linewidth=4)
message = ""
if (position > 0)
message = "BTCUSD L: " + tostring(strategy.position_size)
na(position)
if (position < 0)
message = "BTCUSD S: " + tostring(strategy.position_size)
na(position)
alertcondition(variance(strategy.position_size,2) > 0, "test", message )