Strategi Mengikuti Aliran Saluran Breakout


Tarikh penciptaan: 2023-11-23 14:04:59 Akhirnya diubah suai: 2023-11-23 14:04:59
Salin: 0 Bilangan klik: 603
1
fokus pada
1617
Pengikut

Strategi Mengikuti Aliran Saluran Breakout

Gambaran keseluruhan

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.

Prinsip Strategi

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.

Analisis kelebihan

  • Strategi ini mampu menangkap trend harga, sesuai dengan trend trend, dan berpotensi untuk menjana pendapatan.
  • Dengan menilai penembusan melalui saluran, kemungkinan penembusan palsu dapat dikurangkan dan kualiti isyarat dapat ditingkatkan.
  • Kajian EMA ini boleh digunakan untuk mengelakkan perdagangan berlawanan arah dan memastikan trend utama dikesan.

Analisis risiko

  • Strategi penembusan saluran mudah menghasilkan dagangan yang kerap semasa turun naik harga, yang mungkin membawa kepada yuran dagangan yang lebih besar.
  • Apabila trend berbalik, strategi ini tidak dapat dihapuskan dalam masa yang tepat dan boleh menyebabkan kerugian yang lebih besar.
  • Strategi ini sensitif kepada parameter, dan parameter yang berbeza akan membawa kepada hasil yang berbeza.

Arah pengoptimuman

  • Ia boleh digabungkan dengan indikator lain untuk menilai trend dan mengelakkan penembusan palsu, seperti MACD, RSI dan sebagainya.
  • Parameter boleh dioptimumkan secara automatik melalui algoritma pembelajaran mesin, meningkatkan kebolehpercayaan parameter.
  • Anda boleh menetapkan Hentian Kerosakan untuk mengawal pengunduran maksimum.

ringkaskan

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.

Kod sumber strategi
/*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 )