Strategi Double Donchian Channel Breakout

Penulis:ChaoZhang, Tanggal: 2024-02-04 09:42:14
Tag:

img

Gambaran umum

Strategi Double Donchian Channel Breakout adalah strategi perdagangan kuantitatif yang didasarkan pada saluran Donchian. Strategi ini menggunakan kombinasi saluran Donchian cepat dan lambat untuk mencapai perdagangan breakout berisiko rendah dengan pengembalian tinggi.

Logika Strategi

Strategi ini terutama memanfaatkan dua saluran Donchian, termasuk saluran yang lebih lambat dengan periode yang lebih lama dan saluran yang lebih cepat dengan periode yang lebih pendek.

Saluran Donchian yang lambat memiliki periode yang lebih lama yang dapat secara efektif menyaring kebisingan pasar, membuat sinyal pecahnya lebih dapat diandalkan.

Saluran Donchian yang cepat memiliki periode yang lebih pendek yang dapat dengan cepat merespons fluktuasi harga jangka pendek.

Selain itu, kondisi volatilitas ditetapkan sebagai filter untuk sinyal masuk. Strategi hanya akan memicu masuk ketika pergerakan harga melebihi ambang persentase yang telah ditentukan sebelumnya. Ini menghindari whipsaws yang sering terjadi selama konsolidasi yang terbatas pada kisaran.

Analisis Keuntungan

  • Mekanisme dua saluran menetapkan dua garis pertahanan dan secara efektif mengendalikan risiko
  • Kombinasi saluran cepat dan lambat menangkap tren secara efisien
  • Filter volatilitas mengurangi perdagangan yang tidak efektif
  • Pada saat yang sama melacak tren dan mencegah overfitting
  • Logika yang sederhana dan jelas, mudah dipahami dan dikuasai

Analisis Risiko

  • Pergeseran harga yang keras dapat menembus stop loss dan menyebabkan kerugian besar
  • Pengaturan parameter yang tidak tepat (misalnya periode saluran) dapat membahayakan efisiensi strategi
  • Biaya perdagangan juga mengikis keuntungan sampai batas tertentu
  • Risiko kesenjangan di sekitar peristiwa penting perlu diperhatikan

Risiko ini dapat dikurangi dengan optimalisasi parameter, penempatan stop loss yang wajar, kesadaran peristiwa dll.

Arahan Optimasi

  • Uji kombinasi yang berbeda dari periode saluran Donchian
  • Optimalkan parameter volatilitas untuk waktu masuk terbaik
  • Menambahkan indikator trend-checking untuk menghindari perdagangan kontra-trend
  • Pemilihan saham berdasarkan dasar
  • Sesuaikan mekanisme stop loss untuk membatasi kerugian

Kesimpulan

Strategi Double Donchian Channel Breakout secara keseluruhan merupakan strategi trend-following yang relatif stabil dan dapat diandalkan. Strategi ini menggabungkan kekuatan penangkapan tren dan pengendalian risiko, menjadikannya cocok sebagai modul dasar dalam berbagai strategi perdagangan saham.


/*backtest
start: 2024-01-04 00:00:00
end: 2024-02-03 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Scriptâ„¢ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © omererkan

//@version=5
strategy(title="Double Donchian Channel Breakout", overlay=true, initial_capital = 1000, commission_value = 0.05, default_qty_value = 100, default_qty_type = strategy.percent_of_equity)


slowLen = input.int(50, title="Slow Donchian")
fastLen = input.int(30, title="Fast Donchian")
volatility = input.int(3, title="Volatility (%)")
longProfitPerc = input.float(2, title="Long TP1 (%)", minval=0.0, step=0.1) * 0.01
shortProfitPerc = input.float(2, title="Short TP1 (%)", minval=0.0, step=0.1) * 0.01
TP1Yuzde =input.int(50, title = "TP1 Position Amount (%)")

ubSlow = ta.highest(close, slowLen)[1]
lbSlow = ta.lowest(close, slowLen)[1]

ubFast = ta.highest(close, fastLen)[1]
lbFast = ta.lowest(close, fastLen)[1]

plot(ubSlow, color=color.green, linewidth=2, title="Slow DoCh - Upperband")
plot(lbSlow, color=color.green, linewidth=2, title="Slow DoCh - Lowerband")
plot(ubFast, color=color.blue, linewidth=2, title="Fast DoCh - Upperband")
plot(lbFast, color=color.blue, linewidth=2, title="Fast DoCh - Lowerband")

fark = (ubSlow - lbSlow) / lbSlow * 100

longExitPrice  = strategy.position_avg_price * (1 + longProfitPerc)
shortExitPrice = strategy.position_avg_price * (1 - shortProfitPerc)

longCondition = ta.crossover(close, ubSlow) and fark > volatility
if (longCondition)
    strategy.entry("Long", strategy.long)

shortCondition = ta.crossunder(close, lbSlow) and fark > volatility
if (shortCondition)
    strategy.entry("Short", strategy.short)

if strategy.position_size > 0 and ta.crossunder(close, lbFast) 
    strategy.close("Long", "Close All")

if strategy.position_size < 0 and ta.crossover(close, ubFast)
    strategy.close("Short", "Close All")

// Take Profit
if strategy.position_size > 0
    strategy.exit("TP1", "Long", qty_percent = TP1Yuzde, limit = longExitPrice)

if strategy.position_size < 0
    strategy.exit("TP1", "Short", qty_percent = TP1Yuzde, limit = shortExitPrice)

Lebih banyak