$ £ ¥
¥ £ $

Amazing Expert Advisor

Amazing Forex expert advisor is not a common expert advisor which would use some implemented trading strategy and earn you money automatically. It is a "news trader". A form of automated breakout trader which only works on the set date and time — the date and time of the Forex related news, like interest rates decision. You give it the day, hour and minutes of the upcoming news release and it determines the best breakout range, stop-loss, take-profit, and trailing stop-loss to use in the current market conditions. This EA is available for MT4 and MT5.

The Amazing expert advisor operates by following these six steps:

  1. Wait for SecBPO seconds before the news announcement time, calculating the recent high and low values using the range of CTCBN + 1 candles.
  2. Place two pending orders: a stop buy order at the recent high + spread + N points with a given stop-loss and TP distance; a stop sell order at the recent low - N points with a given stop-loss and TP distance.
  3. Continue to modify the pending orders based on the changing recent high/low values until SecBMO seconds before the news.
  4. If OCO is set to true, delete the opposite pending order once the other pending order is triggered.
  5. STWAN seconds after the news release, delete remaining pending orders.
  6. Monitor the resulting buy or sell position (if any) and adjust its stop-loss according to the breakeven and trailing stop settings given via input parameters.

Obviously enough, no backtest results can be included with it. It is recommended o use it if you are big into Forex news trading and prefer fundamental analysis over technical analysis.

Input parameters


  • NewsDateTime — the date and time of the news announcement to trade.
  • EntryDistance (default = 100) — the entry distance from recent high/low in points.
  • StopLoss (default = 200) — the stop-loss value in points.
  • TakeProfit (default = 200) — the take-profit value in points.
  • CTCBN (default = 0) — the number of candles to check before news for High & Low in addition to the latest (current) candle.
  • SecBPO (default = 300) — the number of seconds before the news release to place pending orders.
  • SecBMO (default = 0) — the number of seconds before the news release to stop modifying the pending orders.
  • STWAN (default = 150) — the number of seconds after the news release to delete untriggered pending orders.
  • OCO (default = true) — one-cancels-other; if true, the EA will cancel the opposite pending order right after the other one is triggered.
  • BEPips (default = 0) — the number of pips in profit when EA should move the stop-loss to breakeven. Zero value means that the breakeven feature is disabled.
  • TrailingStop (default = 0) — the trailing stop value. Set to zero to disable.


  • UseATR (default = false) — if true, ATR indicator determines the stop-loss and take-profit levels.
  • ATR_Period (default = 14) — the period of the ATR indicator, which is used for stop-loss and take-profit calculation. Works only if UseATR = true.
  • ATR_Multiplier_SL (default = 1) — a multiplier for the ATR indicator's value to get the stop-loss value. Works only if UseATR = true.
  • ATR_Multiplier_TP (default = 5) — a multiplier for the ATR indicator's value to get the take-profit value. Works only if UseATR = true.

Money management

  • Lots (default = 0.1) — basic lot size for fixed position sizing. Used when MM = false.
  • MM (default = true) — if true, flexible position sizing is enabled.
  • Risk (default = 1) — risk tolerance in percentage of account balance/equity. Works only if MM = true. This input parameter is ignored if UseMoneyInsteadOfPercentage is set to true.
  • FixedBalance (default = 0) — if set to non-zero value, it is used instead of account balance/equity for position size calculation. Works only if MM = true.
  • MoneyRisk (default = 0) — risk tolerance in account currency. Works only if MM = true. Requires UseMoneyInsteadOfPercentage set to true.
  • UseMoneyInsteadOfPercentage (default = false) — if true, position size is calculated based on risk amount given in account currency (MoneyRisk) instead of balance/equity percentage risk (Risk). Works only if MM = true.
  • UseEquityInsteadOfBalance (default = false) — if true, position size is calculated based on account equity instead of balance. Works only if MM = true. Ignored if UseMoneyInsteadOfPercentage = true.


  • Slippage (default = 3) — the acceptable price slippage in pips.
  • TradeLog (default = "Am_Log_") — the prefix to use for the log file name. Empty means no log file.
  • Commentary (default = "Amazing") — the commentary for positions opened by this EA.


Below you can see the example of a setup with the Amazing EA with its orders ready before the news. It employs ATR-based stop-losses and risk-based position sizing. As you can see, it is rather verbose, displaying its various parameters and calculations as the chart commentary in the top-left corner:

Amazing setup example right before the news

Download (ver. 1.04, 2023-09-15)

Download Amazing expert advisor for MT4 Download zipped Amazing expert advisor for MT4 Download zipped Amazing expert advisor for MT5

This EA is ECN-safe. You can freely use this expert advisor with ECN (market execution) brokers as it either does not apply any stop-loss and take-profit levels in its trading orders or sends only pending orders.


If you are interested in Forex news trading, you might want to try our News Trader expert advisor that uses a slightly different approach to trading on important news announcements.



Warning! Before you ask basic questions regarding installation of the expert advisors, please, read this MT4 Expert Advisors Tutorial to get the elementary knowledge on handling them.

Do you have your own trading results or any other remarks regarding this expert advisor?

Discuss Amazing with other traders and MQL programmers on the experts forums.


1.04 - 2023-09-15

  • Added risk-based position sizing: if money management is turned on (the MM parameter), the EA will now calculate position size based on risk rather than as a proportion of the account size as it did before.
  • Added an option for ATR-based stop-loss and take-profit.
  • Added the EntryDistance parameter to make the entry breakout distance modifiable.
  • Added an input parameter to adjust the stop-loss distance.
  • Changed all values to employ points rather than pips. This can be especially useful when trading CFDs.
  • Removed the Slippage parameter, which was doing nothing as the EA only employs pending orders.

1.03 - 2022-05-02

  • Refactored the source code.
  • MT5 version will now recognize its orders and positions by the Magic number.
  • Changed the way the news date/time is given — a precise date/time should now be set.
  • Changed the log file to be optional.
  • Added detailed input parameters.
  • Added error messages to some potential error situations.
  • Fixed potential problems with price normalization.
  • Switched to standard error description library.