EMA RSI 크로스오버 전략은 잠재적 인 구매 또는 판매 신호를 식별하기 위해 기하급수적인 이동 평균 (EMA) 및 상대적 강도 지수 (RSI) 기술 지표를 결합합니다. EMA와 RSI 라인이 교차 할 때 교차를 나타냅니다. 예를 들어, 더 짧은 EMA가 더 긴 EMA를 넘어서고, RSI가 특정 임계 이상의 상승 추세를 나타냅니다. 반대로, 하향 크로스오버는 더 짧은 EMA가 더 긴 EMA를 넘어서고, RSI가 지정된 수준을 넘어서면 하락 추세를 나타냅니다. 거래자는 종종이 크로스오버 신호를 기반으로 포지션을 입력하거나 출출하는 전략을 사용합니다. 시장 추세와 역행에 자본을 목표로합니다.
EMA RSI 크로스오버 전략은 시장 방향을 포괄적으로 평가하기 위해 트렌드 및 모멘텀 차원의 지표를 결합한 간단하고 사용하기 쉬운 트렌드 추적 전략이다. 이 전략은 또한 신호 품질과 위험 통제 기능을 향상시키기 위해 일부 필터링 조건과 동적 스톱 로스 및 수익 방식을 사용한다. 그러나 전략에는 지표 지연 및 빈번한 거래와 같은 몇 가지 제한이 있습니다. 따라서 실제 응용에서는 특정 시장 특성 및 개인 위험 선호도에 따라 전략을 더 이상 최적화하고 개선해야합니다.
/*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)