Saluran Donchian Dengan Strategi Stop Loss Trailing

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

img

Ringkasan

Ini adalah strategi trend berikut berdasarkan penunjuk Saluran Donchian, digabungkan dengan stop loss dinamik berdasarkan penunjuk ATR untuk mengunci keuntungan.

Logika Strategi

Strategi ini menggunakan Saluran Donchian 20 tempoh, di mana garis tengah saluran adalah purata tertinggi tertinggi dan terendah terendah. Ia pergi lama apabila harga melintasi di atas garis tengah saluran dan pergi pendek apabila harga melintasi di bawah garis tengah. Peraturan keluar adalah apabila harga menyentuh garis stop loss dinamik, yang dikira sebagai terendah terendah dari 3 bar baru-baru ini dikurangkan satu pertiga daripada nilai ATR untuk kedudukan panjang, dan tertinggi dari 3 bar baru-baru ini ditambah satu pertiga daripada nilai ATR untuk kedudukan pendek.

Analisis Kelebihan

Kelebihan utama strategi ini ialah:

  1. Saluran Donchian berkesan dalam mengenal pasti arah trend pasaran dan menangkap trend.
  2. Stop loss yang dinamik berdasarkan ATR mengunci keuntungan sambil mengawal risiko.
  3. Menggabungkan faktor ATR ke dalam pengiraan stop loss mengambil kira turun naik pasaran, menjadikan stop lebih munasabah.
  4. Kaedah pengiraan stop loss adalah stabil dan boleh dipercayai, mengelakkan berhenti terlalu dekat dan berhenti terlalu awal.

Analisis Risiko

Risiko utama strategi ini termasuk:

  1. Saluran Donchian mempunyai beberapa kesan kelewatan, yang mungkin kehilangan peluang jangka pendek.
  2. Tetapan parameter ATR yang tidak betul boleh menyebabkan stop loss terlalu luas atau terlalu dekat.
  3. Mekanisme penentuan trend agak mudah, yang boleh menghasilkan lebih banyak isyarat palsu semasa penyatuan pasaran.
  4. Kekurangan penilaian sokongan / rintangan yang berkesan, mengakibatkan masa kemasukan pasaran yang tidak tepat.

Arahan pengoptimuman

Beberapa arah pengoptimuman untuk strategi ini:

  1. Tambahkan penunjuk lain untuk mengelakkan perdagangan yang kerap apabila tidak ada trend yang jelas.
  2. Tambah penilaian sokongan / rintangan untuk mengoptimumkan masa kemasukan.
  3. Uji kaedah pengiraan stop loss dinamik yang lain untuk mengoptimumkan lagi strategi stop loss.
  4. Uji kesan parameter tempoh Saluran Donchian yang berbeza terhadap prestasi strategi.
  5. Tambah penapis pada kelantangan atau peningkatan untuk mengurangkan isyarat palsu.

Kesimpulan

Ringkasnya, ini adalah strategi trend berikut yang mudah dan praktikal. Ia mengenal pasti arah trend melalui Saluran Donchian dan mengunci keuntungan dengan stop loss trailing dinamik, yang dapat mengikuti trend dengan berkesan. Strategi ini agak praktikal untuk digunakan, tetapi boleh dioptimumkan dengan pelbagai cara untuk prestasi yang lebih baik dalam persekitaran pasaran 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 lanjut