Strategi Dagangan Indeks Momentum Pembalikan Ganda

Penulis:ChaoZhang, Tarikh: 2023-12-25 12:02:57
Tag:

img

Ringkasan

Strategi ini berdasarkan pada penunjuk Indeks Momentum Pembalikan Berganda untuk perdagangan. Ia mengira indeks momentum pembalikan dalam tempoh masa tertentu menggunakan harga tertinggi, harga terendah, dan harga penutupan, dan menghasilkan isyarat perdagangan apabila indeks membalikkan ke bawah dari zon overbought atau membalikkan ke atas dari zon oversold. Ia juga menetapkan mekanisme stop loss pecah.

Logika Strategi

Indikator teras strategi ini adalah Indeks Momentum Stochastic (SMI). Formula pengiraan SMI adalah:

$$SMI = \frac{Close-(HH+LL)/2}{AVGDIFF/2}*100$$

Di mana HH adalah harga tertinggi selama N hari yang lalu, LL adalah harga terendah selama N hari yang lalu, N ditentukan oleh parameter a; AVGDIFF adalah purata bergerak M hari HH-LL, M ditentukan oleh parameter b.

SMI menunjukkan ciri pembalikan harga. Apabila harga saham mendekati titik tertinggi selama N hari yang lalu, SMI hampir 100, menunjukkan overbought saham; apabila ia mendekati titik terendah selama N hari yang lalu, SMI hampir -100, menunjukkan oversold. Isyarat beli / jual dihasilkan apabila SMI membalik ke bawah dari tahap 100 atau membalik ke atas dari tahap -100.

Strategi ini menggunakan SMA bergerak M-hari SMI sebagai garis isyarat perdagangan. Apabila SMI berbalik ke bawah dari zon overbought dan memecahkan di bawah SMA, isyarat beli dihasilkan. Apabila SMI berbalik dari zon oversold dan memecahkan di atas SMA, isyarat jual dihasilkan.

Juga, strategi menilai penembusan badan candlestick untuk stop loss.

Analisis Kelebihan

Kelebihan strategi ini ialah:

  1. Menggunakan prinsip pembalikan harga, ia boleh menghasilkan isyarat perdagangan pada titik pembalikan dan menangkap peluang pembalikan.

  2. SMI menggabungkan harga tertinggi, harga terendah dan harga penutupan untuk menilai keadaan overbought dan oversold, membuat isyarat yang lebih boleh dipercayai.

  3. Dengan penembusan stop loss badan candlestick, ia boleh keluar dari kedudukan tepat pada masanya dan mengawal risiko dengan berkesan.

  4. Strategi ini mempunyai beberapa parameter dan mudah dilaksanakan dan dioptimumkan.

Analisis Risiko

Terdapat juga beberapa risiko untuk strategi ini:

  1. Perdagangan pembalikan sukar untuk menentukan masa tepat pembalikan yang berjaya, dan mungkin mengalami banyak kerugian sebelum menangkap pembalikan trend.

  2. Penghakiman yang salah mengenai titik pembalikan boleh membawa kepada kerugian yang diperkuat.

  3. Penghentian kehilangan badan mungkin terlalu sensitif dengan kemungkinan tinggi terperangkap.

Penyelesaian adalah:

  1. Mengoptimumkan parameter SMI untuk menyesuaikan kekerapan perdagangan pembalikan.

  2. Gabungkan penunjuk lain untuk menentukan masa pembalikan.

  3. Sesuaikan saiz badan untuk menghentikan kehilangan untuk mengelakkan terlalu sensitif.

Pengoptimuman

Strategi ini boleh dioptimumkan dalam aspek berikut:

  1. Mengoptimumkan parameter a dan b SMI untuk menyesuaikan kepekaan menangkap pembalikan.

  2. Tambahkan penunjuk lain untuk penilaian untuk mengelakkan kehilangan arah trend utama, contohnya purata bergerak, penunjuk turun naik dll.

  3. Tambah lebih banyak kaedah stop loss untuk mengelakkan terlalu sensitif atau tidak sensitif, seperti trailing stop loss, stop loss kurva dll.

  4. Menggabungkan model pembelajaran mesin untuk menilai kebarangkalian kejayaan pembalikan, mengelakkan perdagangan pembalikan yang gagal.

Kesimpulan

Kesimpulannya, ini adalah strategi perdagangan dua arah berdasarkan indeks momentum pembalikan SMI. Kelebihannya terletak pada menangkap lebih banyak peluang perdagangan jangka pendek dengan menggunakan pembalikan harga dan menghasilkan isyarat pada titik pembalikan. Tetapi terdapat juga risiko yang biasa dari perdagangan pembalikan. Penyesuaian parameter dan pengoptimuman stop loss diperlukan untuk mengelakkan kerugian yang diperkuat. Secara keseluruhan, strategi ini sesuai untuk pelabur yang berminat dalam perdagangan pembalikan, tetapi mesti menggabungkan penunjuk lain dan stop loss yang ketat untuk mengawal risiko.


/*backtest
start: 2023-11-01 00:00:00
end: 2023-11-30 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=2
strategy(title = "Noro's Stochastic Strategy v1.0", shorttitle = "Stochastic str 1.0", overlay = false, 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, %")
a = input(5, "Percent K Length")
b = input(3, "Percent D Length")
limit = input(50, defval = 50, minval = 1, maxval = 100, title = "SMI Limit")
fromyear = input(2018, defval = 2018, 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")

//Stochastic Momentum Index
ll = lowest (low, a)
hh = highest (high, a)
diff = hh - ll
rdiff = close - (hh+ll)/2
avgrel = ema(ema(rdiff,b),b)
avgdiff = ema(ema(diff,b),b)
SMI = avgdiff != 0 ? (avgrel/(avgdiff/2)*100) : 0
SMIsignal = ema(SMI,b)

//Lines
plot(SMI, color = blue, linewidth = 3, title = "Stochastic Momentum Index")
plot(SMIsignal, color = red, linewidth = 3, title = "SMI Signal Line")
plot(limit, color = black, title = "Over Bought")
plot(-1 * limit, color = black, title = "Over Sold")
plot(0, color = blue, title = "Zero Line")

//Body
body = abs(close - open)
abody = sma(body, 10)

//Signals
up = SMIsignal < -1 * limit and close < open
dn = SMIsignal > limit and close > open
exit = ((strategy.position_size > 0 and close > open) or (strategy.position_size < 0 and close < open)) and body > abody / 2

//Trading
lot = strategy.position_size == 0 ? strategy.equity / close * capital / 100 : lot[1]

if up
    if strategy.position_size < 0
        strategy.close_all()
        
    strategy.entry("Bottom", strategy.long, needlong == false ? 0 : lot)

if dn
    if strategy.position_size > 0
        strategy.close_all()
        
    strategy.entry("Top", strategy.short, needshort == false ? 0 : lot)
    
if  exit
    strategy.close_all()

Lebih lanjut