
EMA dan RSI crossover strategi dengan menggabungkan indeks bergerak rata-rata (EMA) dan indeks relatif kuat (RSI) dua indikator teknis, untuk mengidentifikasi potensial membeli atau menjual sinyal. Ketika EMA dan RSI crossover, menunjukkan bahwa pergerakan pasar mungkin berubah. Misalnya, ketika EMA periode yang lebih pendek melewati EMA periode yang lebih lama, sementara RSI melewati salah satu titik, menunjukkan kemungkinan tren naik, yang disebut crossover bullish. Sebaliknya, ketika EMA periode yang lebih pendek melewati EMA periode yang lebih lama, sementara RSI melewati salah satu titik, menunjukkan kemungkinan tren menurun, yang disebut crossover bullish.
Strategi EMA dan RSI adalah strategi pelacakan tren yang sederhana dan mudah digunakan, yang dapat menilai arah pasar secara komprehensif dengan menggabungkan indikator dua dimensi tren dan momentum. Selain itu, strategi ini menggunakan beberapa kondisi filter dan metode stop loss dinamis untuk meningkatkan kualitas sinyal dan kemampuan pengendalian risiko. Namun, strategi ini juga memiliki beberapa keterbatasan, seperti masalah lag indikator, perdagangan sering, dan sebagainya.
/*backtest
start: 2023-05-28 00:00:00
end: 2024-06-02 00:00:00
period: 1d
basePeriod: 1h
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/
// © pritom980
//@version=5
strategy("EMA RSI Cross", overlay=true, margin_long=100, margin_short=100)
// add RSI
rsi_period = input.int(7,"RSI Period")
rsi_val = ta.rsi(close[1],rsi_period)
plot(rsi_val, color=color.blue, linewidth=2, title="RSI")
buyRsiFlag = rsi_val < 20
sellRsiFlag = rsi_val > 80
// add EMA
ema = ta.ema(close, 50)
plot(ema, color=color.red, linewidth=2, title="EMA")
// check buy
// buy when the price is below ema
buyFlag = ema > close ? true : false
// sell when the price is above ema
sellFlag = ema < close ? true : false
bgcolor(buyFlag and buyRsiFlag ? color.green : na )
bgcolor(sellFlag and sellRsiFlag ? color.red : na )
// Check if current candle's body is bigger than previous candle's body and of opposite color
is_body_bigger_long = math.abs(close - open) > math.abs(close[1] - open[1]) and close > open != close[1] > open[1]
greenCandle = close > close[1]
redCandle = close < close[1]
// Mark the candle
bgcolor(is_body_bigger_long and greenCandle and buyFlag ? color.blue : na, transp=70)
// ENTRY ---------------------
// Input for ATR period
atr_length = input(14, title="ATR Length")
// Calculate ATR
atr_value = ta.atr(atr_length)
// Calculate stop loss and take profit levels
candleBody = math.abs(close-open)
slDist = atr_value + candleBody
stop_loss_long = close - slDist
take_profit_long = close + (1.2 * slDist)
stop_loss_short = high + slDist
take_profit_short = high - (1.2 * slDist)
// Entry and exit conditions
if (buyFlag and buyRsiFlag and strategy.opentrades >= 0 and greenCandle)
strategy.entry("Long", strategy.long)
strategy.exit("Take Profit/Stop Loss", "Long", stop=stop_loss_long, limit=take_profit_long)
// Entry and exit conditions
if (sellFlag and sellRsiFlag and strategy.opentrades <= 0 and redCandle)
strategy.entry("Short", strategy.short)
strategy.exit("Take Profit/Stop Loss", "Short", stop=stop_loss_short, limit=take_profit_short)