Strategi Perdagangan Kuantitatif Penembusan Saluran Donchian

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

img

Ringkasan

Idea utama strategi ini adalah untuk membuat keputusan perdagangan berdasarkan penembusan harga Saluran Donchian. Ia tergolong dalam trend berikut jenis strategi kuantitatif. Ia boleh mengenal pasti saluran harga secara automatik. Apabila harga menembusi rel atas saluran, kedudukan panjang akan dibuka. Apabila harga jatuh kembali berhampiran rel bawah saluran atau titik stop loss, kedudukan akan ditutup. Strategi ini bertujuan untuk menangkap trend harga jangka menengah hingga panjang dan sesuai untuk perdagangan algoritma derivatif kewangan seperti niaga hadapan indeks.

Prinsip-prinsip

Strategi ini berdasarkan kepada penunjuk Saluran Donchian. Saluran Donchian adalah saluran yang diambil oleh harga tertinggi dan terendah dalam tempoh tertentu. Kaedah penghitungannya adalah:

Upper Rail = Harga tertinggi sepanjang n tempoh terakhir Lower Rail = Harga terendah dalam n tempoh terakhir

Apabila harga memecahkan rel atas, ia dianggap bahawa trend panjang telah bermula. Apabila harga memecahkan rel bawah, ia dianggap bahawa trend pendek telah bermula. Strategi ini hanya mempertimbangkan kes apabila rel atas terputus.

Logik perdagangan khusus adalah:

  1. Merangka rel atas Saluran Donchian menggunakan harga tertinggi selama n tempoh terakhir
  2. Apabila harga penutupan pecah melalui rel atas, pergi panjang
  3. Mengambil keuntungan dengan hentian penutupan apabila harga penutupan jatuh kembali berhampiran rel bawah atau ke titik hentian kerugian yang ditetapkan sebelumnya

Kelebihan

Kelebihan strategi ini termasuk:

  1. Idea strategi adalah jelas dan mudah difahami dan dilaksanakan
  2. Saluran Donchian adalah penunjuk matang dan boleh dipercayai untuk menilai arah trend
  3. Ia secara automatik mengenal pasti saluran tanpa gangguan manual
  4. Parameter yang boleh disesuaikan menjadikannya sangat mudah disesuaikan
  5. Ia mengandungi mekanisme stop loss untuk mengehadkan kerugian

Risiko

Terdapat juga beberapa risiko:

  1. Saluran Donchian mungkin mempunyai pelarian palsu, menyebabkan kerugian yang tidak perlu.
  2. Kedudukan stop loss yang tidak betul boleh meningkatkan kerugian
  3. Perhatikan risiko pembalikan apabila harga adalah berhampiran saluran rel
  4. Tetapan parameter yang tidak mencukupi boleh memberi kesan negatif kepada prestasi strategi

Penyelesaian:

  1. Tambah penapis dengan menggabungkan penunjuk lain untuk mengelakkan pecah palsu
  2. Mengoptimumkan kedudukan stop loss untuk keluar yang lancar
  3. Pertimbangkan untuk meningkatkan saiz kedudukan atau meluaskan julat keuntungan apabila harga berhampiran saluran rel
  4. Uji parameter yang berbeza untuk mencari nilai optimum

Arahan pengoptimuman

Strategi ini boleh dioptimumkan lagi dalam bidang berikut:

  1. Tambah penunjuk lain seperti MACD, KD untuk mengelakkan pecah palsu
  2. Mengoptimumkan mekanisme stop loss, contohnya memindahkan stop loss
  3. Mengoptimumkan kawalan kadar penyertaan, contohnya hanya berdagang apabila turun naik meningkat
  4. Pengoptimuman parameter untuk mencari kombinasi optimum

Ringkasan

Idea keseluruhan strategi ini jelas dan mudah difahami dan dilaksanakan. Ia menggunakan Saluran Donchian yang matang untuk mengenal pasti arah trend secara automatik. Konfigurasi juga sangat fleksibel untuk memenuhi keperluan yang berbeza. Dengan kerugian berhenti yang betul dan pengoptimuman parameter, hasil yang baik dapat dicapai. Kesimpulannya, strategi ini mempunyai kurva pembelajaran yang rendah namun kecekapan yang munasabah. Ia sesuai sebagai strategi perdagangan kuantitatif permulaan.


/*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 lanjut