Strategi EMA RSI Crossover menggabungkan indikator teknikal Exponential Moving Average (EMA) dan Relative Strength Index (RSI) untuk mengenal pasti isyarat beli atau jual yang berpotensi. Apabila garis EMA dan RSI bersilang, menunjukkan persimpangan, ia menunjukkan perubahan potensi dalam momentum pasaran. Sebagai contoh, persimpangan bullish berlaku apabila EMA yang lebih pendek melintasi di atas EMA yang lebih lama, disertai dengan persimpangan RSI di atas ambang tertentu, menandakan peningkatan yang berpotensi. Sebaliknya, persimpangan bearish menunjukkan penurunan apabila EMA yang lebih pendek melintasi di bawah EMA yang lebih lama, dengan RSI melintasi di bawah tahap yang ditentukan. Pedagang sering menggunakan strategi ini untuk memasuki atau keluar dari kedudukan berdasarkan isyarat persimpangan ini, bertujuan untuk memikat pada trend pasaran dan membalikkan.
Strategi EMA RSI Crossover adalah strategi trend yang mudah dan mudah digunakan yang menggabungkan penunjuk dari kedua-dua dimensi trend dan momentum untuk menilai arah pasaran secara komprehensif. Strategi ini juga menggunakan beberapa keadaan penapisan dan stop loss dinamik dan mengambil kaedah keuntungan untuk meningkatkan kualiti isyarat dan keupayaan kawalan risiko. Walau bagaimanapun, strategi ini mempunyai beberapa batasan, seperti kelewatan penunjuk dan perdagangan yang kerap. Oleh itu, dalam aplikasi praktikal, adalah perlu untuk mengoptimumkan dan meningkatkan lagi strategi berdasarkan ciri pasaran tertentu dan keutamaan risiko peribadi.
/*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)