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

Momentum Capture EA

The EA tries to detect the start of a new trend after bank events and speeches. It has multi-currency and multi-timeframe capabilities.

No martingale, no grid, no scalping!

The EA does not trade every day, but it usually is good in catching the big movements without too much risk during range trading periods.

After detecting strong price action and momentum, it will open positions in trend direction as well as pending orders for a possible reversal.

For each timeframe there can be one open order. So you can adjust risk by not choosing all four timeframes.

In general, all combinations of USD, EUR, GBP, CAD, AUD are tradable. For CHF I only recommend the pairs USDCHF and EURCHF.

Personally, I use the following symbols:


The EA only needs to be placed on one chart on any timeframe. The best one is EURUSD because it has the most ticks.

Web requests have to be allowed for the EA to get news data. Go to: Tools -> Options -> Expert Advisors and add the following addresses:

http://currencystrength.de and http://backup.currencystrength.de

The minimum balance depends on the number of symbols and on the maximum position settings. I recommend $1600-$2000 with maxStop/maxMarketOrdersAllSymbols=16.

Please contact me if there are problems with backtesting or if you need assistance in live trading.

For backtests, it is very important to use news data and the correct GMT offset. The EA does not trade in the minute after news, so the news data is not used for unrealistic news trading. But it is important to determine whether the movement is fundamentally driven. News data from 2010-2017 is already included in the EA file, but for future data you have to download a data file.

Please see this blog post for instructions, detailed backtests and a list of the complete settings: https://www.mql5.com/en/blogs/post/704849


  • symbolsNormal - comma separated list of symbols to trade.
  • symbolsIgnoreUSDevents - These symbols will not use USD events.
  • symbolsIgnoreEURevents - These symbols will not use EUR events.
  • symbolsIgnoreJPYevents - These symbols will not use JPY events.
  • tradeM5 - whether to use the M5 timeframe.
  • magicM5 - magic number for trades entered on M5 timeframe signals.
  • tradeM15 - whether to use the M15 timeframe.
  • magicM15 - magic number for trades entered on M15 timeframe signals.
  • tradeM30 - whether to use the M30 timeframe.
  • magicM30 - magic number for trades entered on M30 timeframe signals.
  • tradeH1 - whether to use the H1 timeframe.
  • magicH1 - magic number for trades entered on H1 timeframe signals.
  • lotType - "fixed" or "increasing", where the lot size is calculated automatically.
  • fixLots - fixed lot size in case lotType = fixed.
  • lotStep - how much the lot size should be increased every equityPerStep (if lotType = increasing).
  • equityPerStep - how much equity is needed for one lot step (if lotType = increasing).
  • maxStop/maxMarketOrdersAllSymbols - To limit the total number of open market and pending stop orders for all symbols.
  • pipInPoints - for 5-digit brokers, this should be 10, for 4-digit brokers 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.
  • useAutoEntryAndExitSettings - whether to use the internally stored entry and exit settings.
  • waitTimeAfterNews - how long to wait after a news event.
  • momentumStrengthMarket/Pending: Trend strength for entry.
  • stopLoss - maximum stop loss used.
  • takeProfit - take profit for trade exit. Usually the strategy will exit via trailing stop.
  • trailingStop - trailing stop in pips.
  • trailingStart - when to start the trailing stop.
  • trailingStep - step size to modify the stop loss.
  • breakEvenAt - when to set the breakeven stop loss.
  • breakEvenTo - how many pips above/below the entry price the breakeven stop loss should be placed.
  • startHourGMT - when to start trading (GMT).
  • endHourGMT - when to stop trading (GMT).
  • fridayEndHourGMT - when to stop trading (GMT) on Fridays.
  • skipWeekend - whether to skip Saturday and Sunday.
  • TesterGMToffset - if you do not use tick data in GMT format, then you need to specify the GMT offset in the tester if the news filter is used.
2018.01.25 10:30 

Two trades so far... one minus 37 pips other 150 pips plus..looks good to me !

will update in a month or so !

Frank B
2018.01.14 21:38 

Looks promissing and a good and friendly support. Will update later

Andrew Brown
2018.01.12 12:47 

The first few trades were quite good, but of cause I will need a few months to evaluate performance.

But I think the strategy makes sense and it has potential to outperform other momentum EAs.

The only negative thing is that it does not trade very often. So patience is needed and trust in big moves that will come eventually.

Version 1.15 - 2018.03.09
Removed parameter smallerBreakEvenAndTrailingStop (will be replaced by autoScaleFactor).

Added parameters:

- closeOnlyMode: if you do not want to open new positions or afraid that your VPS might crash, you could run it with closeOnlyMode on a second VPS.

- maxSpreadPips: avoid trading during extremely high spread.

- closePendingOrdersInSameDirection: close pending buy orders if there is a signal for a market buy order, same for sell orders.

- autoAllowCPIonSomeSymbols: auto settings allow trading CPI events on those pairs: EURUSD, EURAUD, GBPUSD and AUDUSD.

- autoScaleFactor: this parameter is for a quick way of diversification. It will scale SL, TP, BE, trailing start, trailing stop by the factor specified. It will also scale the entry strength parameters, but not as much because those are more sensitive.
Version 1.14 - 2018.02.12
No changes to the logic. But I switch to saving bar data internally to avoid any missing bar data on non-chart symbols.
Version 1.13 - 2018.02.07
Three new parameters:

baseComment - to customize the comment.

smallerBreakEvenAndTrailingStop - this will reduce the break even, trailing stop and take profit of all auto settings (only if useAutoEntryAndExitSettings=true). It has a lower historic profit factor, but it is better at unclear events where the price reverses after a short burst.

useNewsFilter - You can set this to false if you want to manually enable the EA at an event that is not shown in the economic calendar.

Also I added a call to a backup server for news data in case the default server is down for some reason. You have to add both of the following addresses to allow web requests:


Right now the backup server is still empty, but will be created during the next week.
Version 1.12 - 2018.01.22
Only small fixes:
- TesterGMToffset now also changes the fridayCloseHourGMT as it should.
- The auto settings were optimized using Dukascopy data with 6 bars per week (a small bar on Sunday), so ADR and settings depending on it might be different on a broker with only 5 bars.
The EA will now detect whether the broker does not have Sunday bars and apply a small correction to the settings.
Version 1.11 - 2018.01.16
This is a major update:

- News data is now included in the ex4 file. So backtest is possible from 2010 to 2017 without additional data file. But the file will be needed for future data.

- There is now a variable to use automatic settings for the default symbols (useAutoEntryAndExitSettings=true). Only entry and exit settings will be automatic, time settings etc. will still apply. The symbols have to be in a format like EURUSD, EURUSD.lmx, eurusd.spa, but symbols with delimiter like EUR/USD or eur-usd will not work (never seen those at any broker so far, contact me if you have special symbols).

- Some of the parameters are now available for customers to do their own optimizations:
waitTimeAfterNews: how long to wait after the news event time.
momentumStrengthMarket: strength of the movement.
momentumStrengthPending: strength of the movement for pending orders in the opposite direction.
maxStopOrderDistance: maximum distance of pending orders.
expirationHours: expiration hour of pending orders.
maxAllowedMovement: Max allowed movement to open positions. To avoid trading on crazy situations like the CHF spike on 2015.01.15.
closeAllPositionsOnFriday: this will reduce risk over weekend with almost the same historic performance.
tradeAfterGDP: to trade after GDP data (for historic test, not recommended to use it)
tradeAfterCPI: to trade afer CPI data
tradeAfterNFP: to trade after NFP