EMA Cross Trend Following Strategy

Author: ChaoZhang, Date: 2024-02-27 16:25:51



This strategy is a trend following strategy based on EMA crossovers to generate trading signals. It utilizes crossovers between fast and slow EMAs to determine changes in price trend and get into the market at the start of a trend and exit at the end, in order to profit.

Strategy Logic

The strategy employs a faster EMA with period 20, which reacts sensitively to price changes, and a slower EMA with period 50, which responds more smoothly.

When the faster EMA crosses above the slower EMA, it signals an upward price trend, indicating a buying opportunity. When the faster EMA crosses below the slower EMA, it signals a downward trend, indicating a selling opportunity.

Based on these signals, we can make corresponding trading decisions: go long when buy signal appears and go short when sell signal appears. When opposite signals show up, we close the corresponding long/short positions accordingly.

Advantage Analysis

  • Using EMA crossovers to determine trend changes is a relatively reliable technical indicator
  • Combination of faster and slower EMAs helps filter out some noise and track the trend
  • Simple and clear strategy logic, easy to understand and implement
  • Parameters can be tuned for optimization

Risk Analysis

  • EMAs have lagging effect, may miss best timing of price changes
  • Whipsaw effects can cause over-trading, increasing costs and slippage
  • Forced exit due to non-technical reasons may prevent timely liquidation


  • Optimize EMA parameters to find best fit
  • Add filtering conditions to avoid whipsaw losses
  • Set stop loss to control single trade loss

Optimization Directions

The strategy can be improved in the following aspects:

  1. Optimize EMA parameters by testing different combinations to find most profitable parameters.

  2. Add filtering conditions using other indicators like MACD, KDJ to avoid false signals. Only take trades when additional signals align.

  3. Incorporate stop loss mechanisms like fixed or trailing stop to control single trade loss.

  4. Consider combining with other strategies, like trend following to ride the momentum, or mean reversion to take reversal positions when price over-extends.


This is a very typical trend following strategy. It captures price trends effectively through simple fast and slow EMA crossovers. There are also some issues like lagging entry, whipsaw losses. But these problems all have solutions. Overall it provides a good strategy framework that can be further enhanced through parameter tuning, filtering, stop loss etc for good practical performance.

start: 2023-02-20 00:00:00
end: 2024-02-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]

strategy("Habitrade EMA Cross Strategy"), overlay=true

//Input for EMA lengths
emaShortLength = input.int(20, title="Short EMA Length")
emaLongLength = input.int(50, title="Long EMA Length")

//Calculate EMAs based on inputs
emaShort = ta.ema(close, emaShortLength)
emaLong = ta.ema(close, emaLongLength)

//Plot the EMAs
plot(emaShort, color=color.blue, linewidth=2, title="EMA Short")
plot(emaLong, color=color.orange, linewidth=2, title="EMA Long")

//Generate long and short signals
longCondition = ta.crossover(emaShort, emaLong)
shortCondition = ta.crossunder(emaShort, emaLong)

//Enter long positions
if (longCondition)
    strategy.entry("Long", strategy.long)

//Enter short positions
if (shortCondition)
    strategy.entry("Short", strategy.short)

//Close long positions
if (shortCondition)

//Clos short positions
if (longCondition)