Strategi Penembusan Saluran Donchian

Penulis:ChaoZhang, Tarikh: 2023-09-19 21:47:41
Tag:

Ringkasan

Strategi ini menggunakan penunjuk Saluran Donchian untuk berdagang penembusan jalur atas dan bawah, yang membolehkan trend mengikuti operasi di seluruh saham / niaga hadapan / crypto / forex dll, yang tergolong dalam strategi penembusan trend jangka sederhana hingga panjang.

Logika Strategi

  1. Mengira maksimum tertinggi dan minimum terendah dalam tempoh tertentu (contohnya 20 hari) untuk mendapatkan jalur atas dan bawah.

  2. Garis tengah adalah purata jalur atas dan bawah.

  3. Apabila harga ditutup di atas band atas, menentukan aliran menaik telah bermula, pergi panjang untuk memasuki.

  4. Apabila harga pecah di bawah garis tengah, ambil keuntungan untuk keluar.

  5. Boleh merujuk jangka masa backtest untuk menjana isyarat dagangan sebenar.

  6. Secara pilihan, memecahkan jalur bawah juga boleh bertindak sebagai isyarat pendek.

Strategi ini menentukan permulaan trend dengan penembusan saluran, menggunakan garis tengah sebagai keluar keuntungan, menangkap trend jangka menengah hingga panjang. Parameter saluran boleh diselaraskan untuk sesuai dengan pasaran.

Analisis Kelebihan

  1. Saluran Donchian adalah mudah untuk mengira dan melaksanakan.

  2. Penembusan saluran harga menandakan perubahan trend.

  3. Midline sebagai tahap mengambil keuntungan adalah ditetapkan dengan munasabah.

  4. Peraturan isyarat yang jelas, mudah dilaksanakan.

  5. Boleh menyesuaikan parameter saluran dengan fleksibel untuk produk dan jangka masa yang berbeza.

  6. Boleh menilai prestasi perdagangan jangka panjang atau jangka pendek.

  7. Ruang pengembangan yang besar, boleh memperkenalkan penunjuk teknikal yang lain.

Analisis Risiko

  1. Penembusan saluran mungkin terlambat, berisiko kehilangan peluang awal.

  2. Tidak mempertimbangkan perbezaan sebelum pecah, boleh menghasilkan isyarat palsu.

  3. Stop loss pertengahan yang tetap sensitif kepada turun naik pasaran.

  4. Tempoh backtest yang tidak betul berisiko terlalu sesuai.

  5. Kekurangan stop loss, perlu berhati-hati terhadap kerugian yang diperbesar.

Arahan pengoptimuman

  1. Uji dan optimumkan parameter tempoh saluran.

  2. Mengkaji jenis MA lain sebagai garis stop loss.

  3. Tambah penapis seperti penunjuk jumlah.

  4. Tambah mekanisme stop loss bergerak atau belakang.

  5. Memperkenalkan pembelajaran mesin untuk meramalkan harga.

  6. Mengoptimumkan pengurusan wang, menetapkan nisbah keuntungan dan sebagainya

  7. Pertimbangkan untuk menggabungkan operasi jangka panjang / jangka pendek atau pelbagai produk.

Ringkasan

Strategi ini menggunakan Saluran Donchian untuk menentukan hala tuju trend, penembusan perdagangan, pendekatan trend berikut jangka menengah hingga panjang. Mengoptimumkan parameter saluran dan menambahkan penunjuk teknikal lain boleh membentuk sistem penembusan yang lebih kukuh. Logik yang jelas dan ringkas membolehkan pengembangan, menjadikannya modul strategi kuantum asas dengan kegunaan praktikal yang besar.


/*backtest
start: 2023-09-11 00:00:00
end: 2023-09-15 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//future strategy
//strategy(title = "stub", default_qty_type = strategy.fixed, default_qty_value = 1,  overlay = true, commission_type=strategy.commission.cash_per_contract,commission_value=2)
//stock strategy
strategy(title = "dc", default_qty_type = strategy.percent_of_equity, default_qty_value = 100,  overlay = true, commission_type=strategy.commission.cash_per_contract,commission_value=.005)
//forex strategy
//strategy(title = "stub", default_qty_type = strategy.percent_of_equity, default_qty_value = 100,  overlay = true)
//crypto strategy
//strategy(title = "stub", default_qty_type = strategy.percent_of_equity, default_qty_value = 100,  overlay = true, commission_type=strategy.commission.percent,commission_value=.25,default_qty_value=10000)


testStartYear = input(2000, "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, "Backtest Start Month")
testEndDay = input(1, "Backtest Start Day")
testPeriodEnd = timestamp(testStartYear,testStartMonth,testStartDay,0,0)


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

dcPeriod = 20

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=yellow, style=line, linewidth=1, title="Mid-Line Average")

strategy.entry("simpleBuy", strategy.long, when=close >= dcUpper)
strategy.close("simpleBuy",when=close < dcAverage)
    
//strategy.entry("simpleSell", strategy.short,when=close <= dcLower)
//strategy.close("simpleSell",when=close > dcAverage)
    



Lebih lanjut