0bps

Strategy vault / Mean reversion

MA and EMA Crossover Trend Reversal Strategy

This strategy uses EMA and MA crossover to determine trend reversals, belonging to typical trend following strategies.

Author
ChaoZhang
Complexity
Starter · 45 lines
Parameters
6

Overview

This strategy uses EMA and MA crossover to determine trend reversals, belonging to typical trend following strategies.

Strategy Logic

  1. Calculate EMA and MA with specified periods respectively.

  2. EMA crossover above MA generates buy signals.

  3. EMA crossover below MA generates sell signals.

  4. Can set trading only in specific months and date ranges.

  5. Hold only one direction at a time, no reverse openings.

  6. Simple and clear rules easy to implement.

Advantages

  1. EMA and MA crossovers can capture trend reversal opportunities.

  2. Date filter avoids erroneous trades around major events.

  3. Holding one direction reduces unnecessary reverse trades.

  4. Higher capital usage efficiency.

  5. Suitable for short-term trend trading.

Risks

  1. Crossovers may have false signals causing unnecessary losses.

  2. No effective control over loss size per trade.

  3. Larger loss risks without a stop loss.

  4. Rigid date settings may miss trading opportunities.

  5. Inappropriate parameters negatively affect performance.

Enhancement

  1. Test different MA periods to find optimal values.

  2. Evaluate additional filters on crossovers.

  3. Incorporate stop loss to control loss per trade.

  4. Optimize date filter rules to maintain flexibility.

  5. Research proper take profit positioning.

  6. Consider dynamic position sizing.

Conclusion

This strategy trades EMA and MA crossover reversals simply and efficiently but has some room for improvement. Further refinements like parameter optimization and risk controls can turn it into a steady short-term system.

Parameters

NameDefaultWhat it controls
v_input_134emaLength
v_input_289maLength
v_input_38monthfrom
v_input_412monthuntil
v_input_5truedayfrom
v_input_631dayuntil

Source Pine Script

//@version=2
strategy(title = "MA + EMA Crossover Strategy ",shorttitle="eMA", overlay = true,default_qty_type = strategy.percent_of_equity, default_qty_value = 100,commission_type=strategy.commission.percent,commission_value=0.1,initial_capital=100000)


emaLength =input(34)

maLength = input(89)

ema=ema(close,emaLength)
ma=sma(close,maLength)

plot(ema,linewidth=3,color=green)
plot(ma,linewidth=3,color=red)
longCond= crossover(ema,ma)
shortCond=crossover(ma,ema)





monthfrom =input(8)
monthuntil =input(12)
dayfrom=input(1)
dayuntil=input(31)



if (  longCond    and  month>=monthfrom and month <=monthuntil and dayofmonth>=dayfrom and dayofmonth < dayuntil) 
    strategy.entry("LONG", strategy.long, stop=close, oca_name="TREND",  comment="LONG")
    
else
    strategy.cancel(id="LONG")
    



if ( shortCond   and month>=monthfrom and month <=monthuntil and dayofmonth>=dayfrom and dayofmonth < dayuntil ) 

    strategy.entry("SHORT", strategy.short,stop=close, oca_name="TREND",  comment="SHORT")
else
    strategy.cancel(id="SHORT")
    


Published by ChaoZhang on the FMZ strategy square · last modified 2023-09-20. Collected in the Quant Trading Vault. Unvalidated research: re-test with your own data and costs before trusting it.

Build this with AgenKit

A spec is not a trading system. Paste this into your coding agent and AgenKit runs a specialist team — architecture, test-first build, risk gates, review — with paper trading on by default.

in Claude Code, Cursor, Codex & 4 more
/agenkit build a production-grade trading bot with a backtest engine, risk controls and paper trading by default from strategies/MA-and-EMA-Crossover-Trend-Reversal-Strategy.md
  1. npx agenkit install engineering-kit in your project
  2. Paste the command into your agent and approve each phase
  3. Get tests, backtest, risk controls and a paper-trading switch

Understand it first

Before you run this, read the lesson behind the idea and how to backtest it honestly. Specs like this one are the survivors of an unknown number of trials; deflate their results accordingly.

Related specs

esc

Try , , or .

↑↓ move↵ open