Saluran Donchian Dengan Strategi Stop Loss Trailing

Penulis:ChaoZhang, Tanggal: 2023-12-07 16:53:10
Tag:

img

Gambaran umum

Ini adalah strategi mengikuti tren berdasarkan indikator Saluran Donchian, dikombinasikan dengan stop loss dinamis berdasarkan indikator ATR untuk mengunci keuntungan.

Logika Strategi

Strategi ini menggunakan saluran Donchian 20 periode, di mana garis tengah saluran adalah rata-rata tertinggi tertinggi dan terendah terendah. Ini pergi panjang ketika harga melintasi di atas garis tengah saluran dan pergi pendek ketika harga melintasi di bawah garis tengah. Aturan keluar adalah ketika harga menyentuh garis stop loss dinamis, yang dihitung sebagai terendah terendah dari 3 bar terakhir dikurangi sepertiga dari nilai ATR untuk posisi panjang, dan tertinggi dari 3 bar terbaru ditambah sepertiga dari nilai ATR untuk posisi pendek.

Analisis Keuntungan

Keuntungan utama dari strategi ini adalah:

  1. Saluran Donchian efektif dalam mengidentifikasi arah tren pasar dan menangkap tren.
  2. Stop loss trailing dinamis berdasarkan ATR mengunci keuntungan sambil mengendalikan risiko.
  3. Menggabungkan faktor ATR ke dalam perhitungan stop loss memperhitungkan volatilitas pasar, membuat stop lebih wajar.
  4. Metode perhitungan stop loss stabil dan dapat diandalkan, menghindari stop terlalu dekat dan berhenti terlalu dini.

Analisis Risiko

Risiko utama dari strategi ini meliputi:

  1. Saluran Donchian memiliki beberapa efek keterlambatan, yang mungkin kehilangan peluang jangka pendek.
  2. Pengaturan parameter ATR yang tidak tepat dapat menyebabkan stop loss terlalu luas atau terlalu dekat.
  3. Mekanisme penentuan tren relatif sederhana, yang dapat menghasilkan lebih banyak sinyal palsu selama konsolidasi pasar.
  4. Kurangnya penilaian support/resistance yang efektif, mengakibatkan waktu masuk pasar yang tidak tepat.

Arahan Optimasi

Beberapa arah optimasi untuk strategi ini:

  1. Tambahkan indikator lain untuk menghindari perdagangan yang sering ketika tidak ada tren yang jelas.
  2. Tambahkan penilaian dukungan / resistensi untuk mengoptimalkan waktu masuk.
  3. Uji metode perhitungan stop loss dinamis lainnya untuk lebih mengoptimalkan strategi stop loss.
  4. Uji efek dari berbagai parameter periode Saluran Donchian pada kinerja strategi.
  5. Tambahkan filter pada volume atau peningkatan untuk mengurangi sinyal palsu.

Kesimpulan

Singkatnya, ini adalah strategi trend following yang sederhana dan praktis. Ini mengidentifikasi arah tren melalui Saluran Donchian dan mengunci keuntungan dengan stop loss trailing dinamis, yang dapat secara efektif mengikuti tren. Strategi ini cukup praktis digunakan, tetapi dapat dioptimalkan lebih lanjut dengan berbagai cara untuk kinerja yang lebih baik di lingkungan pasar yang lebih kompleks.


/*backtest
start: 2023-11-29 00:00:00
end: 2023-12-06 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title = "dc",  overlay = true)
atrLength = input(title="ATR Length:", defval=20, minval=1)

testStartYear = input(2017, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testEndYear = input(2018, "Backtest Start Year")
testEndMonth = input(12)
testEndDay = input(31, "Backtest Start Day")
testPeriodEnd = timestamp(testEndYear,testEndMonth,testEndDay,0,0)


testPeriod() =>
    true
    //time >= testPeriodStart  ? true : false

dcPeriod = input(20, "Period")

dcUpper = highest(close, dcPeriod)[1]
dcLower = lowest(close, dcPeriod)[1]
dcAverage = (dcUpper + dcLower) / 2
atrValue=atr(atrLength)


useTakeProfit   = na
useStopLoss     = na
useTrailStop    = na
useTrailOffset  = na
//@version=1
Buy_stop = lowest(low[1],3) - atr(20)[1] / 3
plot(Buy_stop, color=red, title="buy_stoploss")
Sell_stop = highest(high[1],3) + atr(20)[1] / 3
plot(Sell_stop, color=green, title="sell_stoploss")

plot(dcLower, style=line, linewidth=3, color=red, offset=1)
plot(dcUpper, style=line, linewidth=3, color=aqua, offset=1)

plot(dcAverage, color=black, style=line, linewidth=3, title="Mid-Line Average")

strategy.entry("simpleBuy", strategy.long, when=(close > dcAverage) and cross(close,dcAverage))
strategy.close("simpleBuy",when= ( close< Buy_stop))
    
strategy.entry("simpleSell", strategy.short,when=(close < dcAverage) and cross(close,dcAverage) )
strategy.close("simpleSell",when=( close > Sell_stop))
    
//strategy.exit("Exit simpleBuy", from_entry = "simpleBuy", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)
//strategy.exit("Exit simpleSell", from_entry = "simpleSell", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)



Lebih banyak