Strategi ini berdasarkan sistem Perdagangan Penyu yang terkenal, menggunakan Saluran Donchian untuk mengenal pasti pecah dan ATR untuk menetapkan stop loss untuk mengikuti trend. Kelebihannya adalah keupayaan kawalan penarikan yang kuat dengan mengehadkan kerugian perdagangan tunggal dengan berkesan. Walau bagaimanapun, daya adaptasi di antara instrumen perdagangan yang berbeza lemah dan memerlukan penyesuaian parameter. Secara keseluruhan, sebagai versi pengenalan sistem Perdagangan Penyu, strategi ini boleh digunakan untuk mengesahkan keberkesanan peraturan Perdagangan Penyu dan juga berfungsi sebagai strategi perdagangan kuantitatif asas.
Strategi ini terutamanya berdasarkan dua penunjuk: Saluran Donchian dan ATR.
Saluran Donchian dibina dengan tertinggi tertinggi dan terendah terendah. Panjang saluran lalai adalah 20 hari, dicatatkan dengan tertinggi tertinggi 20 hari dan terendah terendah. Isyarat beli dihasilkan apabila harga pecah di atas band atas, dan isyarat jual apabila harga pecah di bawah band bawah.
ATR mengukur turun naik pasaran dan digunakan untuk menetapkan stop loss. Tempoh ATR lalai adalah 20 hari. Strategi ini menggunakan 2N ATR sebagai tahap stop loss.
Logik perdagangan khusus adalah:
Pergi panjang apabila harga pecah di atas band atas.
Tetapkan stop loss pada harga rendah pada permulaan minus 2N ATR.
Tutup kedudukan panjang apabila harga pecah di bawah band bawah.
Pergi pendek apabila harga pecah di bawah band bawah.
Tetapkan stop loss pada harga yang tinggi semasa masuk ditambah 2N ATR.
Tutup kedudukan pendek apabila harga memecahkan band atas.
Ringkasnya, strategi mengenal pasti arah trend dan isyarat kemasukan dengan Saluran Donchian, dan mengawal risiko dengan stop loss berasaskan ATR, untuk mengikuti trend.
Kelebihan utama strategi ini ialah:
Keupayaan kawalan pengeluaran yang kuat. ATR stop loss dapat dengan berkesan mengehadkan kerugian perdagangan tunggal.
Keupayaan untuk mengikuti trend. saluran Donchian boleh dengan berkesan mengenal pasti pecah dan perubahan trend.
Berlaku untuk instrumen turun naik tinggi. ATR mengambil kira turun naik pasaran dalam tetapan stop loss.
Logik yang mudah dan jelas, mudah difahami dan dilaksanakan.
Fleksibiliti untuk mengoptimumkan dengan bahasa Python.
Beberapa risiko strategi ini perlu diperhatikan:
Parameter saluran memerlukan pengoptimuman untuk instrumen dan jangka masa yang berbeza.
Risiko stop loss berturut-turut. Pelbagai pemicu stop loss boleh berlaku dalam keadaan pasaran yang tidak menentu.
Parameter ATR memerlukan pengujian semula. ATR secara langsung mempengaruhi stop loss dan harus diselaraskan berdasarkan turun naik.
Frekuensi perdagangan yang berpotensi terlalu tinggi. terlalu banyak isyarat whipsaw mungkin berlaku di bawah pasaran yang terhad.
Potensi keuntungan yang terhad. Strategi ini memberi tumpuan kepada stop loss dan tidak dapat menangkap keuntungan trend sepenuhnya.
Jurang harga boleh langsung mencetuskan stop loss.
Strategi ini boleh ditingkatkan dalam aspek berikut:
Mengoptimumkan parameter saluran untuk instrumen yang berbeza.
Tambah penapis untuk mengelakkan terlalu banyak isyarat di bawah pasaran yang terikat julat.
Mengoptimumkan parameter tempoh ATR dan kesan ujian pada stop loss.
Tambah entri piramid untuk meningkatkan saiz kedudukan untuk memaksimumkan keuntungan trend.
Masukkan penunjuk lain seperti MACD, KD untuk mengelakkan isyarat palsu.
Sesuaikan stop loss berdasarkan kos pelepasan dan komisen.
Uji kesesuaian di pelbagai instrumen dan optimumkan parameter.
Sebagai versi pengenalan sistem Perdagangan Penyu, strategi ini mempunyai logik yang mudah dan jelas, keupayaan kawalan pengeluaran yang kuat, dan dapat mengesahkan prinsip-prinsip Perdagangan Penyu secara berkesan. Tetapi penyesuaian di seluruh instrumen lemah dan parameter perlu disesuaikan berdasarkan instrumen tertentu. Dengan pengoptimuman seperti penyesuaian parameter, menambah penapis, ini boleh berfungsi sebagai trend asas mengikuti strategi untuk perdagangan kuantitatif.
/*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)