Sumber daya yang dimuat... Pemuatan...

Strategi perdagangan yang mengikuti tren RSI saraf dinamis

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

 Dynamic Neural RSI Trend-Following Trading Strategy

Gambaran umum

Strategi ini adalah sistem perdagangan kuantitatif yang didasarkan pada moving average, indikator RSI, dan trailing stop loss. Ini menggabungkan indikator tren berikut dan momentum dari analisis teknis, mencapai perdagangan yang dikendalikan risiko melalui kondisi masuk dan keluar yang ketat. Logika inti adalah untuk mencari peluang oversold dalam uptrends dan melindungi keuntungan menggunakan trailing stop.

Prinsip Strategi

Strategi ini menggunakan 200 hari Simple Moving Average (SMA) sebagai dasar untuk penilaian tren, dikombinasikan dengan Relative Strength Index (RSI) untuk menghasilkan sinyal perdagangan. 1. Menggunakan SMA 200 hari untuk menilai tren utama, hanya mempertimbangkan posisi panjang ketika harga di atas rata-rata 2. Mengidentifikasi sinyal oversold ketika RSI jatuh di bawah ambang batas yang telah ditetapkan (default 40) 3. Memicu entri panjang ketika kedua kondisi terpenuhi dan masa tunggu sejak keluar terakhir (default 10 hari) telah berlalu 4. Melindungi keuntungan selama memegang posisi melalui stop loss trailing (default 5%) 5. Keluar posisi ketika harga pecah di bawah trailing stop atau SMA 200 hari

Keuntungan Strategi

  1. Menggabungkan trend dan momentum double filtering untuk meningkatkan akurasi perdagangan
  2. Menggunakan mekanisme trailing stop untuk mengunci keuntungan secara efektif
  3. Menetapkan interval perdagangan untuk menghindari perdagangan yang sering
  4. Kemampuan pengaturan parameter yang kuat untuk beradaptasi dengan lingkungan pasar yang berbeda
  5. Logika perdagangan yang jelas, mudah dimengerti dan dilaksanakan
  6. Perhitungan sederhana dengan efisiensi komputasi tinggi

Risiko Strategi

  1. Lag rata-rata bergerak dapat menyebabkan sinyal masuk dan keluar tertunda
  2. Indikator RSI dapat menghasilkan sinyal palsu di pasar rentang
  3. Stop trailing persentase tetap mungkin tidak cocok untuk semua lingkungan pasar
  4. Optimasi parameter dapat menyebabkan overfitting
  5. Mungkin mengalami penurunan yang signifikan di pasar yang sangat volatile

Arah Optimasi Strategi

  1. Memperkenalkan persentase volatilitas-adaptif trailing stop
  2. Tambahkan indikator volume sebagai konfirmasi tambahan
  3. Ganti rata-rata bergerak sederhana dengan rata-rata bergerak eksponensial untuk kepekaan yang lebih baik
  4. Menggabungkan indikator sentimen pasar untuk mengoptimalkan waktu perdagangan
  5. Mengembangkan mekanisme optimasi parameter dinamis
  6. Tambahkan mekanisme konfirmasi strategi multi-frame

Ringkasan

Ini adalah strategi perdagangan kuantitatif dengan struktur lengkap dan logika yang jelas. Ini mengejar pengembalian yang stabil sambil mengendalikan risiko dengan menggabungkan beberapa indikator teknis. Meskipun ada ruang untuk optimasi, kerangka kerja dasar memiliki kepraktisan dan ekstensibilitas yang baik. Strategi ini cocok untuk investor jangka menengah hingga panjang dan beradaptasi dengan baik dengan lingkungan pasar yang berbeda.


/*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 banyak