Sumber dimuat naik... memuat...

Trend Berikutan RSI dan Moving Average Strategi Dagangan Kuantitatif Gabungan

Penulis:ChaoZhang, Tarikh: 2025-01-06 10:58:42
Tag:RSIMASMATPSL

img

Ringkasan

Strategi ini adalah sistem perdagangan trend yang menggabungkan Indeks Kekuatan Relatif (RSI) dan Purata Bergerak Sederhana (SMA). Ia mengenal pasti arah trend pasaran menggunakan purata bergerak sambil mengesahkan momentum dengan RSI, melaksanakan perdagangan apabila trend dan momentum sejajar. Strategi ini merangkumi mekanisme stop-loss dan mengambil keuntungan yang komprehensif untuk kawalan risiko yang berkesan.

Prinsip Strategi

Logik teras berdasarkan gabungan dua penunjuk teknikal:

  1. Moving Average (MA): Digunakan untuk menentukan trend keseluruhan.
  2. Indeks Kekuatan Relatif (RSI): Digunakan untuk mengesahkan momentum harga. Momentum menaik disahkan apabila RSI melebihi ambang (contohnya, 55), momentum menurun apabila di bawah ambang (contohnya, 45).

Logik penjanaan isyarat dagangan:

  • Syarat lama: Harga di atas MA dan RSI di atas ambang beli
  • Syarat pendek: Harga di bawah MA dan RSI di bawah ambang jual

Kawalan risiko menggunakan paras stop-loss dan mengambil keuntungan berasaskan peratusan, ditetapkan sebagai peratusan tetap harga kemasukan.

Kelebihan Strategi

  1. Kestabilan isyarat: Mengurangkan isyarat palsu melalui pengesahan trend dan momentum
  2. Pengurusan risiko yang komprehensif: Peratusan tetap stop-loss dan mengambil keuntungan secara berkesan mengawal risiko setiap perdagangan
  3. Fleksibiliti parameter: Parameter utama seperti tempoh MA dan ambang RSI boleh dioptimumkan untuk ciri pasaran yang berbeza
  4. Logik strategi yang jelas: Peraturan perdagangan mudah dan intuitif untuk difahami dan dilaksanakan
  5. Kemudahan penyesuaian yang tinggi: Boleh digunakan untuk pelbagai jangka masa dagangan

Risiko Strategi

  1. Risiko pembalikan trend: Penghentian berturut-turut mungkin berlaku pada titik perubahan trend
  2. Risiko pasaran yang terhad kepada julat: Kemungkinan kerugian perdagangan yang kerap dalam pasaran sampingan
  3. Kebergantungan parameter: Parameter optimum boleh berbeza dengan ketara di persekitaran pasaran
  4. Risiko tergelincir: Kemungkinan tergelincir yang ketara semasa turun naik yang tinggi
  5. Kelewatan penunjuk teknikal: MA dan RSI mempunyai kelewatan yang melekat, berpotensi menunda masa kemasukan

Arahan Pengoptimuman Strategi

  1. Pengoptimuman parameter dinamik: Memperkenalkan mekanisme parameter adaptif yang menyesuaikan tempoh MA dan ambang RSI berdasarkan turun naik pasaran
  2. Penapisan persekitaran pasaran: Tambah mekanisme penapisan turun naik untuk menyesuaikan saiz kedudukan atau menghentikan perdagangan dalam turun naik yang tinggi
  3. Analisis jangka masa berbilang: Masukkan pengesahan trend jangka masa yang lebih lama untuk meningkatkan ketepatan arah
  4. Pengoptimuman Stop-Loss: Melaksanakan Stop Trailing untuk perlindungan keuntungan yang lebih baik
  5. Penapisan isyarat: Tambah jumlah dan penunjuk tambahan lain untuk meningkatkan kebolehpercayaan isyarat

Ringkasan

Strategi ini membina sistem perdagangan yang jelas dan terkawal risiko secara logik dengan menggabungkan penunjuk trend dan momentum. Walaupun terdapat risiko yang melekat, strategi menunjukkan kepraktisan yang baik melalui tetapan parameter yang sesuai dan kawalan risiko. Pengoptimuman masa depan memberi tumpuan kepada penyesuaian parameter dinamik, pengiktirafan persekitaran pasaran, dan peningkatan kualiti isyarat, berpotensi meningkatkan kestabilan dan keuntungan strategi.


/*backtest
start: 2019-12-23 08:00:00
end: 2025-01-04 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © raiford87

//@version=6
strategy("RSI + MA Trend Strategy (v6)",
     shorttitle="RSI_MA_Trend_v6",
     overlay=true,
     initial_capital=50000,
     default_qty_type=strategy.fixed,
     default_qty_value=1)

// ─────────────────────────────────────────────────────────────────────────────────────
// 1. USER INPUTS
// ─────────────────────────────────────────────────────────────────────────────────────
maLength       = input.int(50,   "Moving Average Length")
rsiLength      = input.int(14,   "RSI Length")
rsiBuyLevel    = input.int(55,   "RSI > X for Buy",  minval=1, maxval=99)
rsiSellLevel   = input.int(45,   "RSI < X for Sell", minval=1, maxval=99)

stopLossPerc   = input.float(1.0,  "Stop Loss %",    minval=0.1)
takeProfitPerc = input.float(2.0,  "Take Profit %",  minval=0.1)

// ─────────────────────────────────────────────────────────────────────────────────────
// 2. INDICATOR CALCULATIONS
// ─────────────────────────────────────────────────────────────────────────────────────
maValue = ta.sma(close, maLength)
rsiVal  = ta.rsi(close, rsiLength)

// Trend conditions
bullTrend = close > maValue
bearTrend = close < maValue

// RSI conditions
rsiBull   = rsiVal > rsiBuyLevel
rsiBear   = rsiVal < rsiSellLevel

// ─────────────────────────────────────────────────────────────────────────────────────
// 3. ENTRY CONDITIONS
// ─────────────────────────────────────────────────────────────────────────────────────
longCondition  = bullTrend and rsiBull
shortCondition = bearTrend and rsiBear

if longCondition
    strategy.entry("RSI MA Long", strategy.long)
if shortCondition
    strategy.entry("RSI MA Short", strategy.short)

// ─────────────────────────────────────────────────────────────────────────────────────
// 4. STOP LOSS & TAKE PROFIT
// ─────────────────────────────────────────────────────────────────────────────────────
stopLossLevel   = stopLossPerc   * 0.01
takeProfitLevel = takeProfitPerc * 0.01

if strategy.position_size > 0
    stopPriceLong = strategy.position_avg_price * (1 - stopLossLevel)
    tpPriceLong   = strategy.position_avg_price * (1 + takeProfitLevel)
    strategy.exit("Exit Long", from_entry="RSI MA Long", stop=stopPriceLong, limit=tpPriceLong)

if strategy.position_size < 0
    stopPriceShort = strategy.position_avg_price * (1 + stopLossLevel)
    tpPriceShort   = strategy.position_avg_price * (1 - takeProfitLevel)
    strategy.exit("Exit Short", from_entry="RSI MA Short", stop=stopPriceShort, limit=tpPriceShort)

// ─────────────────────────────────────────────────────────────────────────────────────
// 5. PLOT SIGNALS & LEVELS
// ─────────────────────────────────────────────────────────────────────────────────────
plot(maValue, color=color.yellow, linewidth=2, title="Moving Average")

plotchar(longCondition,  title="Long Signal",  char='▲', location=location.belowbar, color=color.green, size=size.tiny)
plotchar(shortCondition, title="Short Signal", char='▼', location=location.abovebar, color=color.red,   size=size.tiny)

// Plot Stop & TP lines
posIsLong  = strategy.position_size > 0
posIsShort = strategy.position_size < 0

plotStopLong = posIsLong ? strategy.position_avg_price * (1 - stopLossLevel) : na
plotTpLong   = posIsLong ? strategy.position_avg_price * (1 + takeProfitLevel): na
plotStopShort= posIsShort? strategy.position_avg_price * (1 + stopLossLevel) : na
plotTpShort  = posIsShort? strategy.position_avg_price * (1 - takeProfitLevel): na

plot(plotStopLong,  color=color.red,   linewidth=2, style=plot.style_line, title="Stop Loss Long")
plot(plotTpLong,    color=color.green, linewidth=2, style=plot.style_line, title="Take Profit Long")
plot(plotStopShort, color=color.red,   linewidth=2, style=plot.style_line, title="Stop Loss Short")
plot(plotTpShort,   color=color.green, linewidth=2, style=plot.style_line, title="Take Profit Short")


Berkaitan

Lebih lanjut