• Overview
  • Reviews
  • Comments (3)
  • What's new

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 contains automatically loaded settings for the following symbols and time frames:



M15 time frame: EURUSD, EURAUD and XAUUSD.

Just attach the EA to one H1, one M30 and one M15 chart. Make sure that every time frame uses a different magic number and only contains symbols from the lists above.

I recommend using all pairs with 0.01 lots per $1000 balance. See tick data portfolio backtests in the Comments section.

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.


General Settings

  • symbols1/2 - two lists of symbols to be traded separated by a comma ",".
  • 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.
  • slippagePoints - value used in OrderSend() function (in points).
  • maxSpreadPips - If the spread is below this value (in pips) the entry will be allowed (old pending orders will stay active and not be closed on high spread).
  • maxSpreadRelativeToAverage - If the spread is smaller than the average spread multiplied with this factor, the trade will be allowed even if the spread is larger than maxSpreadPips (but not if it is larger than 2*maxSpreadPips).
  • comment - user-defined comment.

Entry Settings

  • useAutoEntryAndExitSettings - whether to use the internally stored entry and exit settings.
  • minMomentumStrength- minimum strength of the momentum, usually between 1.7 and 2.7.
  • minMovementPips - minimum size of the movement measured in pips (or scaled pips if usePipsScaledToADR=true).

Exit Settings

  • 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.

Time settings

  • 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.
No reviews
Version 3.0 - 2018.09.10
- Added a parameter useOptimizedTradingHours. If it is set to true it will only trade during the hours that were most profitable in the backtest.
Version 2.0 - 2018.06.22
- Auto settings were added for M30 and M15 time frame to increase the trading activity and diversification.

- Now you can use auto settings, but at the same time change some of the settings. For example, if you want auto settings but only change smaller trailing stop and take profit, you can now set parameters trailingStop and takeProfit to the value you want to use. But all symbols will then use the same value! If the value is 0 (new default), auto settings will be used.
Note that due to ADR scaling the values might not be exactly the value you set in normal pips.

- ADR calculation was changed to have a better consistency between accounts. It is now calculated only from H1 bars, not D1 bars. Therefore, it does not matter if the broker has 5 or 6 daily bars.
From this version on it is best to backtest the EA on H1 timeframe to make sure that the data is available.

- There are now two spread parameters to allow for a bit larger spread on symbols with a larger average spread:
maxSpreadPips: If the spread is below this value (in pips) the trade will be allowed.
maxSpreadRelativeToAverage: If the spread is smaller than the average spread multiplied with this factor, the trade will be allowed even if the spread is larger than maxSpreadPips (but not if it is larger than 2*maxSpreadPips).
Version 1.4 - 2018.02.12
No changes to the logic. But I switch to saving all bar closes internally to avoid any missing bar data on non-chart symbols.
Version 1.3 - 2018.02.07
Fixed a bug with time shift of bars from other symbols other than the chart symbol.

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.