Momentum Simplex EA
No martingale, no grid!
This strategy is a simple momentum strategy that does not use any filters for news in contrast to Momentum Capture EA.
Therefore, the profit factor is a bit lower, but this EA has the advantage that it will trigger on every strong movement, not only after bank events. Thus, it is a good EA for diversification of the portfolio.
After a strong momentum, it only opens one position for each symbol that was triggered, so it can be run with a higher lot size compared to other momentum systems that open multiple orders.
It is a multi-currency EA that can be run from a single chart and is optimized for H1 timeframe and the following symbol list:
EURUSD, USDJPY, GBPUSD, USDCAD, USDCHF, EURAUD, EURCAD, EURGBP, EURJPY, GBPJPY, EURNZD, NZDUSD and XAUUSD.
I recommend using all pairs with 0.01 lots per $1000 balance. See tick data portfolio backtests in the Comments section.
Most of the symbols were also profitable on M30 timeframe in historic tests, but with a smaller profit factor. I did not run optimizations on other timeframes, if useAutoEntryAndExitSettings=true, the EA will always use the H1 settings, which might not be correct if you put it on a chart of another timeframe.
Be careful when using XAUUSD. Backtest XAUUSD at your broker before running it live!
Check the parameter lotsXAUUSD as your broker might have a different minimum lot size. The strategy will identify XAUUSD by searching for "XAUUSD" or "GOLD" within the symbol name. For XAUUSD, the pip will be automatically set to 0.1.
- symbols1 - list of symbols to be traded separated by a comma ",".
- symbols2 - additional list of trade symbols.
- lotType - can be either "fixed" or "increasing".
- lots - lot size used if lotType=fixed and also used as lot step size if lotType=increasing.
- lotsXAUUSD - different lot size/lot step can be defined for XAUUSD because the contracts can vary between brokers.
- equityPerStep - equity needed per lot step. For example, lots=0.01 with equityPerStep=1000 will trade 0.01 if equity is between $500 and $1500 and 0.02 if equity is between $1500 and $2500, etc.
- magic - individual magic number for this EA.
- pipInPoints - for 5-digit brokers, this should be 10, for 4-digit brokers, this should be 1.
- usePipsScaledToADR - if true, the pip value will be scaled to the average daily range, so 40 pips could then mean something between 20 and 80 normal pips.
- slippage - value used in OrderSend() function.
- timeFrame - timeframe used. The auto settings are optimized for H1 timeframe.
- comment - user-defined comment.
- useAutoEntryAndExitSettings - whether to use the internally stored entry and exit settings.
- periodATR - period of the ATR used to determine the average price move.
- lookbackBars - how many bars to look back for the price move.
- minMovementATR - minimum size of the movement measured in ATR.
- minMovementPips - minimum size of the movement measured in pips (or scaled pips if usePipsScaledToADR=true).
- takeProfit - profit target in pips (or scaled pips).
- minimumStopLoss - minimum initial stop loss.
- maximumStopLoss - maximum initial stop loss.
- trailingStop - trailing stop used to follow open positions. There are also additional filters influencing the actual stop loss.
- breakEvenAt - when to set SL to breakeven.
- breakEvenTo - where to set the SL if breakEvenAt is reached.
- checkExit - whether to check exit (break even and trailing stop) on every tick or only on new bars.
- minUpdateTimeMillis - in case there was no tick for some time (given in milliseconds), you can set an independent update interval.
- waitSecondsAfterBarClose - if don't want to trade on first tick of a bar.
- startHourGMT - when to start trading (GMT).
- endHourGMT - when to stop trading (GMT).
- mondayStartHourGMT - when to start on Monday (to avoid triggers by gaps over the weekend).
- fridayEndHourGMT - when to stop trading (GMT) on Fridays.
- closeAllPositionsOnFriday - whether to close positions before weekend.
- fridayCloseHourGMT - when to close in case closeAllPositionsOnFriday=true.
- waitForFirstBarToClose - if true, it will wait until the first bar is closed. If false, it might enter directly if you start the EA during a strong movement.
Also, there is now a parameter "checkExit" which determines whether the exit (break even and trailing stop) is checked on every tick or only on new bars.