ZZ-4 Strategi Penembusan Saluran Harga

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

Gambaran umum

Strategi ini diperdagangkan berdasarkan saluran harga dari indikator ZZ, mengambil posisi panjang/pendek ketika harga keluar di atas/di bawah band saluran.

Logika Strategi

  1. Menghitung band saluran harga atas/bawah
  2. Pergi panjang ketika harga keluar di atas band atas
  3. Pergi short saat harga turun di bawah band bawah
  4. Tentukan rentang waktu perdagangan
  5. Posisi bersih sebelum penutupan harian

Secara khusus, ini menggunakan indikator ZZ untuk menghitung band saluran harga. Ketika harga keluar ke atas dari band bawah, pergi panjang. Ketika harga turun dari band atas, pergi pendek. Stop loss order digunakan dengan band saluran sebagai stop loss level. Jam perdagangan juga didefinisikan untuk menghindari risiko overnight.

Analisis Keuntungan

  1. Saluran harga mengidentifikasi potensi trend breakout
  2. Sinyal perdagangan yang sederhana dan jelas
  3. Periode saluran yang dapat disesuaikan sesuai dengan produk dan siklus yang berbeda
  4. Jam perdagangan dan manajemen risiko keluar harian
  5. Batas stop loss kerugian perdagangan tunggal

Analisis Risiko

  1. Whipsaws di dalam saluran dapat berulang kali memukul stop loss
  2. Membutuhkan pengaturan parameter tepat waktu, jika tidak rentang saluran mungkin tidak akurat
  3. Lolos bisa palsu, risiko terperangkap
  4. Potensi keuntungan terbatas oleh rentang saluran
  5. Tidak sepenuhnya memanfaatkan pergerakan tren

Risiko dapat dikurangi dengan memperluas rentang saluran, mengoptimalkan stop loss, mengukur kekuatan tren dll.

Arahan Optimasi

  1. Uji kombinasi parameter yang berbeda untuk pengaturan terbaik
  2. Luaskan saluran harga untuk menangkap pergerakan yang lebih besar
  3. Tambahkan indikator tren untuk menghindari pecah palsu
  4. Optimalkan stop loss untuk mencegah terjebak
  5. Meningkatkan ukuran posisi untuk memaksimalkan keuntungan keluar
  6. Mengevaluasi profitabilitas di berbagai rentang tanggal

Ringkasan

Strategi ini memperdagangkan penembusan saluran harga untuk mengidentifikasi wabah tren. Pro adalah sinyal yang jelas dan mudah dioperasikan; Kontra adalah whipsaws dan kegagalan untuk mengendarai tren. Optimasi parameter dan kombinasi strategi dapat mengatasi kontra sambil mempertahankan pro. Ini membantu pedagang menguasai menerapkan 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 banyak