
Strategi ini berdasarkan kepada RSI dan dua garis EMA untuk menentukan titik jual beli. Ia menghasilkan isyarat beli apabila harga tutup jatuh di bawah EMA100 dan EMA20 dan nilai RSI di bawah 30. Ia menghasilkan isyarat jual apabila harga tutup menembusi EMA100 dan EMA20 dan nilai RSI di atas 70.
Strategi kuantifikasi RSI dengan tanda silang EMA ganda adalah strategi perdagangan kuantifikasi yang mudah dan praktikal, dengan menggabungkan indikator RSI dengan garis rata EMA, dapat menangkap tinggi dan rendah dalam keadaan gegaran, untuk melakukan arbitraj perbezaan harga. Tetapi strategi ini juga mempunyai beberapa batasan dan risiko, seperti kegagalan dalam keadaan trend, kekurangan pengurusan kedudukan dan langkah-langkah kawalan risiko, dan lain-lain. Oleh itu, dalam aplikasi sebenar, pengoptimuman dan penambahbaikan yang sesuai diperlukan berdasarkan ciri-ciri pasaran dan keutamaan individu untuk meningkatkan kestabilan dan keuntungan strategi.
/*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)