
Strategi ini menggunakan perubahan harga tertinggi dan terendah pada garis K untuk menentukan arah dan kekuatan pergerakan pasar, dikombinasikan dengan garis rata untuk menentukan tren keseluruhan, untuk mencapai operasi garis pendek.
Strategi ini pertama-tama menilai perubahan harga tertinggi dan terendah pada garis K relatif terhadap garis K sebelumnya, jika harga tertinggi naik, ia dicatat sebagai 1, jika harga terendah turun, ia dicatat sebagai -1, jika tidak, ia dicatat sebagai 0. Kemudian masing-masing menghitung rata-rata perubahan harga tertinggi dan terendah dalam periode tertentu, menilai arah dan kekuatan pergerakan pasar.
Pada saat yang sama, strategi mencatat harga tertinggi dan terendah dalam periode terakhir. Ketika garis rata-rata menilai perubahan tren, harga yang tercatat digabungkan untuk menentukan titik harga kritis, membentuk level stop loss dan stop loss.
Ke arah masuk berdasarkan garis rata, multihead dibeli di atas rel atas, kepala kosong dijual di bawah rel bawah. Stop loss dan stop loss level dibentuk melalui penilaian titik harga kunci.
Keuntungan terbesar dari strategi ini adalah memanfaatkan karakteristik gesekan dari garis pendek untuk keuntungan. Dengan menentukan titik harga kunci untuk membentuk stop loss, membuat strategi berjalan di bawah aturan yang jelas.
Strategi ini menghadapi risiko utama sebagai berikut:
Tidak ada keuntungan jika tidak ada gempa.
Jika harga melampaui level stop loss, maka akan terjadi kerugian yang tidak perlu.
Salah menilai tren, mungkin melewatkan tren atau melakukan operasi terbalik. Parameter garis rata-rata dapat disesuaikan dengan tepat.
Strategi ini dapat dioptimalkan dalam beberapa hal:
Periode rata-rata disesuaikan dengan karakteristik varietas yang berbeda.
Optimalkan Stop Loss Range, menyeimbangkan keuntungan dan kerugian.
Menambahkan penilaian indikator lainnya untuk menghindari kesalahan operasi.
Meningkatkan Stop Loss Otomatis dan Mengontrol Kerugian Maksimal
Strategi ini secara keseluruhan adalah strategi yang memanfaatkan karakteristik getaran garis pendek. Mengambil keuntungan dari operasi kisaran kecil harga. Sementara itu, kendalikan risiko dengan ketat, berhenti tepat waktu ketika tren tidak menguntungkan.
/*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()