Strategi perdagangan indeks momentum pembalikan ganda

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

img

Gambaran umum

Strategi ini didasarkan pada indikator Indeks Momentum Reversal Dual untuk perdagangan. Ini menghitung indeks momentum reversal selama periode waktu tertentu menggunakan harga tertinggi, harga terendah, dan harga penutupan, dan menghasilkan sinyal perdagangan ketika indeks berbalik ke bawah dari zona overbought atau berbalik ke atas dari zona oversold.

Logika Strategi

Indikator inti dari strategi ini adalah Stochastic Momentum Index (SMI).

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

Di mana HH adalah harga tertinggi selama N hari terakhir, LL adalah harga terendah selama N hari terakhir, N ditentukan oleh parameter a; AVGDIFF adalah rata-rata pergerakan HH-LL selama M hari, M ditentukan oleh parameter b.

SMI menunjukkan karakteristik pembalikan harga. Ketika harga saham mendekati titik tertinggi selama N hari terakhir, SMI mendekati 100, menunjukkan overbought saham; ketika mendekati titik terendah selama N hari terakhir, SMI mendekati -100, menunjukkan oversold. Sinyal beli / jual dihasilkan ketika SMI membalik ke bawah dari tingkat 100 atau membalik ke atas dari tingkat -100.

Strategi ini menggunakan SMA bergerak M-day dari SMI sebagai garis sinyal perdagangan. Ketika SMI berbalik ke bawah dari zona overbought dan melanggar di bawah SMA, sinyal beli dihasilkan. Ketika SMI berbalik ke atas dari zona oversold dan melanggar di atas SMA, sinyal jual dihasilkan.

Juga, strategi menilai penembusan tubuh candlestick untuk stop loss.

Analisis Keuntungan

Keuntungan dari strategi ini adalah:

  1. Menggunakan prinsip pembalikan harga, dapat menghasilkan sinyal perdagangan pada titik pembalikan dan menangkap peluang pembalikan.

  2. SMI menggabungkan harga tertinggi, harga terendah dan harga penutupan untuk menilai kondisi overbought dan oversold, membuat sinyal yang lebih andal.

  3. Dengan stop loss body breakout candlestick, bisa keluar posisi tepat waktu dan mengontrol risiko secara efektif.

  4. Strategi ini memiliki beberapa parameter dan mudah diterapkan dan dioptimalkan.

Analisis Risiko

Ada juga beberapa risiko untuk strategi ini:

  1. Perdagangan reversal sulit untuk menentukan waktu yang tepat dari pembalikan yang berhasil, dan dapat menimbulkan banyak kerugian sebelum menangkap pembalikan tren.

  2. Penilaian yang salah tentang titik pembalikan dapat menyebabkan kerugian yang diperkuat.

  3. Stop loss body breakout mungkin terlalu sensitif dengan kemungkinan tinggi terperangkap.

Solusinya adalah:

  1. Mengoptimalkan parameter SMI untuk menyesuaikan frekuensi perdagangan pembalikan.

  2. Gabungkan indikator lain untuk menentukan waktu pembalikan.

  3. Sesuaikan ukuran tubuh untuk menghentikan kehilangan untuk mencegah terlalu sensitif.

Optimalisasi

Strategi dapat dioptimalkan dalam aspek berikut:

  1. Mengoptimalkan parameter a dan b dari SMI untuk menyesuaikan sensitivitas penangkapan pembalikan.

  2. Tambahkan indikator lain untuk penilaian untuk menghindari kehilangan arah tren utama, misalnya rata-rata bergerak, indikator volatilitas dll.

  3. Tambahkan lebih banyak metode stop loss untuk mencegah terlalu sensitif atau tidak sensitif, seperti trailing stop loss, curve stop loss dll.

  4. Mengintegrasikan model pembelajaran mesin untuk menilai probabilitas keberhasilan pembalikan, menghindari perdagangan pembalikan yang gagal.

Kesimpulan

Kesimpulannya, ini adalah strategi perdagangan dua arah berdasarkan indeks momentum pembalikan SMI. Keuntungannya terletak pada menangkap lebih banyak peluang perdagangan jangka pendek dengan memanfaatkan pembalikan harga dan menghasilkan sinyal pada titik pembalikan. Tetapi ada juga risiko khas dari perdagangan pembalikan. Penyesuaian parameter dan pengoptimalan stop loss diperlukan untuk mencegah kerugian yang diperkuat. Secara keseluruhan, strategi ini cocok untuk investor yang tertarik pada perdagangan pembalikan, tetapi harus menggabungkan indikator lain dan stop loss yang ketat untuk mengendalikan 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 banyak