This strategy uses the slope direction and cross relationships among multiple EMAs to determine trend direction, for non-stop trend trading. It can stay long or short at all times.
Calculate 3 groups of EMAs - fast, medium and slow EMAs.
When fast EMA crosses above medium EMA, and medium EMA slope turns positive, long signal is generated.
When fast EMA crosses below medium EMA, and medium EMA slope turns negative, short signal is generated.
Go long when price crosses above slow EMA, and short when price crosses below slow EMA.
EMA slope relationships reflect trend changes. Price crossovers confirm entry.
Multiple EMAs improve accuracy in trend judgment.
Fast, medium and slow EMAs reasonably distinguish trend and consolidation.
EMA slope changes give early hints on trend changes.
Price crossovers further confirm to avoid false breakouts.
Always keeping a position fully captures trend opportunities.
Relying solely on EMAs carries large position risks during range-bound periods.
Improper EMA parameters may miss turning points.
Unable to determine trend strength, risks premature reverse entries.
No effective single trade loss control.
Test different EMA combinations to find optimal parameters.
Add other indicators like MACD to determine strength.
Add stop loss mechanisms for risk control.
Evaluate trend strength to avoid premature reverse entries.
Optimize position sizing for capital management.
Temporarily stop trading when trend becomes choppy.
The strategy sensibly uses EMA combos to determine trend. But sole reliance on EMA has limitations, leaving large optimization space to incorporate more indicators. Risk control mechanisms are also needed to improve stability. Overall the framework is scientifically designed, and has the potential to grow into a strong trend trading strategy after continuous improvements.
/*backtest start: 2023-08-20 00:00:00 end: 2023-09-19 00:00:00 period: 6h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("EMA Slope + EMA Cross Strategy (by ChartArt)", shorttitle="CA_-_EMA_slope_cross", overlay=true) // ChartArt's EMA Slope + EMA Cross Strategy // // Version 1.0 // Idea by ChartArt on March 10, 2018. // // This strategy uses divergences between // three moving averages and their slope // directions as well as crosses between // the price and the moving averages // to switch between long/short positions. // // The strategy is non-stop in the market // and always either long or short. // // In addition the moving averages are colored // depending if they are trending up or down. // // List of my work: // https://www.tradingview.com/u/ChartArt/ // Input price = input(close) MA1_Length = input(2,step=1, title="EMA 1 Length") MA2_Length = input(4,step=1, title="EMA 2 Length") MA3_Length = input(20,step=1, title="EMA 3 Length") switch1=input(true, title="Show Bar Color?") switch2=input(true, title="Show Moving Averages?") // Calculation MA1 = ema(price, MA1_Length) MA2 = ema(price, MA2_Length) MA3 = ema(price, MA3_Length) // Strategy long = crossunder(price, MA3) or ( change(price)<0 and change(MA1)<0 and crossunder(price,MA1) and change(MA2)>0 ) short = crossover(price, MA3) or ( change(price)>0 and change(MA1)>0 and crossover(price,MA1) and change(MA2)<0 ) if long strategy.entry("Long", strategy.long, comment="Long") if short strategy.entry("Short", strategy.short, comment="Short") // Strategy Alert alertcondition(long, title='EMA Slope + EMA Cross Strategy, Long Alert', message='Go Long!') alertcondition(short, title='EMA Slope + EMA Cross Strategy, Short Alert', message='Go Short!') // MA trend bar color up = change(MA2)>0 and change(MA3)>0 dn = change(MA2)<0 and change(MA3)<0 bar_color = up?green:dn?red:blue barcolor(switch1?bar_color:na) // MA trend output color MA2_color = change(MA2)>0?lime:change(MA2)<0?red:blue MA3_color = change(MA3)>0?lime:change(MA3)<0?red:blue // MA output EMA2 = plot(switch2?MA2:na, title="EMA 2", style=linebr, linewidth=2, color=MA2_color) EMA3 = plot(switch2?MA3:na, title="EMA 3", style=linebr, linewidth=4, color=MA3_color) fill(EMA2, EMA3, color=silver, transp=50) //plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)