Dual-Timeframe EMA Crossover Long-Short Strategy

Author: ChaoZhang, Date: 2024-03-22 15:01:39



This strategy is based on the crossover signals of exponential moving averages (EMAs) on two different timeframes for long and short trading. When the shorter-timeframe EMA crosses above the longer-timeframe EMA, it generates a long signal; when the shorter-timeframe EMA crosses below the longer-timeframe EMA, it generates a short signal. The strategy utilizes trend information from different timeframes, confirming the trend of the longer timeframe with the shorter timeframe, to capture the main market trend.

Strategy Principles

The strategy uses EMA crossover signals on two different timeframes to capture market trends:

  1. The EMA crossover signal on the longer timeframe (default: 2 hours) is used to determine the main trend direction. When the short-term EMA (default: 5 periods) crosses above the long-term EMA (default: 20 periods), it indicates an uptrend; conversely, it indicates a downtrend.

  2. The EMA crossover signal on the shorter timeframe (default: 3 minutes) is used to confirm the main trend direction and trigger trading signals. When the short-term EMA crosses above the long-term EMA and the longer timeframe is in an uptrend, it generates a long signal; when the short-term EMA crosses below the long-term EMA and the longer timeframe is in a downtrend, it generates a short signal.

By combining trend information from two timeframes, the strategy can enter the market in the early stages of a trend and exit in a timely manner when the trend reverses, capturing the main market trend.

Advantage Analysis

  1. Dual-timeframe trend confirmation: The strategy utilizes trend information from different timeframes, confirming the trend of the longer timeframe with the shorter timeframe, which helps improve the reliability of trend judgment and reduce false signals.

  2. Strong trend-following ability: The EMA indicator has a good trend-following ability and can generate timely signals in the early stages of a trend, helping the strategy enter the market promptly.

  3. Flexible parameter adjustment: The timeframe and EMA period parameters of the strategy can be flexibly adjusted according to market characteristics and trading styles to adapt to different market environments.

  4. Easy to implement: The strategy logic is clear, and the code implementation is relatively simple, making it easy to understand and apply.

Risk Analysis

  1. Parameter optimization risk: The performance of the strategy depends on the choice of parameters such as timeframes and EMA periods. Improper parameter settings may lead to poor strategy performance. Therefore, it is necessary to optimize and test the parameters to ensure robust performance of the strategy in different market environments.

  2. Choppy market risk: In choppy market conditions, EMA crossover signals may occur frequently, causing the strategy to generate multiple false signals and frequent trades, reducing strategy profitability. Other filtering conditions, such as trading volume and volatility indicators, can be introduced to reduce false signals in choppy markets.

  3. Trend reversal risk: When the market trend suddenly reverses, the strategy may delay exiting positions, leading to increased losses. Appropriate stop-loss conditions, such as fixed percentage stop-loss or trailing stop-loss, can be set to control the maximum loss of a single trade.

Optimization Directions

  1. Introduce more timeframes: Based on the existing dual-timeframe approach, more timeframes can be introduced for EMA crossover signals, such as daily and weekly timeframes, to further confirm the trend direction and improve signal reliability.

  2. Combine with other technical indicators: EMA crossover signals can be combined with other technical indicators, such as the Relative Strength Index (RSI) and Average True Range (ATR), to improve signal quality and filtering effects.

  3. Optimize entry and exit rules: Entry and exit rules can be optimized. For example, after an EMA crossover signal occurs, wait for a certain confirmation period before entering a position; or set a certain buffer zone when an opposite signal appears before exiting a position, to reduce the impact of false signals.

  4. Dynamic parameter adjustment: Strategy parameters can be dynamically adjusted according to changes in market conditions. For example, use longer EMA periods when the trend is clear, and use shorter EMA periods in choppy markets, to adapt to different market environments.


The dual-timeframe EMA crossover long-short strategy captures the main market trend by combining trend information from different timeframes, using the shorter timeframe to confirm the trend of the longer timeframe. The strategy has advantages such as strong trend-following ability, flexible parameter adjustment, and easy implementation. However, it also faces risks such as parameter optimization, choppy markets, and trend reversals. By introducing more timeframes, combining with other technical indicators, optimizing entry and exit rules, and dynamically adjusting parameters, the performance and robustness of the strategy can be further improved. In practical application, it is necessary to appropriately optimize and adjust the strategy according to specific market characteristics and trading styles to obtain better trading results.

start: 2023-03-16 00:00:00
end: 2024-03-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]

strategy('EMA Crossover Multi-Timeframe Strategy', shorttitle='EMA Cross MTF', overlay=true)

// Kullanıcı girdileri
inputTimeframe1 = input.timeframe('120', title='Daha Uzun Zaman Dilimi')
inputTimeframe2 = input.timeframe('3', title='Daha Kısa Zaman Dilimi')
inputShortTermEma = input.int(5, title='Kısa Vadeli EMA Periyodu', minval=1)
inputLongTermEma = input.int(20, title='Uzun Vadeli EMA Periyodu', minval=1)

// EMA hesaplamaları
shortTermEma = ta.ema(close, inputShortTermEma)
longTermEma = ta.ema(close, inputLongTermEma)

// Daha uzun zaman dilimi için EMA crossover'larını kontrol et
longHourEma5 = request.security(syminfo.tickerid, inputTimeframe1, shortTermEma)
longHourEma20 = request.security(syminfo.tickerid, inputTimeframe1, longTermEma)
longHourCrossover = longHourEma5>longHourEma20 //ta.crossover(fourHourEma5, fourHourEma20)
longHourCrossunder = longHourEma5< longHourEma20//ta.crossunder(fourHourEma5, fourHourEma20)

// Daha kısa zaman dilimi için EMA crossover'larını kontrol et
shortMinuteEma5 = request.security(syminfo.tickerid, inputTimeframe2, shortTermEma)
shortMinuteEma20 = request.security(syminfo.tickerid, inputTimeframe2, longTermEma)
shortMinuteCrossover = ta.crossover(shortMinuteEma5, shortMinuteEma20)
shortMinuteCrossunder = ta.crossunder(shortMinuteEma5, shortMinuteEma20)

// Alım ve satım sinyalleri
longSignal = longHourCrossover and shortMinuteCrossover
shortSignal = longHourCrossunder and shortMinuteCrossunder

// Sinyalleri çiz
plotshape(series=longSignal, title='Al', location=location.belowbar, color=color.new(color.green, 0), style=shape.labelup, text='AL')
plotshape(series=shortSignal, title='Sat', location=location.abovebar, color=color.new(color.red, 0), style=shape.labeldown, text='SAT')

// Görselleştirme
plot(shortTermEma, "Kısa Vadeli EMA", color=color.rgb(154, 200, 238), linewidth=2)
plot(longTermEma, "Uzun Vadeli EMA", color=color.rgb(61, 32, 165), linewidth=2)

// Strateji
if (longSignal)
    strategy.entry("Long", strategy.long, comment="Long1")
   // strategy.exit("Exit Long", "Long", stop=longStopPrice, limit=longTargetPrice, comment="Exit Long1")
if (shortSignal)
    strategy.entry("Short", strategy.short, comment="Short1")
    //strategy.exit("Exit Short", "Short", stop=shortStopPrice, limit=shortTargetPrice, comment="Exit Short2")