Strategi Pengesanan Tren Saluran Donchian

Penulis:ChaoZhang, Tarikh: 2023-11-06 15:52:56
Tag:

img

Ringkasan

Strategi pengesanan trend Saluran Donchian adalah strategi pengesanan trend berdasarkan penunjuk Saluran Donchian. Strategi ini mengira tertinggi tertinggi dan terendah terendah dalam tempoh yang berbeza untuk membentuk jalur atas, bawah dan tengah untuk menentukan arah trend untuk perdagangan pengesanan trend.

Logika Strategi

Strategi pertama menetapkan julat masa backtesting, dan kemudian menentukan peraturan entri panjang dan pendek.

Untuk kedudukan panjang, buka panjang apabila harga memecahkan di atas jalur atas Saluran Donchian; tutup panjang apabila harga memecahkan di bawah jalur bawah.

Untuk kedudukan pendek, buka pendek apabila harga memecahkan di bawah jalur bawah Saluran Donchian; tutup pendek apabila harga memecahkan di atas jalur atas.

Strategi ini juga menggabungkan penunjuk ATR untuk menetapkan mekanisme keluar stop loss. Nilai ATR didarabkan dengan pekali digunakan sebagai tahap stop loss.

Khususnya, stop loss panjang adalah harga masuk dikurangkan nilai stop loss ATR; stop loss pendek adalah harga masuk ditambah nilai stop loss ATR.

Strategi ini juga merangka jalur atas dan bawah Saluran Donchian dan garis stop loss ATR untuk membentuk sistem perdagangan yang lengkap.

Kelebihan

  • Gunakan Saluran Donchian untuk menentukan arah trend, dengan beberapa keupayaan pengesanan trend.

  • Parameter lancar Saluran Donchian boleh diselaraskan, yang membolehkan pengoptimuman parameter untuk mencari kombinasi parameter terbaik.

  • Mekanisme stop loss dengan ATR dapat mengawal risiko dengan berkesan.

  • Peraturan perdagangan panjang dan pendek adalah mudah dan mudah difahami, sesuai untuk pemula.

  • Struktur kod adalah jelas dan mudah difahami dan diubah suai.

Risiko

  • Saluran Donchian mungkin mempunyai beberapa perdagangan whipsaw semasa turun naik harga yang terikat julat.

  • Tetapan julat kehilangan henti ATR yang tidak betul boleh menyebabkan kehilangan henti yang terlalu luas atau terlalu sensitif.

  • Posisi panjang dan pendek boleh terlalu pekat, memerlukan peraturan saiz kedudukan.

  • Strategi perlu diuji untuk penerapan pada produk yang berbeza, dengan pengoptimuman parameter bebas.

  • Kos perdagangan juga perlu dipertimbangkan, parameter mungkin perlu disesuaikan dalam persekitaran kos tinggi.

Peluang Peningkatan

  • Mengoptimumkan parameter tempoh Saluran Donchian untuk mencari kombinasi parameter terbaik.

  • Cuba pekali ATR yang berbeza untuk mencari julat stop loss yang optimum.

  • Cuba masukkan stop loss di atas stop loss ATR untuk mengunci keuntungan.

  • Sesuaikan nisbah kedudukan panjang/pendek berdasarkan keadaan pasaran.

  • Uji ketahanan parameter pada produk yang berbeza untuk mencari parameter generik.

  • Kajian menggabungkan MACD dan penapis lain untuk meningkatkan kestabilan.

  • Uji kesesuaian parameter di bawah persekitaran kos dagangan yang berbeza.

Ringkasan

Ringkasnya, ini adalah strategi penjejakan trend yang agak mudah yang berpusat pada aplikasi Saluran Donchian. Kelebihannya terletak pada kesederhanaan dan kemudahan pemahaman, menjadikannya sesuai untuk tujuan pembelajaran, tetapi parameter dan risiko masih memerlukan pengoptimuman lanjut. Dengan pelbagai teknik peningkatan, kestabilan strategi dan keuntungan berpotensi dapat ditingkatkan.


/*backtest
start: 2022-10-30 00:00:00
end: 2023-11-05 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © kriswaters

//@version=4
strategy("Donchian Channels Strategy by KrisWaters", overlay=true ) 

// Date filter
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromYear  = input(defval = 2017, title = "From Year", minval = 1900)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToYear    = input(defval = 9999, title = "To Year", minval = 2017)

start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => true // create function "within window of time"

// Strategy Settings
canEnterLong = input(true, title="Can Enter Long Position")
canEnterShort = input(false, title="Can Enter Short Position")

showLongChannel = input(true, title="Show Donchian Long Channels")
showShortChannel = input(false , title="Show Donchian Short Channels")

useAtrAsStopRule = input(false, title="Enable ATR Stop Rule") 

// DonCcian Channel Lengths
longUpperLength = input(20, minval=1)
longLowerLength = input(10, minval=1)

shortUpperLength = input(10, minval=1)
shortLowerLength = input(20, minval=1)

// Donchian indicator calculations
longUpperValue = highest(high,longUpperLength)
longLowerValue = lowest(low,longLowerLength)

shortUpperValue = highest(high,shortUpperLength)
shortLowerValue = lowest(low,shortLowerLength)

// Plot Donchian Channels
uLong = plot(showLongChannel ? longUpperValue : na, color=color.green, offset=1)
lLong = plot(showLongChannel ? longLowerValue : na, color=color.green, offset=1)

uShort = plot(showShortChannel ? shortUpperValue : na, color=color.red, offset=1)
lShort = plot(showShortChannel ? shortLowerValue : na, color=color.red, offset=1)

// Styling
fill(uLong,lLong, color=color.green, transp=95, title="Long Arkaplan")
fill(uShort,lShort, color=color.red, transp=95, title="Short Arkaplan")

// Stop-loss value calculations
atrMultiplier = 2.0
atrValue = atr(20)
longStopValue = open - (atrMultiplier*atrValue)
shortStopValue = open + (atrMultiplier*atrValue)

// Plot stop-loss line
plot(useAtrAsStopRule ? longStopValue : na, color=color.red, linewidth=2, offset=1)
plot(useAtrAsStopRule ? shortStopValue : na, color=color.red, linewidth=2, offset=1)

// Long and Short Position Rules
if canEnterLong and na(longUpperValue) != true and na(longLowerValue) != true and window()
    strategy.entry("Long", true, stop=longUpperValue)
    strategy.exit("Long Exit", "Long", stop=useAtrAsStopRule ? max(longLowerValue,longStopValue) : longLowerValue)
    
if canEnterShort and na(shortUpperValue) != true and na(shortLowerValue) != true and window()
    strategy.entry("Short", false, stop=shortLowerValue)
    strategy.exit("Short Exit", "Short", stop=useAtrAsStopRule ? min(shortUpperValue,shortStopValue) : shortUpperValue)
    


Lebih lanjut