The “Trend Following Strategy Based on EMA and SMA Crossover” is a trend-following trading strategy based on the crossover of Exponential Moving Averages (EMAs) and Simple Moving Averages (SMAs). This strategy aims to identify potential buy and sell signals by capturing moments when the short-term EMA crosses above the long-term SMA.
This strategy generates trading signals based on two conditions:
When both conditions are true, a buy signal is generated. When both conditions are false, a sell signal is generated.
By comparing EMA and SMA crossovers across different timeframes, this strategy comprehensively judges the trend direction and generates trading signals. The short-term EMA reflects price changes more sensitively while the long-term SMA has better trend filtering capability. When the short-term EMA crosses above the long-term SMA, it indicates a slight trend reversal and generates a buy signal. Conversely, when the short-term EMA crosses below the long-term SMA, it indicates a trend reversal and generates a sell signal.
Adding the 4-hour EMA and SMA crossover filters out short-term noise and makes trading signals more reliable.
This strategy has the following advantages:
There are also some risks with this strategy:
Risks can be managed through incorporating stop loss/take profit, parameter optimization etc.
Some ways to enhance this strategy:
In summary, this is a basic trend following strategy using simple EMA and SMA crossover rules. It can be improved via parameter optimization, signal filtering etc. to adapt better and improve strategy performance.
/*backtest start: 2023-12-17 00:00:00 end: 2024-01-12 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("EMA and SMA Crossover Strategy", shorttitle="Shashank Cross", overlay=true) // Condition 1: Latest EMA (Close, 5) crossed above Latest SMA (Close, 20) ema5 = ta.ema(close, 5) sma20 = ta.sma(close, 20) condition1 = ta.crossover(ema5, sma20) // Condition 2: [0] 4-hour EMA ([0] 4-hour Close, 5) crossed above [0] 4-hour SMA ([0] 4-hour Close, 20) ema5_4h = request.security(syminfo.tickerid, "240", ta.ema(close, 5)) sma20_4h = request.security(syminfo.tickerid, "240", ta.sma(close, 20)) condition2 = ta.crossover(ema5_4h, sma20_4h) // Combine both conditions for a buy signal buy_signal = condition1 and condition2 // Plotting signals on the chart plotshape(buy_signal, color=color.green, style=shape.labelup, location=location.belowbar, size=size.small, text="Buy Signal") // Strategy logic if (buy_signal) strategy.entry("Buy", strategy.long) // Exit long position on the next bar at market price if (ta.barssince(buy_signal) == 1) strategy.close("Exit") // You can add more code for stop-loss, take-profit, etc., as per your strategy.template: strategy.tpl:40:21: executing "strategy.tpl" at <.api.GetStrategyListByName>: wrong number of args for GetStrategyListByName: want 7 got 6