Strategi ini dikembangkan berdasarkan indikator Donchian Channel standar. Strategi ini menunggu dua puncak tertinggi (atau terendah rendah) berturut-turut untuk konfirmasi secara default sebelum mengeluarkan sinyal perdagangan, sehingga menghindari disiksa oleh pembuat pasar
Strategi ini juga menyediakan opsi untuk menonaktifkan mekanisme konfirmasi ganda, sehingga dapat mengeluarkan sinyal perdagangan segera setelah melihat puncak atau terendah baru.
Bagi orang-orang yang tidak suka short, ada juga pilihan untuk mengecualikan posisi short.
Strategi ini didasarkan pada band atas dan bawah dari indikator Saluran Donchian. Band atas adalah tertinggi tertinggi selama n bar terakhir, sementara band bawah adalah terendah terendah selama n bar terakhir.
Band tengah adalah rata-rata dari band atas dan bawah, dan dapat digunakan untuk mengukur arah tren.
Ketika harga melanggar band atas, strategi akan panjang jika tidak ada posisi panjang yang ada. Ketika harga melanggar band bawah, strategi akan pendek jika tidak ada posisi pendek yang ada.
Untuk menyaring breakout palsu, opsi
Keuntungan dari strategi ini meliputi:
Indikator Saluran Donchian sederhana dan mudah dipahami.
Mekanisme konfirmasi ganda secara efektif menyaring kebocoran palsu dan menghindari terperangkap.
Periode pencarian kembali saluran dapat disesuaikan untuk beradaptasi dengan lingkungan pasar yang berbeda.
Opsi short selling memenuhi kebutuhan dari investor yang berbeda.
Kode ini bersih dan mudah dimengerti untuk pengembangan lebih lanjut.
Ada juga beberapa risiko dengan strategi ini:
Konfirmasi ganda dapat menyebabkan beberapa peluang perdagangan hilang.
Pengaturan periode saluran yang tidak tepat dapat mengakibatkan perdagangan yang terlalu sering atau jarang terjadi.
Periode penyimpanan yang panjang mungkin tidak dapat mengendalikan risiko secara efektif.
Risiko tambahan dari penjualan pendek harus diperhatikan.
Backtest overfitting perlu hati-hati tentang.
Solusi yang sesuai:
Menonaktifkan konfirmasi ganda atau mempersingkat interval konfirmasi.
Optimalkan parameter dan pilih periode saluran yang tepat.
Tetapkan stop loss/profit untuk membatasi kerugian per perdagangan secara wajar.
Menonaktifkan penjualan pendek, pergi panjang saja.
Mengevaluasi strategi yang kuat di berbagai lingkungan pasar.
Peluang peningkatan meliputi:
Sesuaikan ukuran posisi secara dinamis berdasarkan volatilitas.
Menyaring kebocoran palsu berdasarkan metrik intensitas pecah.
Masukkan mekanisme trailing stop untuk mengikuti tren.
Gabungkan indikator lain untuk menentukan arah tren dan hindari kehilangan titik balik utama.
Otomatis mengoptimalkan parameter melalui pembelajaran mesin.
Peningkatan ini dapat lebih meningkatkan stabilitas dan profitabilitas strategi.
Ini adalah tren sederhana namun efektif mengikuti strategi berdasarkan mekanisme konfirmasi ganda dari Saluran Donchian. Dengan penyesuaian parameter dan perluasan fitur, strategi dapat disesuaikan dengan berbagai lingkungan pasar dan memiliki utilitas praktis yang besar.
/*backtest start: 2022-12-15 00:00:00 end: 2023-12-21 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy(title="Donchian Channels", shorttitle="DC", overlay=true, initial_capital=10000, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, calc_on_every_tick=true) length = input(20, minval=1) lower = lowest(length) upper = highest(length) basis = avg(upper, lower) bool inShortPos = false bool inLongPos = false bool wait4confirmation = input(true, title="Wait for double confirmation?") bool doShort = input(true, title="Include short positions") plot(basis, "Basis", color=#FF6D00) u = plot(upper, "Upper", color=#2962FF) l = plot(lower, "Lower", color=#2962FF) fill(u, l, color=color.rgb(33, 150, 243, 95), title="Background") //if(inShortPos == false and inLongPos == false) if(not inLongPos and upper > upper[1]) if(wait4confirmation) if(not inLongPos and upper > upper[1] and upper[1] > upper[2]) strategy.close("Short", true) strategy.entry("Buy", true) else strategy.close("Short", true) strategy.entry("Buy", true) else if(not inShortPos and lower < lower[1]) if(wait4confirmation) if(not inShortPos and lower < lower[1] and lower[1] < lower[2]) strategy.close("Buy", true) if(doShort) strategy.entry("Short", true) else strategy.close("Buy", true) if(doShort) strategy.entry("Short", true)