Strategi Pelacakan osilasi jangka pendek

Penulis:ChaoZhang, Tanggal: 2024-01-18 16:29:34
Tag:

img

Gambaran umum

Strategi ini menggunakan perubahan harga tertinggi dan terendah dari K-line untuk menilai arah dan intensitas osilasi pasar, dan menggabungkan rata-rata bergerak untuk menilai tren keseluruhan untuk melaksanakan operasi jangka pendek.

Prinsip Strategi

Strategi ini pertama-tama menilai perubahan harga tertinggi dan terendah dari K-line relatif terhadap K-line sebelumnya. Jika harga tertinggi naik, itu dicatat sebagai 1. Jika harga terendah turun, itu dicatat sebagai -1, jika tidak dicatat sebagai 0. Kemudian hitung nilai rata-rata perubahan harga tertinggi dan terendah dalam siklus tertentu untuk menilai arah dan intensitas osilasi pasar.

Pada saat yang sama, strategi mencatat harga tertinggi dan terendah dalam siklus terbaru. Ketika rata-rata bergerak menentukan pembalikan tren, dikombinasikan dengan harga yang tercatat untuk menentukan tingkat harga kunci untuk membentuk tingkat stop loss dan take profit.

arah masuk ditentukan oleh moving average. pergi panjang di atas rel atas dan pergi pendek di bawah rel bawah. stop loss dan mengambil tingkat keuntungan dibentuk dengan menilai tingkat harga kunci.

Analisis Keuntungan

Keuntungan terbesar dari strategi ini adalah memanfaatkan sepenuhnya karakteristik fluktuasi jangka pendek untuk menghasilkan keuntungan. Dengan menentukan stop loss dan mengambil keuntungan berdasarkan tingkat harga kunci, strategi berjalan di bawah aturan yang jelas. Pada saat yang sama, itu menggabungkan penilaian tren untuk menyaring pasar yang tidak menguntungkan dan menghindari kerugian yang tidak perlu.

Analisis Risiko

Risiko utama yang dihadapi strategi ini adalah:

  1. Tidak ada keuntungan jika pasar tidak berfluktuasi.

  2. Kerugian yang tidak perlu yang disebabkan oleh harga yang menembus level stop loss.

  3. Kesalahan penilaian tren dapat melewatkan peluang atau melakukan operasi ke arah yang berlawanan.

Arahan Optimasi

Strategi ini dapat dioptimalkan dalam aspek berikut:

  1. Sesuaikan siklus rata-rata bergerak agar sesuai dengan karakteristik varietas yang berbeda.

  2. Mengoptimalkan stop profit dan stop loss range untuk menyeimbangkan profit dan loss.

  3. Tambahkan indikator lain untuk penilaian untuk menghindari operasi yang salah.

  4. Tambahkan stop loss otomatis untuk mengontrol kerugian maksimum.

Ringkasan

Secara umum, strategi ini adalah yang mengambil keuntungan dari fluktuasi jangka pendek. Ini memanfaatkan sepenuhnya pergerakan harga kecil untuk menghasilkan keuntungan. Pada saat yang sama, secara ketat mengendalikan risiko dan memotong kerugian secara tepat waktu ketika tren tidak menguntungkan. Ini cocok untuk investor yang mengejar pengembalian yang stabil dengan sikap yang relatif hati-hati. Dengan penyesuaian parameter yang tepat, ini dapat mencapai hasil yang baik di pasar yang fluktuatif.


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

Lebih banyak