ZZ-4 Strategi Penembusan Saluran Harga

Penulis:ChaoZhang, Tarikh: 2023-09-21 10:59:55
Tag:

Ringkasan

Strategi ini berdagang berdasarkan saluran harga penunjuk ZZ, mengambil kedudukan panjang / pendek apabila harga pecah di atas / di bawah jalur saluran.

Logika Strategi

  1. Mengira jalur saluran harga atas/bawah
  2. Pergi panjang apabila harga pecah di atas band atas
  3. Pergi pendek apabila harga merosot di bawah band bawah
  4. Tetapkan julat masa dagangan
  5. Posisi bersih sebelum penutupan harian

Secara khusus, ia menggunakan penunjuk ZZ untuk mengira jalur saluran harga. Apabila harga pecah ke atas dari jalur bawah, pergi panjang. Apabila harga pecah dari jalur atas, pergi pendek. Perintah stop loss digunakan dengan jalur saluran sebagai tahap stop loss. Jam perdagangan juga ditakrifkan untuk mengelakkan risiko semalaman.

Analisis Kelebihan

  1. Saluran harga mengenal pasti potensi trend breakouts
  2. Isyarat perdagangan yang mudah dan jelas
  3. Tempoh saluran yang boleh disesuaikan sesuai dengan produk dan kitaran yang berbeza
  4. Waktu dagangan dan pengurusan risiko keluar harian
  5. Limit Stop Loss

Analisis Risiko

  1. Whipsaws dalam saluran boleh berulang kali memukul stop loss
  2. Menghendaki penyesuaian parameter tepat pada masanya, jika tidak julat saluran mungkin tidak tepat
  3. Penarikan boleh menjadi palsu, risiko terperangkap
  4. Potensi keuntungan terhad oleh julat saluran
  5. Tidak dapat memanfaatkan sepenuhnya pergerakan trend

Risiko boleh dikurangkan dengan memperluaskan julat saluran, mengoptimumkan stop loss, mengukur kekuatan trend dll.

Arahan pengoptimuman

  1. Uji kombinasi parameter yang berbeza untuk persediaan terbaik
  2. Luaskan saluran harga untuk menangkap pergerakan yang lebih besar
  3. Tambah penunjuk trend untuk mengelakkan pecah palsu
  4. Mengoptimumkan stop loss untuk mengelakkan terperangkap
  5. Meningkatkan saiz kedudukan untuk memaksimumkan keuntungan keluar
  6. Menilai keuntungan di pelbagai julat tarikh

Ringkasan

Strategi ini memperdagangkan kemerosotan saluran harga untuk mengenal pasti wabak trend. Pro adalah isyarat yang jelas dan mudah dikendalikan; Kelemahan adalah whipsaws dan kegagalan untuk menunggang trend. Pengoptimuman parameter dan kombinasi strategi dapat mengatasi kelemahan sambil mengekalkan pro. Ia membantu peniaga menguasai menggunakan teknik saluran harga.


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

Lebih lanjut