Strategi Moving Average dan Relative Strength Index


Tanggal Pembuatan: 2023-11-28 14:07:46 Akhirnya memodifikasi: 2023-11-28 14:07:46
menyalin: 0 Jumlah klik: 659
1
fokus pada
1617
Pengikut

Strategi Moving Average dan Relative Strength Index

Ringkasan

Moving Average Relative Strength Index Strategy adalah strategi perdagangan kuantitatif yang menggunakan kedua indikator bergerak dan relatif kuat sebagai sinyal perdagangan. Strategi ini menghasilkan sinyal perdagangan dengan membandingkan harga rata-rata bergerak dan nilai indikator relatif kuat untuk menangkap peluang dalam tren pasar.

Prinsip Strategi

Strategi ini didasarkan pada dua indikator:

  1. SMA (Simple Moving Average): mencerminkan tren rata-rata harga.
  2. Indikator Relatif Lemah (RSI): mencerminkan kekuatan lemah harga.

Strategi ini berbunyi:

Ketika garis indikator RSI di bawah rata-rata bergerak adalah daerah oversold, dianggap saham yang diremehkan, menghasilkan sinyal beli; Ketika garis indikator RSI di atas rata-rata bergerak adalah daerah oversold, dianggap saham yang diremehkan, menghasilkan sinyal jual.

Dengan kata lain, rata-rata bergerak mencerminkan nilai wajar saham sampai batas tertentu, dan RSI mewakili posisi kuat dan lemah saham saat ini. RSI lebih tinggi atau lebih rendah dari rata-rata bergerak berarti ada peluang untuk berbalik.

Secara khusus, strategi ini menghasilkan sinyal perdagangan melalui langkah-langkah berikut:

  1. Menghitung nilai RSI saham, dan rata-rata bergerak sederhana
  2. Perbandingan RSI dengan Moving Average
  3. Ketika RSI melintasi rata-rata bergerak, itu menghasilkan sinyal jual
  4. Ketika RSI melintasi moving average, sinyal beli dihasilkan.
  5. Tetapkan Stop Loss dan Pindah Stop Loss untuk Mengontrol Risiko

Keunggulan Strategis

Strategi ini menggabungkan penilaian tren dari rata-rata bergerak dan penilaian overbought dan oversold dari indikator RSI, yang secara komprehensif memanfaatkan keunggulan dari berbagai indikator untuk secara efektif menilai titik balik pasar.

Keunggulan utama:

  1. Rata-rata bergerak dapat secara efektif menunjukkan tren harga
  2. Indeks RSI dapat mencerminkan overbought dan oversold
  3. Kombinasi indikator ganda lebih akurat dalam menentukan titik balik pasar
  4. Anda bisa mengatur stop loss untuk mengendalikan risiko.

Risiko Strategis

Strategi ini juga memiliki beberapa risiko:

  1. Ada kemungkinan bahwa indikator akan menghasilkan sinyal yang salah yang dapat menyebabkan kerugian yang tidak perlu
  2. Stop loss dapat ditembus dan menyebabkan kerugian yang lebih besar pada saat terjadi gempa.
  3. Tidak tepatnya pengaturan parameter juga dapat mempengaruhi kinerja kebijakan

Untuk mengontrol risiko, Anda dapat mengoptimalkannya dengan:

  1. Menyesuaikan parameter moving average dan RSI untuk membuat sinyal indikator lebih dapat diandalkan
  2. Relaksasi Stop Loss yang tepat untuk menghindari stop loss yang terlalu sering dipicu
  3. Menggunakan Stop Loss Mobile, DYNAMIC Stop Loss, dan lainnya untuk membuat Stop Loss lebih fleksibel

Arah optimasi strategi

Strategi ini dapat dioptimalkan lebih lanjut dengan:

  1. Uji kombinasi parameter dari periode yang berbeda untuk mencari parameter yang optimal
  2. Menambahkan filter untuk indikator lain, seperti indikator volume transaksi, untuk meningkatkan keandalan sinyal
  3. Optimalkan strategi stop loss agar stop loss lebih dinamis dan masuk akal
  4. Mengembangkan mekanisme optimasi parameter adaptif dengan teknologi seperti Deep Learning
  5. Menambahkan modul manajemen posisi, menyesuaikan posisi secara dinamis sesuai dengan kondisi pasar

Strategi ini dapat terus meningkatkan stabilitas dan profitabilitas melalui optimasi parameter, optimasi indikator, dan optimasi manajemen risiko.

Meringkaskan

Strategi moving average dan indikator relatif kuat yang menggunakan penilaian tren harga dan penilaian overbought dan oversold secara bersamaan, dapat secara efektif menilai titik balik pasar dan menangkap peluang untuk berbalik. Strategi ini sederhana, praktis, dapat dikontrol risiko, dan merupakan strategi perdagangan kuantitatif yang praktis. Dengan pengoptimalan berkelanjutan, dapat diperoleh efek yang lebih baik.

Kode Sumber Strategi
/*backtest
start: 2023-11-20 00:00:00
end: 2023-11-24 06:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2

strategy(title = "RSI versus SMA", shorttitle = "RSI vs SMA", overlay = false, pyramiding = 0, default_qty_type = strategy.percent_of_equity, default_qty_value = 10, currency = currency.GBP)

// Revision:        1
// Author:          @JayRogers
//
// *** USE AT YOUR OWN RISK ***
// - Nothing is perfect, and all decisions by you are on your own head. And stuff.
//
// Description:
//  - It's RSI versus a Simple Moving Average.. Not sure it really needs much more description.
//  - Should not repaint - Automatically offsets by 1 bar if anything other than "open" selected as RSI source.

// === INPUTS ===
// rsi
rsiSource   = input(defval = open, title = "RSI Source")
rsiLength   = input(defval = 8, title = "RSI Length", minval = 1)
// sma
maLength    = input(defval = 34, title = "MA Period", minval = 1)
// invert trade direction
tradeInvert = input(defval = false, title = "Invert Trade Direction?")
// risk management
useStop     = input(defval = false, title = "Use Initial Stop Loss?")
slPoints    = input(defval = 25, title = "Initial Stop Loss Points", minval = 1)
useTS       = input(defval = true, title = "Use Trailing Stop?")
tslPoints   = input(defval = 120, title = "Trail Points", minval = 1)
useTSO      = input(defval = false, title = "Use Offset For Trailing Stop?")
tslOffset   = input(defval = 20, title = "Trail Offset Points", minval = 1)
// === /INPUTS ===

// === BASE FUNCTIONS ===
// delay for direction change actions
switchDelay(exp, len) =>
    average = len >= 2 ? sum(exp, len) / len : exp[1]
    up      = exp > average
    down    = exp < average
    state   = up ? true : down ? false : up[1]
// === /BASE FUNCTIONS ===

// === SERIES and VAR ===
// rsi
shunt = rsiSource == open ? 0 : 1
rsiUp = rma(max(change(rsiSource[shunt]), 0), rsiLength)
rsiDown = rma(-min(change(rsiSource[shunt]), 0), rsiLength)
rsi = (rsiDown == 0 ? 100 : rsiUp == 0 ? 0 : 100 - (100 / (1 + rsiUp / rsiDown))) - 50 // shifted 50 points to make 0 median
// sma of rsi
rsiMa   = sma(rsi, maLength)
// self explanatory..
tradeDirection = tradeInvert ? 0 <= rsiMa ? true : false : 0 >= rsiMa ? true : false
// === /SERIES ===

// === PLOTTING ===
barcolor(color = tradeDirection ? green : red, title = "Bar Colours")
// hlines
medianLine  = hline(0, title = 'Median', color = #996600,  linewidth = 1)
limitUp     = hline(25, title = 'Limit Up', color = silver,  linewidth = 1)
limitDown   = hline(-25, title = 'Limit Down', color = silver,  linewidth = 1)
// rsi and ma
rsiLine     = plot(rsi, title = 'RSI', color = purple, linewidth = 2, style = line, transp = 50)
areaLine    = plot(rsiMa, title = 'Area MA', color = silver, linewidth = 1, style = area, transp = 70)
// === /PLOTTING ===

goLong() => not tradeDirection[1] and tradeDirection
killLong() => tradeDirection[1] and not tradeDirection
strategy.entry(id = "Buy", long = true, when = goLong())
strategy.close(id = "Buy", when = killLong())

goShort() => tradeDirection[1] and not tradeDirection
killShort() => not tradeDirection[1] and tradeDirection
strategy.entry(id = "Sell", long = false, when = goShort())
strategy.close(id = "Sell", when = killShort())

if (useStop)
    strategy.exit("XSL", from_entry = "Buy", loss = slPoints)
    strategy.exit("XSS", from_entry = "Sell", loss = slPoints)
// if we're using the trailing stop
if (useTS and useTSO) // with offset
    strategy.exit("XSL", from_entry = "Buy", trail_points = tslPoints, trail_offset = tslOffset)
    strategy.exit("XSS", from_entry = "Sell", trail_points = tslPoints, trail_offset = tslOffset)
if (useTS and not useTSO) // without offset
    strategy.exit("XSL", from_entry = "Buy", trail_points = tslPoints)
    strategy.exit("XSS", from_entry = "Sell", trail_points = tslPoints)