Sumber daya yang dimuat... Pemuatan...

Dinamis Donchian Channel dan sederhana Moving Average Kombinasi Strategi Kuantitatif

Penulis:ChaoZhang, Tanggal: 2024-06-17 17:29:48
Tag:SMA

img

Gambaran umum

Strategi ini menggabungkan dua indikator teknis: Saluran Donchian dan Rata-rata Bergerak Sederhana (SMA). Ini membuka posisi panjang ketika harga melanggar band bawah Saluran Donchian dan ditutup di atas SMA. Sebaliknya, membuka posisi pendek ketika harga melanggar band atas Saluran Donchian dan ditutup di bawah SMA. Posisi panjang ditutup ketika harga mencapai band atas Saluran Donchian, sementara posisi pendek ditutup ketika harga mencapai band bawah. Strategi ini cocok untuk pasar dengan tren yang kuat.

Prinsip Strategi

  1. Hitung band atas dan bawah Saluran Donchian. Band atas adalah tertinggi tertinggi selama n periode terakhir, dan band bawah adalah terendah terendah selama n periode terakhir.
  2. Menghitung Rata-rata Gerak Sederhana SMA adalah rata-rata aritmatika harga penutupan selama m periode terakhir.
  3. Long entry: Buka posisi panjang ketika harga berada di bawah band bawah Saluran Donchian dan harga penutupan berada di atas SMA.
  4. Short entry: Buka posisi short ketika harga berada di atas band atas Saluran Donchian dan harga penutupan berada di bawah SMA.
  5. Keluar panjang: Tutup posisi panjang ketika harga mencapai band atas Saluran Donchian.
  6. Short exit: Tutup posisi short ketika harga mencapai band bawah Saluran Donchian.

Keuntungan Strategi

  1. Menggabungkan dua elemen pasar: tren dan volatilitas. SMA menangkap tren, sementara Saluran Donchian menangkap volatilitas, memungkinkan strategi untuk memanfaatkan peluang mundur di pasar tren.
  2. Kondisi pengambilan keuntungan yang jelas membantu mengunci keuntungan secara tepat waktu. Posisi panjang dan pendek ditutup ketika harga mencapai band atas dan bawah Saluran Donchian, masing-masing, memungkinkan strategi untuk keluar dari perdagangan yang menguntungkan sebelum tren berbalik.
  3. Strategi hanya memiliki tiga parameter: periode saluran Donchian, offset, dan periode SMA, yang menyederhanakan optimasi.

Risiko Strategi

  1. Strategi ini memiliki frekuensi tinggi masuk dan keluar posisi, yang dapat mengikis pengembalian di pasar dengan biaya perdagangan yang tinggi.
  2. Performa yang buruk di pasar rangebound. Strategi dapat mengalami lebih banyak kerugian ketika tren tidak jelas. Indikator volatilitas dapat digunakan untuk mengidentifikasi pasar rangebound dan menangguhkan strategi.
  3. Stabilitas parameter yang tidak cukup. Parameter optimal dapat bervariasi secara signifikan di berbagai instrumen dan jangka waktu, menunjukkan stabilitas parameter yang buruk. Kinerja langsung mungkin tidak sesuai dengan backtest. Pengujian luar sampel dan analisis sensitivitas yang ekstensif diperlukan untuk mengkonfirmasi ketahanan parameter.

Arah Optimasi Strategi

  1. Tambahkan kondisi masuk opsional dikombinasikan dengan indikator lain. Misalnya, mengharuskan ADX dari DMI berada di atas ambang batas tertentu untuk masuk, atau hanya masuk panjang ketika RSI meninggalkan zona oversold. Ini dapat meningkatkan tingkat kemenangan entri.
  2. Gunakan garis profit-taking dinamis alih-alih garis Donchian Channel tetap untuk mencapai fungsi profit-trailing.
  3. Sesuaikan secara dinamis periode Saluran Donchian berdasarkan tingkat volatilitas. Singkatkan periode Saluran Donchian dalam kondisi pasar dengan volatilitas tinggi dan perpanjang periode dalam kondisi volatilitas rendah. Ini membantu beradaptasi dengan pasar yang berbeda.

Ringkasan

Strategi Kombinasi Saluran Donchian Dinamis dan Rata-rata Gerak Sederhana adalah kerangka kerja strategi perdagangan kuantitatif yang sederhana dan mudah digunakan. Strategi ini membangun logika masuk dan keluar dari perspektif mengikuti tren dan pecahnya volatilitas, membuatnya cocok untuk instrumen dengan tren yang kuat. Namun, strategi ini berkinerja buruk di pasar yang sering berkisar, dan ketahanan parameternya sedang. Kelayakan dan ketahanan strategi dapat ditingkatkan dengan memperkenalkan kondisi masuk tambahan, pengambilan keuntungan dinamis, dan mekanisme penyesuaian parameter sendiri. Secara keseluruhan, strategi ini dapat berfungsi sebagai strategi kerangka kerja dasar yang akan dimodifikasi dan ditingkatkan untuk menciptakan strategi kuantitatif yang lebih maju.


/*backtest
start: 2024-05-01 00:00:00
end: 2024-05-31 23:59:59
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("FBK Donchian Channel Strategy", overlay=true)

// Inputs
donchian_period = input.int(20, title="Donchian Channel Period")
donchian_offset = input.int(1, title="Donchian Channel Offset")
sma_period = input.int(200, title="SMA Period")
start_date = input(timestamp("2023-01-01 00:00 +0000"), title="Start Date")
end_date = input(timestamp("2023-12-31 23:59 +0000"), title="End Date")
trade_type = input.string("Both", title="Trade Type", options=["Buy Only", "Sell Only", "Both"])

// Calculate indicators
donchian_upper = ta.highest(high, donchian_period)[donchian_offset]
donchian_lower = ta.lowest(low, donchian_period)[donchian_offset]
sma = ta.sma(close, sma_period)

// Plot indicators
plot(donchian_upper, color=color.red, title="Donchian Upper")
plot(donchian_lower, color=color.green, title="Donchian Lower")
plot(sma, color=color.blue, title="SMA")

// Helper function to check if within testing period
is_in_testing_period() => true

// Entry conditions
long_condition = low <= donchian_lower and close > sma
short_condition = high >= donchian_upper and close < sma

// Exit conditions
exit_long_condition = high >= donchian_upper
exit_short_condition = low <= donchian_lower

// Open long position
if (is_in_testing_period() and (trade_type == "Buy Only" or trade_type == "Both") and long_condition)
    strategy.entry("Long", strategy.long)

// Close long position
if (is_in_testing_period() and exit_long_condition)
    strategy.close("Long")

// Open short position
if (is_in_testing_period() and (trade_type == "Sell Only" or trade_type == "Both") and short_condition)
    strategy.entry("Short", strategy.short)

// Close short position
if (is_in_testing_period() and exit_short_condition)
    strategy.close("Short")

// Close all positions at the end of the testing period
if not is_in_testing_period()
    strategy.close_all()


Berkaitan

Lebih banyak