Strategi ini adalah strategi pengesanan trend yang direka berdasarkan teori penembusan saluran. Ia membina saluran menggunakan harga tertinggi dan harga terendah dalam tempoh tertentu dan menghasilkan isyarat perdagangan apabila harga keluar dari saluran. Strategi ini sesuai untuk pasaran trend dan dapat menangkap arah trend harga untuk pengesanan trend.
Strategi ini mula-mula mengira harga tertinggi dan harga terendah dalam tempoh panjang untuk membina jalur atas dan bawah saluran. Apabila harga penutupan memecahkan jalur atas, kedudukan panjang dibuka. Apabila harga penutupan memecahkan jalur bawah, kedudukan pendek dibuka. Kedudukan akan ditutup apabila harga jatuh kembali ke saluran.
Strategi ini juga memetakan penunjuk EMA dengan panjang * 2 untuk menentukan arah trend. Apabila harga menembusi jalur atas, jika EMA berada dalam trend menaik, keputusan panjang diperkuat.
Ringkasnya, ini adalah strategi pengesanan trend yang mudah berdasarkan penembusan saluran untuk menangkap trend. Ia mempunyai keupayaan pengesanan trend yang kuat dan dapat mencapai pulangan yang baik di pasaran trend. Tetapi ia juga mempunyai beberapa risiko dan memerlukan pengoptimuman lanjut untuk meningkatkan kestabilan. Melalui penyesuaian parameter, penetapan stop loss dan menggabungkan dengan penunjuk lain, strategi ini boleh digunakan untuk perdagangan langsung.
/*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 )