Strategi Perdagangan Penyu Berdasarkan Saluran Donchian

Penulis:ChaoZhang, Tanggal: 2023-12-25 10:57:52
Tag:

img

Gambaran umum

Nama strategi ini adalah Turtle Trading Strategy Based on Donchian Channels. Ini meminjam ide utama dari Turtle Trading Rules yang terkenal dan menggunakan Donchian Channels untuk menentukan tren pasar, dikombinasikan dengan moving average untuk penyaringan, mewujudkan strategi tren yang relatif sederhana.

Prinsip Strategi

Indikator utama untuk menilai strategi ini adalah Saluran Donchian. Saluran Donchian terdiri dari rentang fluktuasi harga tertinggi dan terendah dalam periode N hari. Jika harga menembus rel atas saluran, itu akan menjadi sinyal panjang; jika menembus rel bawah saluran, itu akan menjadi sinyal pendek. Strategi ini menggunakan Saluran Donchian cepat (10 hari) untuk mengeluarkan sinyal dan Saluran Donchian lambat (20 hari) untuk menghentikan kerugian.

Selain itu, strategi ini juga memperkenalkan dua garis rata-rata bergerak (garis 50 hari dan garis 125 hari) untuk menyaring sinyal. Hanya ketika garis rata-rata bergerak cepat melintasi di atas garis rata-rata bergerak lambat, posisi panjang akan diperdagangkan; Hanya ketika garis rata-rata bergerak cepat melintasi di bawah garis rata-rata bergerak lambat, posisi pendek akan diperdagangkan. Ini dapat secara efektif menyaring beberapa sinyal palsu.

Kondisi pembukaan strategi ini adalah: harga menembus rel atas Saluran Donchian, dan garis rata-rata bergerak cepat melintasi di atas garis rata-rata bergerak lambat. Ketika kedua kondisi terpenuhi, posisi panjang akan dibuka; harga menembus rel bawah Saluran Donchian, dan garis rata-rata bergerak cepat melintasi di bawah garis rata-rata bergerak lambat, kemudian membuka posisi pendek. Kondisi penutupan adalah ketika harga menyentuh batas Saluran Donchian yang berlawanan.

Analisis Keuntungan

Keuntungan dari strategi ini adalah:

  1. Menggunakan saluran Donchian untuk menentukan arah tren, efek backtest lebih baik untuk berhasil menangkap tren besar;

  2. Menambahkan filter rata-rata bergerak dapat menyaring beberapa sinyal palsu dan menghindari kerugian;

  3. Kombinasi saluran Donchain yang cepat dan lambat dan rata-rata bergerak dapat menyeimbangkan frekuensi perdagangan dan akurasi stop loss;

  4. Risiko dikendalikan dengan baik dengan mekanisme stop loss untuk mengendalikan kerugian tunggal.

Analisis Risiko

Beberapa risiko dari strategi ini:

  1. Di pasar kejutan, mungkin ada lebih banyak pesanan kecil yang kehilangan;

  2. Ketika terjadi pembalikan tren, penyaringan rata-rata bergerak akan meningkatkan biaya pembukaan;

  3. Di pasar yang curam, stop loss dapat dikejar.

Tindakan dan solusi:

  1. Sesuai menyesuaikan parameter, memperpendek siklus Donchian, mengurangi siklus rata-rata bergerak untuk beradaptasi dengan pasar yang berbeda.

  2. Meningkatkan penilaian pada tren utama untuk menghindari membangun posisi melawan tren utama.

Arahan Optimasi

Strategi dapat dioptimalkan dalam aspek berikut:

  1. Meningkatkan kekuatan terobosan. misalnya, memperkenalkan volume, posisi terbuka hanya ketika volume membesar;

  2. Meningkatkan penilaian daerah panas. menggabungkan dengan dukungan, tekanan, pita, pola dan sebagainya untuk menghindari daerah panas ketika membuka posisi;

  3. Mengoptimalkan strategi stop loss. Memperkenalkan pelacakan stop loss, volatility stop loss, time stop loss dll untuk membuat stop loss lebih cerdas.

Ringkasan

Secara umum, strategi ini adalah strategi yang sangat tipikal dan sederhana mengikuti tren. Ini mewujudkan hasil backtest yang baik dengan menentukan arah melalui Saluran Donchian dan menyaring sinyal melalui moving average. Strategi ini cocok untuk investor yang mengejar tren besar, dengan kontrol risiko yang baik dan mudah diterapkan dalam perdagangan nyata. Dengan mengoptimalkan beberapa parameter dan aturan, tingkat kemenangan dan profitabilitas dapat ditingkatkan lebih lanjut.


/*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()






Lebih banyak