
Strategi ini adalah strategi pengesanan trend yang direka berdasarkan teori penembusan saluran. Ia membina saluran dengan mengira harga tertinggi dan terendah dalam kitaran tertentu, menghasilkan isyarat perdagangan apabila harga menembusi saluran.
Strategi ini mula mengira harga tertinggi dan terendah dalam jangka masa panjang, membina saluran atas dan bawah. Apabila harga penutupan menembusi saluran atas, lakukan lebih banyak; apabila harga penutupan menembusi saluran bawah, buat kosong.
Kaedah ini memetakan panjang ke length*Indikator EMA 2 menentukan arah trend. Apabila harga menembusi saluran dan menaik, jika EMA berada dalam trend menaik, ia meningkatkan keberkesanan pengambilan keputusan.
Strategi ini secara keseluruhan adalah strategi pengesanan trend yang sederhana berdasarkan penembusan saluran untuk menangkap trend. Ia mempunyai keupayaan pengesanan trend yang kuat, yang boleh menghasilkan keuntungan yang baik dalam keadaan trend. Tetapi ada juga risiko tertentu, yang perlu dioptimumkan lebih lanjut untuk meningkatkan kestabilan.
/*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 )