This strategy calculates the 5-day, 10-day and 20-day exponential moving average (EMA) lines and uses the Super Trend indicator to generate buy and sell signals. It generates buy signals when the 5-day EMA crosses above the 10-day EMA and both the 5-day and 10-day EMA cross above the 20-day EMA. It generates sell signals when the 10-day EMA crosses below the 5-day EMA and both the 5-day and 10-day EMA cross below the 20-day EMA.
Solutions to Major Risks:
The strategy uses 5-day, 10-day and 20-day EMA together with Super Trend indicator. It is simple yet effective, performs great in trend identification and opportunity discovery. Highly customizable and extensible. Huge room for optimization via parameter tuning, adding more indicators and machine learning models to continuously improve strategy performance in more complex market environments.
/*backtest start: 2022-12-12 00:00:00 end: 2023-12-18 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © aadilpatel07 //@version=4 strategy("5-10-20 Cross", overlay=true) src = close, len1 = input(5, minval=1, title="EMA 1") len2 = input(10, minval=1, title="EMA 2") len3 = input(20, minval=1, title="EMA 3") mult = input(type=input.float, defval=2) len = input(type=input.integer, defval=14) [superTrend, dir] = supertrend(mult, len) ema1 = ema(src, len1) ema2 = ema(src, len2) ema3 = ema(src, len3) //EMA Color col1 = color.lime col2 = color.blue col3 = color.red //EMA Plots plot(series=ema1,color=col1, title="EMA1") plot(series=ema2,color=col2, title="EMA2") plot(series=ema3,color=col3, title="EMA3") //plot SuperTrend colResistance = dir == 1 and dir == dir[1] ? color.new(color.red, 100) : color.new(color.green, 100) colSupport = dir == -1 and dir == dir[1] ? color.new(color.green, 0) : color.new(color.green, 10) plot(superTrend, color = colResistance, linewidth=1) plot(superTrend, color = colSupport, linewidth=1) //longCondition = crossover(ema1, ema2) and crossover(ema1,ema3) and crossover(ema2,ema3) longCondition = ema1 > ema2 and ema1 > ema3 and ema2 > ema3 and ema2 < ema1 and dir == -1 if (longCondition) strategy.entry("My Long Entry Id", strategy.long) //shortCondition = crossover(ema2, ema1) and crossover(ema3,ema1) and crossover(ema3,ema2) shortCondition = ema1 < ema2 and ema1 < ema3 and ema2 < ema3 and ema2 > ema1 and dir == 1 if (shortCondition) strategy.entry("My Short Entry Id", strategy.short)