News Trading & Event Filters
High-impact news can destroy a week's profits in seconds. Learn to protect your EA from scheduled chaos.
High-Impact Events to Watch
| Event | Affects | Volatility | Typical Move | Frequency |
|---|---|---|---|---|
| Non-Farm Payrolls (NFP) | USD pairs | Extreme | 50-150 pips | Monthly (1st Friday) |
| FOMC Rate Decision | USD pairs | Extreme | 50-200 pips | 8x per year |
| ECB Rate Decision | EUR pairs | Very High | 30-100 pips | 8x per year |
| CPI (Inflation) | Respective currency | High | 30-80 pips | Monthly |
| GDP Release | Respective currency | High | 20-60 pips | Quarterly |
| Employment Data | Respective currency | Medium-High | 20-50 pips | Monthly |
Filter Implementation Strategies
Time-Based Blackout
Stop trading X minutes before and after scheduled news
// News blackout filter
input int MinutesBeforeNews = 30;
input int MinutesAfterNews = 60;
bool IsNewsBlackout() {
datetime newsTime = GetNextNewsTime();
datetime now = TimeCurrent();
if (now >= newsTime - MinutesBeforeNews*60 &&
now <= newsTime + MinutesAfterNews*60) {
return true;
}
return false;
}- • Simple to implement
- • Predictable behavior
- • May miss opportunities
- • Requires news calendar
Spread-Based Filter
Pause trading when spread exceeds normal levels
// Spread spike detection
input double MaxSpreadMultiplier = 2.0;
double normalSpread = 1.2; // pips
bool IsSpreadSafe() {
double currentSpread = MarketInfo(Symbol(), MODE_SPREAD) * Point;
return (currentSpread <= normalSpread * MaxSpreadMultiplier);
}- • Adapts to real conditions
- • Catches unexpected events
- • May be too late for open positions
- • Spread can spike instantly
Volatility Filter
Reduce or pause trading during abnormal volatility
// ATR-based volatility filter
input double MaxATRMultiplier = 1.5;
double normalATR;
bool IsVolatilitySafe() {
double currentATR = iATR(Symbol(), PERIOD_H1, 14, 0);
return (currentATR <= normalATR * MaxATRMultiplier);
}- • Catches all volatility, not just scheduled
- • Dynamic adaptation
- • Lagging indicator
- • May miss trend starts
Position Management During News
Open positions before news
- Close all positions X minutes before news
- Tighten stop losses to break-even or small profit
- Reduce position size by 50%
- Set guaranteed stops (if broker offers)
Pending orders during news
- Cancel all pending orders before news
- Widen entry zones to account for slippage
- Use stop orders only (not limits)
- Keep orders but with wider stops
Trading immediately after news
- Wait for spread normalization (check every minute)
- Wait for initial spike to settle (15-30 min)
- Trade only in direction of news outcome
- Use reduced position size for first post-news trade
News Filter Checklist
Common Mistakes
No news filter at all
Why: Stop losses get blown through during news. Spreads widen 10-20x normal.
Fix: Implement at minimum a time-based blackout for high-impact events.
Only filtering the release moment
Why: Volatility often starts before and continues long after the exact time.
Fix: Use 30 min before / 60 min after as minimum blackout window.
Relying on broker stop losses during news
Why: Slippage can be massive. Your 20 pip stop becomes 50+ pips.
Fix: Close positions before news or accept potential slippage in your risk calc.
Using same settings for all news types
Why: NFP is not the same as a minor economic indicator.
Fix: Categorize news by impact. Only filter high/extreme impact events.
Build a News-Aware EA
Create trading bots with built-in news filters and event protection.
Start Building