Strategi Pengesanan Trend Berdasarkan Penembusan Saluran

Penulis:ChaoZhang, Tarikh: 2023-11-23 14:04:59
Tag:

img

Ringkasan

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.

Logika Strategi

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.

Analisis Kelebihan

  • Strategi ini dapat menangkap trend harga dan sesuai untuk pasaran trend dengan potensi keuntungan yang tinggi.
  • Menggunakan penembusan saluran untuk menjana isyarat boleh mengurangkan penembusan palsu dan meningkatkan kualiti isyarat.
  • Menggabungkan dengan EMA untuk mengelakkan perdagangan terhadap trend dan memastikan pengesanan trend utama.

Analisis Risiko

  • Strategi breakout cenderung menghasilkan perdagangan yang kerap semasa penyatuan harga, yang mungkin menimbulkan kos perdagangan yang tinggi.
  • Strategi tidak boleh keluar dari kedudukan dengan segera apabila trend berbalik, yang boleh membawa kepada kerugian besar.
  • Strategi ini sensitif kepada tetapan parameter dan parameter yang berbeza boleh membawa kepada hasil yang sama sekali berbeza.

Arahan pengoptimuman

  • Masukkan penunjuk lain seperti MACD, RSI untuk mengelakkan pecah palsu.
  • Gunakan algoritma pembelajaran mesin untuk mengoptimumkan parameter secara automatik dan meningkatkan ketahanan.
  • Tetapkan stop loss untuk mengawal pengeluaran maksimum.

Ringkasan

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 )

Lebih lanjut