Strategi penembusan saluran Donchian adalah strategi mengikuti trend berdasarkan saluran harga. Ia menggunakan jalur atas, jalur bawah, dan purata bergerak garis tengah saluran Donchian untuk menentukan trend harga dan penembusan untuk menjana isyarat beli dan jual.
Strategi ini mula-mula mengira purata bergerak harga tertinggi, terendah terendah, dan garis tengah dalam tempoh tertentu. Band atas dan bawah membentuk saluran harga, sementara garis tengah berada di tengah saluran. Apabila harga memecahkan di atas garis tengah, ia menandakan trend menaik dan pergi panjang. Apabila harga memecahkan di bawah garis tengah, ia menandakan trend menurun dan pergi pendek.
Secara khusus, strategi ini beroperasi dalam langkah-langkah berikut:
Logik di atas menerangkan prinsip perdagangan asas strategi - menangkap trend dengan pecah harga dan menukar arah pada titik pivot.
Strategi ini mempunyai kelebihan berikut:
Terdapat juga beberapa risiko:
Penyelesaian:
Strategi ini boleh dioptimumkan lagi dalam aspek berikut:
Kesimpulannya, strategi penembusan saluran Donchian adalah sistem trend berikut yang berkesan, dengan asas teori yang kukuh, logik yang mudah, dan keupayaan untuk menunggang trend melalui penembusan. Sementara itu, risiko yang melekat pada sistem penembusan sedemikian memerlukan penyesuaian parameter dan penapisan isyarat. Dengan penyelidikan dan pengoptimuman lanjut, strategi Donchian boleh menjadi lebih mantap dan praktikal untuk peniaga kuantitatif.
/*backtest start: 2024-01-26 00:00:00 end: 2024-02-25 00:00:00 period: 4h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy(title = "dc", overlay = true) 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 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) strategy.close("simpleBuy",when=close < dcLower) strategy.entry("simpleSell", strategy.short,when=close < dcAverage) strategy.close("simpleSell",when=close > dcAverage)