Donchian Saluran Breakout Strategi Perdagangan Kuantitatif

Penulis:ChaoZhang, Tanggal: 2023-12-08 11:00:05
Tag:

img

Gambaran umum

Ide inti dari strategi ini adalah untuk membuat keputusan perdagangan berdasarkan price breakout dari Donchian Channels. Ini termasuk dalam tren berikut jenis strategi kuantitatif. Ini dapat secara otomatis mengidentifikasi saluran harga. Ketika harga menembus rel atas saluran, posisi panjang akan dibuka. Ketika harga jatuh kembali di dekat rel bawah saluran atau titik stop loss, posisi akan ditutup. Strategi ini bertujuan untuk menangkap tren harga jangka menengah hingga panjang dan cocok untuk perdagangan algoritmik derivatif keuangan seperti futures indeks.

Prinsip-prinsip

Strategi ini didasarkan pada indikator Saluran Donchian. Saluran Donchian adalah saluran yang ditarik oleh harga tertinggi dan terendah selama periode tertentu. Metode perhitungannya adalah:

Upper Rail = Harga tertinggi selama n periode terakhir Lower Rail = Harga terendah selama n periode terakhir

Ketika harga menembus rel atas, dianggap bahwa tren panjang telah dimulai. Ketika harga menembus rel bawah, dianggap bahwa tren pendek telah dimulai. Strategi ini hanya mempertimbangkan kasus ketika rel atas rusak.

Logika perdagangan khusus adalah:

  1. Membuat grafik rel atas Saluran Donchian menggunakan harga tertinggi selama n periode terakhir
  2. Ketika harga penutupan melanggar rel atas, pergi panjang
  3. Pengambilan keuntungan dengan trailing stop ketika harga penutupan jatuh kembali di dekat rel bawah atau ke titik stop loss yang telah ditetapkan sebelumnya

Keuntungan

Keuntungan dari strategi ini meliputi:

  1. Ide strategi jelas dan mudah dipahami dan diterapkan
  2. Saluran Donchian adalah indikator yang matang dan dapat diandalkan untuk menilai arah tren
  3. Ini secara otomatis mengidentifikasi saluran tanpa gangguan manual
  4. Parameter yang dapat disesuaikan membuatnya sangat mudah beradaptasi
  5. Ini berisi mekanisme stop loss untuk membatasi kerugian

Risiko

Ada juga beberapa risiko:

  1. Saluran Donchian bisa memiliki kebocoran palsu, menyebabkan kerugian yang tidak perlu
  2. Posisi stop loss yang tidak tepat dapat meningkatkan kerugian
  3. Perhatikan risiko pembalikan ketika harga berada di dekat rel saluran
  4. Pengaturan parameter yang tidak memadai dapat berdampak negatif pada kinerja strategi

Solusi:

  1. Tambahkan filter dengan memasukkan indikator lain untuk menghindari pecah palsu
  2. Optimalkan posisi stop loss untuk keluar yang mulus
  3. Pertimbangkan untuk meningkatkan ukuran posisi atau memperluas rentang keuntungan ketika harga berada di dekat rel saluran
  4. Uji parameter yang berbeda untuk menemukan nilai optimal

Arahan Optimasi

Strategi ini dapat dioptimalkan lebih lanjut di bidang berikut:

  1. Tambahkan indikator lain seperti MACD, KD untuk menghindari pecah palsu
  2. Mengoptimalkan mekanisme stop loss, misalnya memindahkan stop loss
  3. Mengoptimalkan kontrol tingkat partisipasi, misalnya hanya perdagangan ketika volatilitas meningkat
  4. Optimasi parameter untuk menemukan kombinasi optimal

Ringkasan

Ide keseluruhan strategi ini jelas dan mudah dipahami dan diimplementasikan. Ini memanfaatkan saluran Donchian yang matang untuk secara otomatis mengidentifikasi arah tren. Konfigurasi juga sangat fleksibel untuk memenuhi kebutuhan yang berbeda. Dengan stop loss dan optimasi parameter yang tepat, hasil yang baik dapat dicapai. Kesimpulannya, strategi ini memiliki kurva belajar yang rendah namun efisiensi yang wajar. Ini cocok sebagai strategi perdagangan kuantitatif pemula.


/*backtest
start: 2022-12-07 00:00:00
end: 2023-12-07 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Giovanni_Trombetta

// Strategy to capture price channel breakouts

//@version=4
strategy("ChannelsBreakout", max_bars_back=50, overlay=true)

instrument = input(1, title = "Select 1: Stock/Forex, 2: Future")
money = input(10000, title = "Money for each trade")
backtest_start = input(2000, "Insert first year to backtest")
period = input(50, title = "Period in bars of Donchian Channel")
monetary_stoploss = input(1000, title = "Monetary Stop Loss")

quantity = if instrument != 1 
    1
else
    int(money / close)
    
upBarrier = highest(high,period)
downBarrier = lowest(low,period)
up = highest(high,period / 4)
down = lowest(low,period / 4)

plot(upBarrier, color=color.green, linewidth=2)
plot(downBarrier, color=color.red, linewidth=2)
plot(up, color=color.lime, linewidth=1)
plot(down, color=color.orange, linewidth=2)

longCondition = crossover(close, upBarrier[1]) and year >= backtest_start

if (longCondition)
    strategy.entry("Long", strategy.long, quantity, when = strategy.position_size == 0)

closeCondition = crossunder(close, down[1]) or down < down[1]

if (closeCondition)
    strategy.close("Long", comment = "Trailing")
    
stop_level = strategy.position_avg_price - monetary_stoploss / strategy.position_size
strategy.exit("StopLoss", from_entry = "Long", stop = stop_level)
plot(stop_level, color=color.yellow, linewidth=2)

// l = label.new(bar_index, na,
//   text="PineScript Code", color= color.lime, textcolor = color.white,
//   style=label.style_labelup, yloc=yloc.belowbar, size=size.normal)
// label.delete(l[1])

Lebih banyak