Strategi Pelacakan Tren Berdasarkan Penembusan Saluran

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

img

Gambaran umum

Strategi ini adalah strategi pelacakan tren yang dirancang berdasarkan teori penembusan saluran. Ini membangun saluran menggunakan harga tertinggi dan harga terendah selama periode tertentu dan menghasilkan sinyal perdagangan ketika harga keluar dari saluran. Strategi ini cocok untuk pasar tren dan dapat menangkap arah tren harga untuk pelacakan tren.

Logika Strategi

Strategi ini pertama-tama menghitung harga tertinggi dan harga terendah selama periode panjang untuk membangun band atas dan band bawah saluran. Ketika harga penutupan menembus band atas, posisi panjang dibuka. Ketika harga penutupan menembus band bawah, posisi pendek dibuka. Posisi akan ditutup ketika harga jatuh kembali ke saluran.

Strategi ini juga memetakan indikator EMA dengan panjang *2 untuk menentukan arah tren.

Analisis Keuntungan

  • Strategi ini dapat menangkap tren harga dan cocok untuk tren pasar dengan potensi keuntungan yang tinggi.
  • Menggunakan channel breakout untuk menghasilkan sinyal dapat mengurangi false breakout dan meningkatkan kualitas sinyal.
  • Menggabungkan dengan EMA untuk menghindari perdagangan melawan tren dan memastikan pelacakan tren utama.

Analisis Risiko

  • Strategi breakout cenderung menghasilkan perdagangan yang sering selama konsolidasi harga, yang mungkin menimbulkan biaya perdagangan yang tinggi.
  • Strategi tidak dapat keluar dari posisi segera ketika tren berbalik, yang dapat menyebabkan kerugian besar.
  • Strategi ini sensitif terhadap pengaturan parameter dan parameter yang berbeda dapat menyebabkan hasil yang sama sekali berbeda.

Arahan Optimasi

  • Masukkan indikator lain seperti MACD, RSI untuk menghindari kegagalan yang salah.
  • Gunakan algoritma pembelajaran mesin untuk mengoptimalkan parameter secara otomatis dan meningkatkan ketahanan.
  • Atur stop loss untuk mengontrol drawdown maksimum.

Ringkasan

Secara singkat, ini adalah strategi pelacakan tren sederhana berdasarkan penembusan saluran untuk menangkap tren. Ini memiliki kemampuan pelacakan tren yang kuat dan dapat mencapai pengembalian yang baik di pasar tren. Tetapi juga memiliki beberapa risiko dan membutuhkan optimasi lebih lanjut untuk meningkatkan stabilitas. Melalui penyetelan parameter, pengaturan stop loss dan menggabungkan dengan indikator lain, strategi ini dapat diterapkan 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 banyak