
Strategi penembusan saluran dinamik adalah strategi pengesanan trend. Strategi ini menggunakan indikator saluran Donchian untuk menentukan harga beli dan jual secara dinamik, digabungkan dengan indikator ATR yang berfluktuasi untuk menetapkan titik hentian, untuk menghasilkan isyarat perdagangan dan keluar dari hentian secara automatik.
Saluran Donchian adalah penunjuk saluran dinamik yang membentuk lintasan atas dan bawah dengan mengira harga tertinggi dan terendah dalam tempoh tertentu yang lalu. Lintasan atas adalah harga tertinggi dalam tempoh n yang lalu, dan lintasan bawah adalah harga terendah dalam tempoh n yang lalu. Saluran Donchian mencerminkan keluasan turun naik dan trend berpotensi di pasaran.
Strategi ini menetapkan kitaran saluran Donchian selama 20 hari. Ia menghasilkan isyarat beli apabila harga menembusi tren naik, yang menunjukkan bahawa harga memasuki trend naik; ia menghasilkan isyarat jual apabila harga jatuh dari tren turun, yang menunjukkan bahawa harga memasuki tren turun.
Indeks ATR adalah singkatan daripada Average True Range, yang mencerminkan purata ketinggian turun naik aset dalam tempoh yang baru-baru ini. ATR dapat secara automatik menyesuaikan diri dengan perubahan frekuensi turun naik pasaran, sehingga lebih tepat mencerminkan ketinggian turun naik pasaran dalam tempoh yang baru-baru ini.
Strategi ini menggunakan indikator ATR 20 hari untuk mengira titik hentian. Nilai ATR yang lebih besar menunjukkan bahawa semakin besar turun naik pasaran, semakin jauh titik hentian yang ditetapkan. Ini dapat mencegah titik hentian terlalu dekat dan terkena oleh turun naik pasaran yang kecil.
Apabila harga di atas melintasi garis tengah saluran Donchian, ia menghasilkan isyarat beli; apabila harga di bawah melintasi garis tengah saluran Donchian, ia menghasilkan isyarat jual. Ini menunjukkan bahawa harga mula menembusi saluran itu dan memasuki pusingan baru trend.
Pada masa yang sama, titik hentian yang dikira dengan petunjuk ATR, apabila kerugian mencapai titik hentian, hentian aktif keluar dari kedudukan, mengawal risiko.
Saluran Donchian adalah satu indikator trend-tracking. Strategi ini secara dinamik menyesuaikan ruang saluran, yang dapat secara automatik mengikuti perubahan trend pasaran, dan seterusnya menghasilkan isyarat beli dan jual. Ini mengelakkan subjektiviti penilaian buatan, menjadikan isyarat perdagangan lebih objektif dan boleh dipercayai.
Strategi ini merangkumi kedua-dua peraturan jual beli dan jual beli yang membolehkan perdagangan dua hala. Ini memperluaskan keadaan pasaran di mana strategi ini digunakan, dan keuntungan dapat diperoleh semasa kenaikan dan penurunan harga.
Mekanisme hentian kerugian yang digabungkan dengan indikator ATR dapat mengawal kerugian perdagangan tunggal dengan berkesan. Ini sangat penting untuk perdagangan kuantitatif, yang dapat memastikan strategi mendapat keuntungan positif yang stabil dalam peristiwa kebarangkalian yang tinggi.
Strategi saluran Donchian mempunyai risiko terhad. Apabila harga berbalik dan kembali ke saluran, kerugian besar akan timbul jika tidak terhenti. Strategi ini mengurangkan risiko ini melalui mekanisme hentian ATR.
Donchian channel indicator akan menghasilkan isyarat yang salah apabila trend berbalik. Pengguna perlu memperhatikan keadaan pasaran dan mengelakkan mengikuti secara buta apabila terdapat perubahan trend yang ketara. Strategi ini boleh memasukkan indikator penghakiman trend dan sebagainya untuk mengurangkan risiko tersebut.
Parameter kitaran Donchian dan ATR yang terhenti perlu diperiksa dengan optimum, jika tidak, terlalu banyak isyarat kesalahan akan dihasilkan. Strategi ini menggunakan parameter pengalaman, parameter yang perlu dioptimumkan berdasarkan data sejarah di cakera.
Indikator penghakiman trend seperti purata bergerak boleh dimasukkan untuk mengelakkan isyarat salah pada titik perubahan trend yang ketara.
Mengoptimumkan saluran Donchian dan parameter ATR untuk mencari kombinasi parameter yang terbaik. Memendekkan kitaran saluran dengan betul dapat menangkap perubahan trend lebih cepat.
Gabungan dengan petunjuk penilaian tambahan seperti bentuk K-line, perubahan jumlah dagangan, dan lain-lain, dapat meningkatkan ketepatan isyarat dan mengurangkan pertukaran yang tidak perlu.
Strategi penembusan saluran dinamik menumpukan arah trend melalui saluran Donchian dan menghasilkan isyarat perdagangan. Strategi ini mempunyai tahap pengendalian yang tinggi dan sesuai untuk perdagangan kuantitatif. Ruang pengoptimuman terletak pada pengoptimuman pilihan parameter dan peningkatan ketepatan isyarat dalam kombinasi dengan petunjuk tambahan lain.
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 2h
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(2018, "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(testStartYear,testStartMonth,testStartDay,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
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=yellow, 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 < dcAverage) and cross(close,dcAverage)) or ( close< Buy_stop))
strategy.entry("simpleSell", strategy.short,when=(close < dcAverage) and cross(close,dcAverage) )
strategy.close("simpleSell",when=((close > dcAverage) and cross(close,dcAverage)) or ( 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)