Strategi ini menggunakan isyarat persilangan penunjuk RSI dan dua garis EMA untuk menentukan titik beli dan jual. Isyarat beli dihasilkan apabila harga penutupan jatuh di bawah kedua-dua EMA100 dan EMA20, dan nilai RSI di bawah 30. Isyarat jual dihasilkan apabila harga penutupan melanggar di atas kedua-dua EMA100 dan EMA20, dan nilai RSI di atas 70. Idea utama strategi ini adalah untuk menggunakan isyarat RSI untuk menilai keadaan overbought dan oversold, digabungkan dengan penghakiman trend garis EMA, untuk menangkap titik rendah dan tinggi turun naik pasaran dan melakukan operasi beli rendah dan jual tinggi.
RSI dan Dual EMA Crossover Signal Quantitative Strategy adalah strategi perdagangan kuantitatif yang mudah dan praktikal. Dengan menggabungkan penunjuk RSI dengan purata bergerak EMA, ia dapat menangkap tahap tinggi dan rendah dalam pasaran yang berfluktuasi dan menjalankan arbitraj dengan lebih baik. Walau bagaimanapun, strategi ini juga mempunyai beberapa batasan dan risiko, seperti kegagalan di pasaran trend, kekurangan pengurusan kedudukan dan langkah-langkah kawalan risiko, dll. Oleh itu, dalam aplikasi praktikal, ia perlu dioptimumkan dan ditingkatkan dengan sewajarnya mengikut ciri pasaran dan pilihan peribadi untuk meningkatkan ketahanan dan keuntungan strategi. Strategi ini boleh digunakan sebagai strategi peringkat kemasukan untuk perdagangan kuantitatif untuk dipelajari dan digunakan, tetapi ia perlu diperlakukan dengan berhati-hati dan risiko mesti dikawal dengan ketat.
/*backtest start: 2024-03-01 00:00:00 end: 2024-03-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("RSI-EMA100&20 Buy/Sell Signal", overlay=true) // Input parameters rsiLength = input.int(14, "RSI Length") emaCloseLength = input.int(100, "EMA Length (Closing Price)") emaLowLength = input.int(20, "EMA Length (Low Price)") oversoldLevel = input.int(30, "Oversold Level") overboughtLevel = input.int(70, "Overbought Level") // Calculate RSI rsi = ta.rsi(close, rsiLength) // Calculate EMA of closing price emaClose = ta.ema(close, emaCloseLength) // Calculate EMA of low price emaLow = ta.ema(low, emaLowLength) // Determine overbought and oversold conditions isOversold = rsi <= oversoldLevel isOverbought = rsi >= overboughtLevel // Plot RSI and its EMAs plot(rsi, color=color.blue, title="RSI") plot(emaClose, color=color.green, title="EMA 100 (Closing Price)") plot(emaLow, color=color.orange, title="EMA 20 (Low Price)") // Strategy entry condition: Closing price is below both EMAs and RSI is less than or equal to oversold level buySignal = close < emaClose and close < emaLow and isOversold // Plot buy signals plotshape(series=buySignal, style=shape.triangleup, location=location.abovebar, color=color.green, size=size.small) // Strategy entry if (buySignal) strategy.entry("Buy", strategy.long) // Strategy exit condition: Price crosses above both EMAs and RSI is greater than or equal to overbought level sellSignal = close > emaClose and close > emaLow and isOverbought // Plot sell signals plotshape(series=sellSignal, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small) // Strategy exit if (sellSignal) strategy.entry("Sell", strategy.short) // Plot sell signals plotshape(series=sellSignal, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small) // Strategy exit if (sellSignal) strategy.entry("Sell", strategy.short)