Strategi Mengikuti Tren Saluran Breakout


Tanggal Pembuatan: 2023-11-23 14:04:59 Akhirnya memodifikasi: 2023-11-23 14:04:59
menyalin: 0 Jumlah klik: 603
1
fokus pada
1617
Pengikut

Strategi Mengikuti Tren Saluran Breakout

Ringkasan

Strategi ini adalah strategi pelacakan tren yang didesain berdasarkan teori terobosan saluran. Strategi ini membangun saluran dengan menghitung harga tertinggi dan terendah dalam siklus tertentu, yang menghasilkan sinyal perdagangan ketika harga menembus saluran. Strategi ini berlaku untuk perilaku tren, dapat menangkap arah tren harga, untuk pelacakan tren.

Prinsip Strategi

Strategi ini pertama-tama menghitung harga tertinggi dan terendah dalam periode panjang, membangun saluran atas dan bawah. Ketika harga close out menembus uptrend, lakukan over; Ketika harga close out menembus downtrend, lakukan short.

Strategi ini juga memetakan panjang ke length*2 indikator EMA menilai arah tren. Ketika harga menembus saluran dan naik, jika EMA berada dalam tren naik, meningkatkan efektivitas pengambilan keputusan.

Analisis Keunggulan

  • Strategi ini dapat menangkap tren harga, sesuai dengan tren, dan memiliki potensi pendapatan yang besar.
  • Menentukan penembusan melalui saluran dapat mengurangi probabilitas penembusan palsu dan meningkatkan kualitas sinyal.
  • Pengertian EMA ini dapat digunakan untuk menghindari perdagangan berlawanan arah dan memastikan bahwa tren utama dicatat.

Analisis risiko

  • Strategi penembusan saluran cenderung menghasilkan perdagangan yang sering terjadi pada saat harga bergejolak, yang dapat menyebabkan biaya transaksi yang lebih besar.
  • Strategi ini tidak dapat dihapus pada waktu yang tepat ketika tren berbalik, yang dapat menyebabkan kerugian besar.
  • Strategi ini sensitif terhadap pengaturan parameter, dan parameter yang berbeda akan menghasilkan hasil yang berbeda.

Arah optimasi

  • Indikator lain dapat dikombinasikan untuk menilai tren, untuk menghindari false breakout. Misalnya MACD, RSI, dll.
  • Parameter dapat dioptimalkan secara otomatis melalui algoritma pembelajaran mesin untuk meningkatkan kehandalan parameter.
  • Anda dapat mengatur stop loss untuk mengontrol maksimum penarikan.

Meringkaskan

Strategi ini secara keseluruhan adalah strategi pelacakan tren sederhana yang didasarkan pada saluran breakouts untuk menangkap tren. Ini memiliki kemampuan pelacakan tren yang kuat, yang dapat menghasilkan keuntungan yang baik dalam situasi tren. Namun, ada juga risiko tertentu yang perlu dioptimalkan lebih lanjut untuk meningkatkan stabilitas.

Kode 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 )