Nama strategi ini adalah
Indikator utama untuk menilai strategi ini adalah Saluran Donchian. Saluran Donchian terdiri daripada julat turun naik harga tertinggi dan terendah dalam tempoh N hari. Jika harga memecahkan rel atas saluran, ia akan menjadi isyarat panjang; jika ia memecahkan rel bawah saluran, ia akan menjadi isyarat pendek. Strategi ini menggunakan Saluran Donchian cepat (10 hari) untuk mengeluarkan isyarat dan Saluran Donchian perlahan (20 hari) untuk menghentikan kerugian.
Di samping itu, strategi ini juga memperkenalkan dua garis purata bergerak (garis 50 hari dan garis 125 hari) untuk menapis isyarat. Hanya apabila garis purata bergerak pantas melintasi di atas garis purata bergerak perlahan, kedudukan panjang akan didagangkan; Hanya apabila garis purata bergerak pantas melintasi di bawah garis purata bergerak perlahan, kedudukan pendek akan didagangkan. Ini dapat menapis beberapa isyarat palsu dengan berkesan.
Syarat pembukaan strategi ini ialah: harga menembusi rel atas Saluran Donchian, dan garis purata bergerak pantas melintasi di atas garis purata bergerak perlahan. Apabila kedua-dua syarat dipenuhi, kedudukan panjang akan dibuka; harga menembusi rel bawah Saluran Donchian, dan garis purata bergerak pantas melintasi di bawah garis purata bergerak perlahan, kemudian membuka kedudukan pendek. Syarat penutupan adalah apabila harga menyentuh sempadan Saluran Donchian yang berlawanan.
Kelebihan strategi ini ialah:
Menggunakan Saluran Donchian untuk menentukan arah trend, kesan backtest lebih baik untuk berjaya menangkap trend besar;
Menambah penapis purata bergerak boleh menapis beberapa isyarat palsu dan mengelakkan kerugian;
Gabungan saluran Donchain yang cepat dan perlahan dan purata bergerak dapat mengimbangi kekerapan perdagangan dan ketepatan stop loss;
Risiko dikawal dengan baik dengan mekanisme stop loss untuk mengawal kerugian tunggal.
Beberapa risiko strategi ini:
Dalam pasaran kejutan, mungkin terdapat lebih banyak pesanan kecil yang kehilangan;
Apabila pembalikan trend berlaku, penapisan purata bergerak akan meningkatkan kos pembukaan;
Dalam pasaran yang curam, stop loss boleh dikejar.
Tindakan balas dan penyelesaian:
Sesuai menyesuaikan parameter, memendekkan kitaran Donchian, mengurangkan kitaran purata bergerak untuk menyesuaikan diri dengan pasaran yang berbeza.
Meningkatkan penilaian terhadap trend utama untuk mengelakkan membina kedudukan terhadap trend utama.
Strategi ini boleh dioptimumkan dalam aspek berikut:
Meningkatkan kekuatan terobosan. contohnya, memperkenalkan jumlah, buka kedudukan hanya apabila jumlah membesar;
Meningkatkan penilaian kawasan panas. Gabungkan dengan sokongan, tekanan, pita, corak dan sebagainya untuk mengelakkan kawasan panas apabila membuka kedudukan;
Mengoptimumkan strategi stop loss. Memperkenalkan pemantauan stop loss, volatility stop loss, time stop loss dan lain-lain untuk membuat stop loss lebih pintar.
Secara umum, strategi ini adalah strategi trend yang sangat tipikal dan mudah. Ia merealisasikan hasil backtest yang baik dengan menentukan arah melalui Saluran Donchian dan menapis isyarat melalui purata bergerak. Strategi ini sesuai untuk pelabur yang mengejar trend besar, dengan kawalan risiko yang baik dan mudah dilaksanakan dalam perdagangan sebenar. Dengan mengoptimumkan beberapa parameter dan peraturan, kadar kemenangan dan keuntungan dapat ditingkatkan lagi.
/*backtest start: 2023-11-24 00:00:00 end: 2023-12-24 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 // Coded by Vladkos strategy("Donchian strategy with filter", overlay=true,default_qty_type = strategy.percent_of_equity, default_qty_value = 4,pyramiding=5) fromyear = input(2017, defval = 2018, minval = 1800, maxval = 2100, title = "From Year") toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year") frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month") tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month") fromday = input(21, defval = 01, minval = 01, maxval = 31, title = "From day") today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day") term = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)) ATR=input(20,minval=1) needlong = input(true, defval = true, title = "Long") needshort = input(true, defval = true, title = "Short") needstoploss= input(true,defval=true,title="Stop LOSS") ///////////ATR tra=atr(ATR) ////////////Переменные Donchian_slow=input(20,minval=1) Donchian_fast=input(10,minval=1) Slow_EMA=input(125,minval=1) Fast_EMA=input(50,minval=1) /////////// Медленный Дончан lower = lowest(Donchian_slow) upper = highest(Donchian_slow) basis = avg(upper, lower) plot(lower,color=blue) plot(upper,color=blue) /////////// быстрый Дончан lowerF = lowest(Donchian_fast) upperF = highest(Donchian_fast) basisF = avg(upperF, lowerF) plot(lowerF,color=red) plot(upperF,color=red) ////////// Скользящие средние ema_S=ema(close,Slow_EMA) ema_F=ema(close,Fast_EMA) plot(ema_S,color=red) plot(ema_F,color=green) ///////// Условия сделок long_condition= close>=upper[1] and ema_F>ema_S long_exit= close<lowerF[1] short_condition=close<=lower[1] and ema_F<ema_S short_exit=close>upperF[1] ////////// Отправка ордеров strategy.entry("Long",strategy.long,when=long_condition and term and needlong==true) strategy.exit("stop loss","Long",stop=strategy.position_avg_price-(tra*2),when= (needstoploss==true)) strategy.close("Long",when=long_exit and (time < timestamp(toyear, tomonth, today, 23, 59))) strategy.entry("Short",strategy.short,when=short_condition and term and (needshort==true)) strategy.exit("stoploss","Short",stop=strategy.position_avg_price+(tra*2),when= (needstoploss==true)) strategy.close("Short",when=short_exit and (time < timestamp(toyear, tomonth, today, 23, 59))) if time > timestamp(toyear, tomonth, today, 23, 59) strategy.close_all()