Strategi Pelacakan Ganjaran Jangka Pendek

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

img

Ringkasan

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.

Prinsip Strategi

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.

Analisis Kelebihan

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.

Analisis Risiko

Risiko utama yang dihadapi oleh strategi ini adalah:

  1. Tiada keuntungan jika pasaran tidak turun naik.

  2. Kerugian yang tidak perlu yang disebabkan oleh harga yang menembusi tahap stop loss. Julat stop loss boleh diperluaskan dengan sewajarnya.

  3. Penghakiman yang salah terhadap trend boleh terlepas peluang atau membuat operasi ke arah yang bertentangan.

Arahan pengoptimuman

Strategi ini boleh dioptimumkan dalam aspek berikut:

  1. Sesuaikan kitaran purata bergerak untuk menyesuaikan diri dengan ciri-ciri pelbagai jenis.

  2. Mengoptimumkan julat stop profit dan stop loss untuk mengimbangi keuntungan dan kerugian.

  3. Tambahkan penunjuk lain untuk penilaian untuk mengelakkan operasi yang salah.

  4. Tambah stop loss automatik untuk mengawal kerugian maksimum.

Ringkasan

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

Lebih lanjut