Strategi Penembusan Saluran Donchian

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

Gambaran umum

Strategi ini menggunakan indikator Saluran Donchian untuk melakukan perdagangan breakout dari band atas dan bawah, yang memungkinkan tren mengikuti operasi di seluruh saham / berjangka / crypto / forex dll, yang termasuk dalam strategi trend breakout jangka menengah hingga panjang.

Logika Strategi

  1. Hitung tertinggi tertinggi dan terendah terendah selama periode tertentu (misalnya 20 hari) untuk mendapatkan band atas dan bawah.

  2. Garis tengah adalah rata-rata dari band atas dan bawah.

  3. Ketika harga ditutup di atas band atas, menentukan uptrend telah dimulai, pergi panjang untuk masuk.

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

  5. Dapat referensi backtest timeframe untuk menghasilkan sinyal perdagangan yang sebenarnya.

  6. Secara opsional, mematahkan pita bawah juga dapat bertindak sebagai sinyal pendek.

Strategi ini menentukan tren mulai dengan channel breakout, menggunakan midline sebagai profit taking exit, menangkap tren jangka menengah hingga panjang.

Analisis Keuntungan

  1. Saluran Donchian mudah dihitung dan diimplementasikan.

  2. Penembusan saluran harga menandakan perubahan tren.

  3. Midline sebagai tingkat mengambil keuntungan adalah cukup diatur.

  4. Aturan sinyal yang jelas, mudah dilaksanakan.

  5. Dapat menyesuaikan parameter saluran secara fleksibel untuk produk dan kerangka waktu yang berbeda.

  6. Dapat mengevaluasi kinerja perdagangan jangka panjang atau jangka pendek.

  7. Ruang ekspansi besar, dapat memperkenalkan indikator teknis lainnya.

Analisis Risiko

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

  2. Tidak mempertimbangkan divergensi sebelum breakout, mungkin menghasilkan sinyal palsu.

  3. Stop loss midline tetap sensitif terhadap volatilitas pasar.

  4. Periode backtest yang tidak tepat berisiko over-fit.

  5. Kurangnya stop loss, perlu berhati-hati untuk kerugian yang diperbesar.

Arahan Optimasi

  1. Uji dan optimalkan parameter periode saluran.

  2. Evaluasi jenis MA lainnya sebagai garis stop loss.

  3. Tambahkan filter seperti indikator volume.

  4. Tambahkan mekanisme stop loss bergerak atau tertinggal.

  5. Memperkenalkan pembelajaran mesin untuk memprediksi harga.

  6. Mengoptimalkan manajemen uang, menetapkan rasio keuntungan dll.

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

Ringkasan

Strategi ini menggunakan saluran Donchian untuk menentukan arah tren, perdagangan breakout, pendekatan tren berikut jangka menengah ke panjang yang khas. mengoptimalkan parameter saluran dan menambahkan indikator teknis lainnya dapat membentuk sistem breakout yang lebih kuat. logika yang jelas dan ringkas memungkinkan ekspansi, menjadikannya modul strategi kuantum mendasar dengan kegunaan praktis 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 banyak