Strategi Perdagangan Indeks Momentum Terbalik Dua Arah


Tanggal Pembuatan: 2023-12-25 12:02:57 Akhirnya memodifikasi: 2023-12-25 12:02:57
menyalin: 0 Jumlah klik: 599
1
fokus pada
1623
Pengikut

Strategi Perdagangan Indeks Momentum Terbalik Dua Arah

Ringkasan

Strategi ini adalah strategi untuk melakukan perdagangan dengan menggunakan indikator indeks volume berbalik dua arah. Strategi ini membangun indeks volume berbalik dengan menghitung harga tertinggi, terendah, dan harga penutupan dalam jangka waktu tertentu, dan menghitung rata-rata bergeraknya untuk membentuk sinyal perdagangan.

Prinsip Strategi

Indikator utama dari strategi ini adalah Stochastic Momentum Index (SMI). Rumus SMI adalah sebagai berikut:

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

Di antaranya, HH adalah harga tertinggi dalam N hari terakhir, LL adalah harga terendah dalam N hari terakhir, N ditentukan oleh parameter a; AVGDIFF adalah HH-LL dengan rata-rata bergerak dalam M hari, M ditentukan oleh parameter b.

Indeks SMI mencerminkan karakteristik harga reversal. Ketika harga saham mendekati titik tertinggi dalam N hari terakhir, SMI mendekati 100, menunjukkan saham overbought; Ketika mendekati titik terendah dalam N hari terakhir, SMI mendekati 100, menunjukkan saham oversold. Ketika SMI berbalik turun dari level 100 atau naik dari level 100, ia mengeluarkan sinyal beli / jual.

Strategi ini menggunakan SMA M-Day Moving Average (MDA) dari SMI sebagai garis sinyal perdagangan. Sinyal beli dihasilkan ketika SMI berbalik turun dari SMA dari zona overbought; Sinyal jual dihasilkan ketika SMI berbalik naik dari zona oversold dan menembus SMA.

Pada saat yang sama, strategi menilai entitas K-line untuk menembus dan mengatur stop loss.

Keunggulan Strategis

Strategi ini memiliki keuntungan sebagai berikut:

  1. Menggunakan prinsip reversal harga, dapat menghasilkan sinyal perdagangan pada titik reversal tren, menangkap peluang reversal.

  2. Indeks SMI menggabungkan harga tertinggi, harga terendah dan harga penutupan, untuk menilai secara komprehensif overbought dan oversold, sinyalnya lebih dapat diandalkan.

  3. Exiting the position, efektif mengontrol risiko.

  4. Lebih sedikit parameter untuk strategi, lebih mudah untuk diterapkan dan dioptimalkan.

Risiko Strategis

Strategi ini juga memiliki beberapa risiko:

  1. Perdagangan reversal sulit untuk menilai kapan reversal berhasil, dan mungkin hanya menangkap reversal setelah mengalami kerugian beberapa kali.

  2. Kesalahan dalam menentukan titik balik bisa menyebabkan kerugian yang lebih besar.

  3. Penembusan entitas mungkin terlalu sensitif, dan kemungkinan besar akan dikurung.

Solusi yang sesuai:

  1. Mengoptimalkan parameter SMI, menyesuaikan frekuensi perdagangan reverse.

  2. Dalam kombinasi dengan indikator lain, waktu reversal ditentukan.

  3. Sesuaikan parameter stop loss dengan ukuran entitas untuk mencegah terlalu sensitif.

Optimasi Strategi

Strategi ini dapat dioptimalkan dari beberapa arah:

  1. Optimalkan parameter a dan b dari SMI, menyesuaikan sensitivitas reversal capture.

  2. Menambahkan penilaian indikator lain untuk menghindari kehilangan arah tren utama. Misalnya, kombinasi garis rata-rata, indikator volatilitas, dll.

  3. Menambahkan metode stop loss untuk mencegah stop loss yang terlalu sensitif atau lambat. Anda dapat mempertimbangkan stop loss tracking, stop loss curve, dll.

  4. Menggunakan model pembelajaran mesin untuk menilai probabilitas keberhasilan pembalikan dan menghindari kegagalan pembalikan.

Meringkaskan

Secara keseluruhan, strategi ini adalah strategi untuk melakukan perdagangan dua arah dengan menggunakan indeks reversal SMI. Keuntungan dari strategi ini adalah memanfaatkan karakteristik reversal harga, menghasilkan sinyal perdagangan di titik reversal, dan menangkap lebih banyak peluang perdagangan garis pendek. Namun, ada juga beberapa risiko perdagangan reversal yang khas, yang perlu dioptimalkan pada parameter dan stop loss untuk mencegah peningkatan kerugian. Secara keseluruhan, strategi ini cocok untuk investor yang tertarik pada perdagangan reversal, tetapi risiko harus dikendalikan dengan penilaian dan kontrol ketat dari indikator lain.

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