Strategi ini menggunakan perubahan harga tertinggi dan terendah K-line untuk menilai arah dan intensiti goyangan pasaran, dan menggabungkan purata bergerak untuk menilai trend keseluruhan untuk melaksanakan operasi jangka pendek.
Strategi ini mula-mula menilai perubahan harga tertinggi dan terendah K-line berbanding dengan K-line sebelumnya. Jika harga tertinggi naik, ia direkodkan sebagai 1. Jika harga terendah jatuh, ia direkodkan sebagai -1, jika tidak ia direkodkan sebagai 0. Kemudian mengira nilai purata perubahan harga tertinggi dan terendah dalam kitaran tertentu untuk menilai hala tuju dan intensiti goyangan pasaran.
Pada masa yang sama, strategi ini merekodkan harga tertinggi dan terendah dalam kitaran yang paling baru-baru ini. Apabila purata bergerak menentukan pembalikan trend, digabungkan dengan harga yang direkodkan untuk menentukan tahap harga utama untuk membentuk tahap berhenti kerugian dan mengambil keuntungan.
Arah kemasukan ditentukan oleh purata bergerak. Pergi panjang di atas rel atas dan pergi pendek di bawah rel bawah. Stop loss dan mengambil tahap keuntungan dibentuk dengan menilai tahap harga utama.
Kelebihan terbesar strategi ini adalah untuk memanfaatkan sepenuhnya ciri-ciri turun naik jangka pendek untuk membuat keuntungan. Dengan menentukan stop loss dan mengambil keuntungan berdasarkan tahap harga utama, strategi berjalan di bawah peraturan yang jelas. Pada masa yang sama, ia menggabungkan penilaian trend untuk menapis pasaran yang tidak menguntungkan dan mengelakkan kerugian yang tidak perlu.
Risiko utama yang dihadapi oleh strategi ini adalah:
Tiada keuntungan jika pasaran tidak turun naik.
Kerugian yang tidak perlu yang disebabkan oleh harga yang menembusi tahap stop loss. Julat stop loss boleh diperluaskan dengan sewajarnya.
Penghakiman yang salah terhadap trend boleh terlepas peluang atau membuat operasi ke arah yang bertentangan.
Strategi ini boleh dioptimumkan dalam aspek berikut:
Sesuaikan kitaran purata bergerak untuk menyesuaikan diri dengan ciri-ciri pelbagai jenis.
Mengoptimumkan julat stop profit dan stop loss untuk mengimbangi keuntungan dan kerugian.
Tambahkan penunjuk lain untuk penilaian untuk mengelakkan operasi yang salah.
Tambah stop loss automatik untuk mengawal kerugian maksimum.
Secara umum, strategi ini adalah yang mengambil kesempatan daripada turun naik jangka pendek. Ia memanfaatkan sepenuhnya pergerakan harga kecil untuk membuat keuntungan. Pada masa yang sama, ia mengawal risiko dengan ketat dan mengurangkan kerugian tepat pada masanya apabila trend tidak menguntungkan. Ia sesuai untuk pelabur yang mengejar pulangan yang stabil dengan sikap yang agak berhati-hati. Dengan penyesuaian parameter yang sesuai, ia dapat mencapai hasil yang baik dalam pasaran yang turun naik.
/*backtest start: 2024-01-16 00:00:00 end: 2024-01-16 22:45:00 period: 15m basePeriod: 5m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2018 //@version=3 strategy(title = "Noro's ZZ-3 Strategy", shorttitle = "ZZ-3 str", 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, %") corr = input(0.0, title = "Correction, %") bars = input(1, minval = 1) revers = input(false, defval = false, title = "revers") showll = input(true, defval = true, title = "Show Levels") showbg = input(false, defval = false, title = "Show Background") showar = input(false, defval = false, title = "Show Arrows") 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") //Levels hbar = 0 hbar := high > high[1] ? 1 : high < high[1] ? -1 : 0 lbar = 0 lbar := low > low[1] ? 1 : low < low[1] ? -1 : 0 uplevel = 0.0 dnlevel = 0.0 hh = highest(high, bars + 1) ll = lowest(low, bars + 1) uplevel := hbar == -1 and sma(hbar, bars)[1] == 1 ? hh + ((hh / 100) * corr) : uplevel[1] dnlevel := lbar == 1 and sma(lbar, bars)[1] == -1 ? ll - ((ll / 100) * corr) : dnlevel[1] //Lines upcol = na upcol := showll == false ? na : uplevel != uplevel[1] ? na : lime plot(uplevel, color = upcol, linewidth = 2) dncol = na dncol := showll == false ? na : dnlevel != dnlevel[1] ? na : red plot(dnlevel, color = dncol, linewidth = 2) //Background size = strategy.position_size trend = 0 trend := size > 0 ? 1 : size < 0 ? -1 : high >= uplevel ? 1 : low <= dnlevel ? -1 : trend[1] col = showbg == false ? na : trend == 1 ? lime : trend == -1 ? red : na bgcolor(col) //Arrows longsignal = false shortsignal = false longsignal := size > size[1] shortsignal := size < size[1] plotarrow(longsignal and showar and needlong ? 1 : na, colorup = blue, colordown = blue, transp = 0) plotarrow(shortsignal and showar and needshort ? -1 : na, colorup = blue, colordown = blue, transp = 0) //Trading lot = 0.0 lot := size != size[1] ? strategy.equity / close * capital / 100 : lot[1] if uplevel > 0 and dnlevel > 0 and revers == false strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, stop = uplevel, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, stop = dnlevel, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) if uplevel > 0 and dnlevel > 0 and revers == true strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, limit = dnlevel, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, limit = uplevel, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) if time > timestamp(toyear, tomonth, today, 23, 59) strategy.close_all()