Strategi mengikut arah aliran berasaskan ZigZag


Tarikh penciptaan: 2023-10-30 14:51:08 Akhirnya diubah suai: 2023-10-30 14:51:08
Salin: 0 Bilangan klik: 843
1
fokus pada
1617
Pengikut

Strategi mengikut arah aliran berasaskan ZigZag

Gambaran keseluruhan

Strategi ini menggunakan petunjuk ZigZag untuk menentukan arah trend, dan untuk mengesan trend setelah trend disahkan, termasuk dalam strategi pengesanan trend.

Prinsip Strategi

Strategi ini digunakan untuk menentukan arah trend harga dengan menggunakan indikator ZigZag. Indeks ZigZag mampu menyaring bunyi pasaran dan menentukan arah pergerakan harga utama. ZigZag akan mengeluarkan isyarat perdagangan apabila harga membuat tinggi baru atau rendah baru.

Khususnya, strategi pertama mengira nilai ZigZag, ZigZag untuk harga tinggi ketika harga membuat titik tinggi yang lebih tinggi; dan ZigZag untuk harga rendah ketika harga membuat titik rendah yang lebih rendah. Dengan cara ini, ZigZag dapat mencerminkan dengan jelas arah pergerakan utama harga.

Strategi menilai arah trend berdasarkan nilai ZigZag. Apabila ZigZag naik, menunjukkan berada dalam trend naik; Apabila ZigZag turun, menunjukkan berada dalam trend menurun. Strategi membuka kedudukan apabila ZigZag berbalik, untuk mengikuti arah trend.

Khususnya, strategi membuka lebih banyak pesanan apabila ZigZag bertukar membentuk tinggi baru, dan membuka pesanan kosong apabila ZigZag bertukar membentuk rendah baru. Syarat kedudukan kosong adalah ZigZag bertukar semula. Dengan demikian, strategi perdagangan automatik yang berdasarkan kepada ZigZag menilai trend dilaksanakan.

Analisis kelebihan strategi

  • Menggunakan indikator ZigZag untuk menentukan trend, ia boleh menyaring bunyi pasaran dengan berkesan dan menentukan arah trend utama dengan tepat.
  • ZigZag mengubah masa tepat, mudah membentuk masa masuk yang lebih baik.
  • Strategi pengesanan trend yang lengkap, tanpa memerlukan sokongan model atau petunjuk lain yang rumit.
  • Logik strategi mudah difahami dan diubah suai.
  • Frekuensi dagangan boleh disesuaikan dengan parameter strategi kawalan bebas.

Analisis risiko

  • ZigZag tidak peka terhadap peralihan bulls-bears yang pendek di tengah, dan mungkin akan terlepas pusingan balik yang lebih cepat.
  • Strategi untuk menjejaki trend, tidak dapat menanggung kerugian akibat perubahan trend.
  • Tidak boleh membatasi jumlah kerugian tunggal, dan terdapat risiko kerugian tunggal yang besar.
  • Strategi ini hanya berdasarkan satu indikator dan mungkin ada risiko overfit.

Risiko boleh dikurangkan dengan:

  • Kaedah ini digunakan untuk menilai risiko perubahan trend.
  • Memperolehi pengurangan masa pegangan yang sewajarnya, dan menghentikan kerugian tepat pada masanya.
  • Menambah modul pengurusan wang untuk mengehadkan kerugian tunggal.
  • Menambah model pembelajaran mesin untuk meningkatkan ketangguhan strategi.

Arah pengoptimuman

Strategi ini boleh dioptimumkan dalam beberapa aspek:

  1. Tambah strategi hentikan kerugian untuk mengawal risiko kerugian tunggal. Anda boleh menetapkan hentikan bergerak atau hentikan hentikan tunggal.

  2. Menambah mekanisme penghakiman pembalikan trend. Indikator seperti MACD, purata bergerak dan lain-lain boleh dimasukkan untuk menutup kedudukan apabila penghakiman pembalikan trend.

  3. Tambah modul re-entry. Apabila trend berterusan, anda boleh menambah kedudukan dengan tepat untuk mendapatkan lebih banyak keuntungan.

  4. Menambah model pembelajaran mesin. Model pembelajaran mendalam seperti LSTM boleh dilatih untuk membantu ZigZag menentukan arah trend.

  5. Mekanisme pengurusan wang yang dioptimumkan. Saiz kedudukan boleh dioptimumkan berdasarkan teori penarikan balik atau hubungan.

  6. Parameter pengoptimuman menyeluruh ditetapkan. Parameter pengoptimuman boleh dilakukan dengan mengkaji semula sejarah dan merujuk kepada buku-buku profesional, seperti panjang kitaran ZigZag.

ringkaskan

Strategi ini menggunakan petunjuk ZigZag untuk menentukan arah trend, mewujudkan strategi perdagangan berdasarkan trend. Logik strategi mudah dan jelas, mudah dilaksanakan. Tetapi terdapat juga masalah seperti ketergantungan pada satu petunjuk, risiko pembalikan trend.

Kod sumber strategi
/*backtest
start: 2022-10-23 00:00:00
end: 2023-04-14 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=2
strategy(title = "Noro's ZZ Strategy v1.0", shorttitle = "ZZ str 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(false, defval = false, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")
tf = input('W', title='Timeframe for ZigZag')
showzz = input(false, defval = false, title = "Show ZigZag")
showbg = input(false, defval = false, title = "Show Background")
fromyear = input(1900, defval = 1900, minval = 1900, 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(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//ZigZag
zigzag() =>
    _isUp = close >= open
    _isDown = close <= open
    _direction = _isUp[1] and _isDown ? -1 : _isDown[1] and _isUp ? 1 : nz(_direction[1])
    _zigzag = _isUp[1] and _isDown and _direction[1] != -1 ? highest(2) : _isDown[1] and _isUp and _direction[1] != 1 ? lowest(2) : na
useAltTF = true
zz = useAltTF ? (change(time(tf)) != 0 ? request.security(syminfo.tickerid, tf, zigzag()) : na) : zigzag()
zzcolor = showzz ? black : na
plot(zz, title = 'ZigZag', color = zzcolor, linewidth = 2)

//Levels
dot = zz > 0 ? zz : dot[1]
uplevel = dot > dot[1] ? dot : uplevel[1]
dnlevel = dot < dot[1] ? dot : dnlevel[1]
colorup = close[1] < uplevel[1] and uplevel == uplevel[1] ? lime : na
colordn = close[1] > dnlevel[1] and dnlevel == dnlevel[1] ? red : na
plot(uplevel, color = colorup, linewidth = 3)
plot(dnlevel, color = colordn, linewidth = 3)

//Background
size = strategy.position_size
bgcol = showbg == false ? na : size != size[1] ? blue : na
bgcolor(bgcol, transp = 50)

//Trading
lot = strategy.position_size != strategy.position_size[1] ? strategy.equity / close * capital / 100 : lot[1]

if uplevel > 0 and dnlevel > 0
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, stop = uplevel + syminfo.mintick)
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, stop = dnlevel - syminfo.mintick)

if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()