Strategi Breakout Berdasarkan Perdagangan Penyu

Penulis:ChaoZhang, Tanggal: 2023-10-17 17:22:34
Tag:

img

Gambaran umum

Strategi ini didasarkan pada sistem Turtle Trading yang terkenal, menggunakan Saluran Donchian untuk mengidentifikasi breakout dan ATR untuk mengatur stop loss untuk mengikuti tren. Keuntungannya adalah kemampuan pengendalian penarikan yang kuat dengan secara efektif membatasi kerugian perdagangan tunggal. Namun, kemampuan beradaptasi di berbagai instrumen perdagangan lemah dan membutuhkan penyesuaian parameter. Secara keseluruhan, sebagai versi pengantar dari sistem Turtle Trading, strategi ini dapat digunakan untuk memvalidasi efektivitas aturan Turtle Trading dan juga berfungsi sebagai strategi perdagangan kuantitatif dasar.

Prinsip-prinsip

Strategi ini terutama didasarkan pada dua indikator: Saluran Donchian dan ATR.

Saluran Donchian dibangun oleh tertinggi tertinggi dan terendah terendah. Panjang saluran default adalah 20 hari, digambarkan dengan 20 hari tertinggi tertinggi dan terendah terendah.

ATR mengukur volatilitas pasar dan digunakan untuk pengaturan stop loss. periode ATR default adalah 20 hari. strategi menggunakan 2N ATR sebagai tingkat stop loss.

Logika perdagangan khusus adalah:

  1. Pergi panjang ketika harga keluar di atas band atas.

  2. Atur stop loss pada harga rendah pada entry minus 2N ATR.

  3. Tutup posisi panjang ketika harga menembus band bawah.

  4. Pergi short saat harga keluar di bawah band bawah.

  5. Atur stop loss pada harga tinggi pada saat masuk ditambah 2N ATR.

  6. Tutup posisi short ketika harga menembus band atas.

Singkatnya, strategi mengidentifikasi arah tren dan sinyal masuk dengan Donchian Channel, dan mengontrol risiko dengan stop loss berbasis ATR, untuk mengikuti tren.

Analisis Keuntungan

Keuntungan utama dari strategi ini adalah:

  1. Kemampuan kontrol penarikan yang kuat. Stop loss ATR dapat secara efektif membatasi kerugian perdagangan tunggal.

  2. Kemampuan untuk mengikuti tren. Donchian Channel dapat secara efektif mengidentifikasi gangguan dan perubahan tren.

  3. Aplikasi untuk instrumen volatilitas tinggi. ATR mempertimbangkan volatilitas pasar dalam pengaturan stop loss.

  4. Logika yang sederhana dan jelas, mudah dipahami dan diterapkan.

  5. Fleksibilitas untuk mengoptimalkan dengan bahasa Python.

Analisis Risiko

Beberapa risiko dari strategi ini untuk dicatat:

  1. Parameter saluran perlu dioptimalkan untuk instrumen dan kerangka waktu yang berbeda.

  2. Risiko stop loss berturut-turut. Beberapa pemicu stop loss dapat terjadi dalam kondisi pasar yang tidak stabil.

  3. Parameter ATR membutuhkan backtesting. ATR secara langsung mempengaruhi stop loss dan harus disesuaikan berdasarkan volatilitas.

  4. Frekuensi perdagangan yang berpotensi terlalu tinggi. Terlalu banyak sinyal whipsaw dapat terjadi di bawah pasar yang terikat rentang.

  5. Potensi keuntungan terbatas. Strategi berfokus pada stop loss dan tidak dapat sepenuhnya menangkap keuntungan tren.

  6. Stop loss yang tidak cukup selama pergerakan yang tidak stabil.

Arahan Optimasi

Strategi ini dapat ditingkatkan dalam hal berikut:

  1. Mengoptimalkan parameter saluran untuk instrumen yang berbeda.

  2. Tambahkan filter untuk menghindari terlalu banyak sinyal di bawah rentang pasar.

  3. Optimalkan parameter periode ATR dan dampak uji pada stop loss.

  4. Tambahkan entri piramida untuk meningkatkan ukuran posisi untuk memaksimalkan keuntungan tren.

  5. Masukkan indikator lain seperti MACD, KD untuk menghindari sinyal palsu.

  6. Sesuaikan stop loss berdasarkan biaya slippage dan komisi.

  7. Uji kemampuan beradaptasi di berbagai instrumen dan optimalkan parameter.

Ringkasan

Sebagai versi pendahuluan dari sistem Turtle Trading, strategi ini memiliki logika yang sederhana dan jelas, kemampuan kontrol penarikan yang kuat, dan dapat secara efektif memvalidasi prinsip-prinsip Turtle Trading.


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

//@version=3
//Based on Turtle traders strategy: buy/sell on Donchian breakouts and stop loss on ATR 2x
// initial version considerations :
//// 1. Does not consider filter for avoiding new entries after winning trades (filtering rule from Turtle Strategy on 20 day breakout strategy) 
//// 2. Does not consider pyramiding (aditional entries after 1N price movements)

strategy("Turtle trading strategy (Donchian/ATR)", overlay=true)

enter_period = input(20, minval=1, title="Enter Channel")
exit_period = input(10, minval=1, title="Exit Channel")
offset_bar = input(0,minval=0, title ="Offset Bars")
direction = input("Long",options=["Long","Short"],title="Direction")
max_length = max(enter_period,exit_period)
atrmult = input(2,title="ATR multiplier (Stop Loss)")
atrperiod = input(20,title="ATR Period")

closed_pos = false
dir_long = direction == "Long"? true : false
atr = atr(atrperiod)
upper = dir_long ? highest(enter_period): highest(exit_period)
lower = dir_long ? lowest(exit_period): lowest(enter_period)
atrupper = close + atr
atrlower = close - atr
plotted_atr = dir_long ? atrlower : atrupper

//basis = avg(upper, lower)

l = plot(lower, style=line, linewidth=3, color=lime, offset=1)
u = plot(upper, style=line, linewidth=3, color=lime, offset=1)
a = plot(plotted_atr, style=line,linewidth=2,color=red,offset=1)
//plot(basis, color=yellow, style=line, linewidth=1, title="Mid-Line Average")
//break upper Donchian (with 1 candle offset) (buy signal)
break_up = (close >= upper[1])
//break lower Donchian (with 1 candle offset) (sell signal)
break_down = (close <= lower[1])
stop_loss = dir_long ? (close<=plotted_atr[1]) : (close>=plotted_atr[1])

if break_up and dir_long
    strategy.entry("buy", strategy.long, 1)
    closed_pos :=false
if (break_down or stop_loss) and dir_long
    strategy.close("buy")
    
if break_down and not dir_long
    strategy.entry("sell", strategy.short, 1)
    closed_pos :=false
if (break_up or stop_loss) and not dir_long
    strategy.close("sell")
    closed_pos :=true
    
losing_trade = strategy.equity[0]<strategy.equity[1]
//plotshape(losing_trade,text="Losing!")    
plotshape(stop_loss,style=dir_long?shape.labeldown:shape.labelup,text="Stop!")
//plot(strategy.equity)


    



Lebih banyak