Building an External News Filter: How to Stop Your EA Before CPI Hits

Building an External News Filter: How to Stop Your EA Before CPI Hits

22 January 2026, 22:59
Mauricio Vellasquez
0
33

Building an External News Filter: How to Stop Your EA Before CPI Hits


There is a recurring nightmare for every Algo-Trader. You backtest a trend-following strategy. The equity curve looks like a straight line to the moon. You launch it on a Live Account.

For three weeks, it prints money. Then, on a random Friday at 8:30 AM New York time (NFP release), the market whipsaws 100 pips in 3 seconds.

Your EA, oblivious to the news, tries to buy the breakout. The spread widens to 20 pips. You get filled at the top. The price crashes. Account blown.

MetaTrader 5 is a beast for execution, but it isn't great at parsing complex web data like Economic Calendars. Python, however, is perfect for it.

In this tutorial, I will show you the architecture of a "Hybrid News Filter": A Python script that scrapes calendar data and "talks" to your MQL5 EA to pause trading during high-impact events.

The Architecture: The "Satellite" Approach

We don't want to burden the MT5 terminal with heavy HTML parsing. Instead, we use a Python script running in the background as a "Satellite."

  1. Python Script: Scrapes Forex Factory (or uses an API) to find High Impact News (Red Folders).
  2. The Bridge: Python writes a simple text file ( news.txt ) into the MT5 "Common" folder.
  3. MQL5 EA: Reads this file every minute. If a news event is imminent, it sets a global variable TradingAllowed = false .

Step 1: The Python Scraper (The "Eyes")

We need a script that checks the calendar and calculates the "Minutes Until Impact." Here is a simplified version of the logic using pandas .

# PYTHON LOGIC import pandas as pd from datetime import datetime, timedelta ``` def check_news():
    # 1. Fetch Calendar Data (Pseudo-code)
    df = get_economic_calendar()

    # 2. Filter for High Impact (Red Folder) & USD/EUR pairs
    high_impact = df[(df['impact'] == 'High') & (df['currency'].isin(['USD','EUR']))]

    # 3. Check time difference
    now = datetime.utcnow()
    for index, row in high_impact.iterrows():
        time_diff = row['date'] - now
        minutes = time_diff.total_seconds() / 60

        # 4. Write "STOP" if news is within 30 mins
        if 0 < minutes < 30:
            with open(MT5_COMMON_PATH + "news_signal.txt", "w") as f:
                f.write("STOP")
            return

    # Else, all clear
    with open(MT5_COMMON_PATH + "news_signal.txt", "w") as f:
        f.write("GO")
```

Step 2: The MQL5 Listener (The "Brain")

Now, your EA needs to listen. In the OnTick() function, we check the file status.

// MQL5 CODE bool IsNewsEvent() {    int file_handle = FileOpen("news_signal.txt", FILE_READ|FILE_TXT|FILE_COMMON);    if(file_handle != INVALID_HANDLE)    {       string signal = FileReadString(file_handle);       FileClose(file_handle); ```       if(signal == "STOP")
      {
         Print("⚠️ NEWS DETECTED: Pausing Trading.");
         return true;
      }
   }
   return false;
} ```

The Problem with "DIY" Solutions

While this architecture works, it introduces Fragility.

  • What if the Python script crashes?
  • What if Forex Factory changes their HTML structure (breaking the scraper)?
  • What if there is a file permission lock error?

In professional trading, Simplicity is Reliability. You do not want your entire risk management system to depend on an external script running on a VPS.

The Professional Solution: Native Integration

This is why, in the Ratio X Trader's Toolbox, we didn't use external Python scripts. Instead, we built the news filter logic natively inside the MLAI 2.0 Engine.

The EA itself connects directly to calendar APIs using `WebRequest` and parses the data internally. It doesn't rely on external files. It creates a "Hard Shield" around high-impact events.


Upgrade to a Native News Filter

You can try to maintain a Python scraping server, or you can secure a license for a system that handles this complexity for you. The Ratio X Trader's Toolbox protects your capital from news spikes automatically.

⚠️ The Price is Increasing Next Week

Due to the new MLAI 2.0 Engine (Prop-firm Verified) features, the price of the Lifetime License is increasing from $197 to $247 starting next week.

🎁 Developer's Offer: Since you are interested in the technical side of trading, I am offering you a direct discount.

SECURE THE NATIVE FILTER

Use Coupon Code:

MQLFRIEND20

Get 20% OFF + The Prop-Firm Verification Presets (Free)

>> GET LIFETIME ACCESS (~$157) <<  

The Guarantee

Test the Toolbox during the next major news release (on Demo). If it doesn't protect your account exactly as described, use our 7-Day Unconditional Guarantee to get a full refund.

Trade safe, trade smart. Mauricio



About the Author

Mauricio Vellasquez is the Lead Developer of Ratio X. He specializes in integrating advanced data systems with MQL5 to create robust, institutional-grade trading tools.

Risk Disclaimer

Trading financial markets involves a substantial risk of loss and is not suitable for every investor. The results shown in this article are from real users, but past performance is not indicative of future results. All trading involves risk.