Sumber dimuat naik... memuat...

Strategi Dagangan RSI Neural Dinamis Mengikut Trend

Penulis:ChaoZhang, Tarikh: 2025-01-17 14:19:08
Tag:SMARSI

 Dynamic Neural RSI Trend-Following Trading Strategy

Ringkasan

Strategi ini adalah sistem perdagangan kuantitatif berdasarkan purata bergerak, penunjuk RSI, dan stop loss yang mengikuti. Ia menggabungkan trend berikut dan penunjuk momentum dari analisis teknikal, mencapai perdagangan yang terkawal risiko melalui syarat masuk dan keluar yang ketat. Logik terasnya adalah untuk mencari peluang oversold dalam trend naik dan melindungi keuntungan menggunakan berhenti yang mengikuti.

Prinsip Strategi

Strategi ini menggunakan Purata Bergerak Sederhana (SMA) 200 hari sebagai asas untuk penilaian trend, digabungkan dengan Indeks Kekuatan Relatif (RSI) untuk menjana isyarat perdagangan. 1. Menggunakan SMA 200 hari untuk menilai trend utama, hanya mempertimbangkan kedudukan panjang apabila harga di atas purata 2. Mengenal pasti isyarat oversold apabila RSI jatuh di bawah ambang yang telah ditetapkan (default 40) 3. Memicu entri panjang apabila kedua-dua syarat dipenuhi dan tempoh menunggu sejak keluar terakhir (default 10 hari) telah berlalu 4. Melindungi keuntungan semasa memegang kedudukan melalui stop loss (default 5%) 5. Keluar dari kedudukan apabila harga pecah di bawah hentian atau SMA 200 hari

Kelebihan Strategi

  1. Menggabungkan trend dan momentum penapisan berganda untuk meningkatkan ketepatan perdagangan
  2. Menggunakan mekanisme hentian untuk mengunci keuntungan dengan berkesan
  3. Tetapkan selang perdagangan untuk mengelakkan perdagangan yang kerap
  4. Keupayaan penyesuaian parameter yang kuat untuk menyesuaikan diri dengan persekitaran pasaran yang berbeza
  5. Logik perdagangan yang jelas, mudah difahami dan dilaksanakan
  6. Pengiraan mudah dengan kecekapan pengiraan yang tinggi

Risiko Strategi

  1. Kelewatan purata bergerak boleh menyebabkan isyarat masuk dan keluar tertunda
  2. Indikator RSI boleh menghasilkan isyarat palsu di pasaran pelbagai
  3. Peratusan perhentian trailing tetap mungkin tidak sesuai untuk semua persekitaran pasaran
  4. Pengoptimuman parameter boleh membawa kepada overfit
  5. Mungkin mengalami pengeluaran yang ketara di pasaran yang sangat tidak menentu

Arahan Pengoptimuman Strategi

  1. Memperkenalkan peratusan penangguhan yang disesuaikan dengan turun naik
  2. Tambah penunjuk jumlah sebagai pengesahan tambahan
  3. Ganti purata bergerak mudah dengan purata bergerak eksponen untuk kepekaan yang lebih baik
  4. Menggabungkan penunjuk sentimen pasaran untuk mengoptimumkan masa dagangan
  5. Membangunkan mekanisme pengoptimuman parameter dinamik
  6. Tambah mekanisme pengesahan strategi pelbagai jangka masa

Ringkasan

Ini adalah strategi perdagangan kuantitatif dengan struktur lengkap dan logik yang jelas. Ia mengejar pulangan yang stabil sambil mengawal risiko dengan menggabungkan beberapa penunjuk teknikal. Walaupun terdapat ruang untuk pengoptimuman, rangka kerja asas mempunyai kepraktisan dan kepelbagaian yang baik. Strategi ini sesuai untuk pelabur jangka menengah hingga panjang dan menyesuaikan diri dengan baik dengan persekitaran pasaran yang berbeza.


/*backtest
start: 2025-01-09 00:00:00
end: 2025-01-16 00:00:00
period: 15m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}]
*/

//@version=5
strategy("200 SMA Crossover Strategy", overlay=false)

// Define inputs
smaLength = input.int(200, title="SMA Length")
rsiLength = input.int(14, title="RSI Length")
rsiThreshold = input.float(40, title="RSI Threshold")
trailStopPercent = input.float(5.0, title="Trailing Stop Loss (%)")
waitingPeriod = input.int(10, title="Waiting Period (Days)")

// Calculate 200 SMA
sma200 = ta.sma(close, smaLength)

// Calculate RSI
rsi = ta.rsi(close, rsiLength)

// Plot the 200 SMA and RSI
plot(sma200, color=color.blue, linewidth=2, title="200 SMA")
plot(rsi, color=color.purple, title="RSI", display=display.none)

// Define buy and sell conditions
var isLong = false
var float lastExitTime = na
var float trailStopPrice = na

// Explicitly declare timeSinceExit as float
float timeSinceExit = na(lastExitTime) ? na : (time - lastExitTime) / (24 * 60 * 60 * 1000)
canEnter = na(lastExitTime) or timeSinceExit > waitingPeriod

buyCondition = close > sma200 and rsi < rsiThreshold and canEnter

if (buyCondition and not isLong)
    strategy.entry("Buy", strategy.long)
    trailStopPrice := na
    isLong := true

// Update trailing stop loss if long
if (isLong)
    trailStopPrice := na(trailStopPrice) ? close * (1 - trailStopPercent / 100) : math.max(trailStopPrice, close * (1 - trailStopPercent / 100))

// Check for trailing stop loss or sell condition
if (isLong and (close < trailStopPrice or close < sma200))
    strategy.close("Buy")
    lastExitTime := time
    isLong := false

// Plot buy and sell signals
plotshape(series=buyCondition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(series=(isLong and close < trailStopPrice) or close < sma200, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")


Berkaitan

Lebih lanjut