Strategi Pemecahan Saluran Harga ZZ-4


Tarikh penciptaan: 2023-09-21 10:59:55 Akhirnya diubah suai: 2023-09-21 10:59:55
Salin: 0 Bilangan klik: 647
1
fokus pada
1617
Pengikut

Gambaran keseluruhan

Strategi ini berdagang di saluran harga berdasarkan indikator ZZ, menggunakan isyarat harga yang melampaui batas atas saluran ke atas atau turun ke bawah saluran ke bawah untuk membina kedudukan overhead atau kosong. Strategi ini cuba menangkap tercetus trend di luar saluran harga.

Prinsip Strategi

  1. Mengira had atas dan bawah saluran harga
  2. Lebih banyak apabila kenaikan harga melampaui had
  3. Tekan kosong apabila harga turun melampaui had bawah
  4. Tetapkan masa untuk memulakan dan berhenti berdagang
  5. Penghapusan sebelum penutupan setiap hari

Khususnya, strategi ini menggunakan indikator ZZ untuk mengira batas atas dan bawah saluran harga. Apabila harga menembusi batas atas dari bawah, masuk lebih banyak; Apabila harga menembusi batas bawah dari atas, masuk lebih banyak.

Analisis kelebihan

  1. Menggunakan saluran harga untuk menilai titik pecah trend yang berpotensi, mempunyai keupayaan untuk mengenal pasti trend
  2. Isyarat dagangan mudah, intuitif dan mudah dinilai
  3. Parameter kitaran saluran yang boleh disesuaikan untuk pelbagai jenis dan kitaran
  4. Menetapkan julat tarikh dan penyingkiran setiap hari membantu mengawal risiko
  5. Stop loss yang boleh mengehadkan kerugian

Analisis risiko

  1. Pergerakan dalam saluran harga boleh menyebabkan banyak hentian
  2. Parameter perlu diselaraskan pada masa yang sesuai, jika tidak, jangkauan saluran mungkin tidak tepat
  3. Penembusan mungkin palsu, ada risiko dirampas
  4. Potensi keuntungan terhad kepada ruang harga
  5. Ruang keuntungan yang tidak dimanfaatkan sepenuhnya

Risiko ini boleh dikurangkan dengan meluaskan jarak saluran, mengoptimumkan strategi hentikan kerugian, dan menilai kekuatan trend.

Arah pengoptimuman

  1. Uji parameter yang berbeza untuk mencari kombinasi terbaik
  2. Pelancaran saluran harga untuk merangkumi pasaran yang lebih besar
  3. Memperkenalkan indikator penilaian trend untuk mengelakkan penembusan palsu
  4. Mengoptimumkan strategi menghentikan kerugian untuk mengelakkan penipuan
  5. Meningkatkan kadar pegangan untuk memaksimumkan keuntungan terobosan
  6. Penilaian kadar pulangan bagi pelbagai tarikh

ringkaskan

Strategi ini berdagang berdasarkan titik pecah trend penghakiman saluran harga. Kelebihan adalah isyarat perdagangan yang mudah, hentikan kerugian jelas, mudah dikendalikan; Kelemahannya adalah terdapat sering melangkau dan tidak memanfaatkan kecenderungan.

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

//Noro
//2019

//@version=4
strategy(title = "Noro's ZZ-4 Strategy", shorttitle = "Noro's ZZ-4 Strategy", 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(true, defval = true, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")
len = input(7, minval = 1, title = "Length")
showll = input(true, defval = true, title = "Show Levels")
showbg = input(false, defval = false, title = "Show Background")
showpc = input(false, defval = false, title = "Show Price Channel")
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")

//Price channel
h = highest(ohlc4, len)
l = lowest(ohlc4, len)
pccol = showpc ? color.blue : na
plot(h, color = pccol, transp = 0)
plot(l, color = pccol, transp = 0)

//Levels
ml = 0
ml := l > l[1] ? 1 : l < l[1] ? -1 : ml[1]
ll = 0.0
ll := ml == 1 and ml[1] == -1 ? l[1] : ll[1]
mh = 0
mh := h > h[1] ? 1 : h < h[1] ? -1 : mh[1]
hl = 0.0
hl := mh == -1 and mh[1] == 1 ? h[1] : hl[1]

//Lines
colorh = showll and hl == hl[1] ? color.lime : na
colorl = showll and ll == ll[1] ? color.red : na
plot(hl, color = colorh, linewidth = 2, transp = 0, title = "Long")
plot(ll, color = colorl, linewidth = 2, transp = 0, title = "Short")

//Background
size = strategy.position_size
trend = 0
trend := size > 0 ? 1 : size < 0 ? -1 : high >= hl ? 1 : low <= ll ? -1 : trend[1]
bgcol = showbg == false ? na : trend == 1 ? color.lime : trend == -1 ? color.red : na
bgcolor(bgcol, transp = 80)

//Trading
truetime = time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)
lot = 0.0
lot := size != size[1] ? strategy.equity / close * capital / 100 : lot[1]
if ll > 0 and hl > 0
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, stop = hl, when=(truetime))
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, stop = ll, when=(truetime))
if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()
    strategy.cancel("Long")
    strategy.cancel("Short")