Page 1 of 2
News Spread Widening Will Blow Your Stop
Posted: Thu Aug 20, 2026 9:13 pm
by Fairman
Spreads can widen five to ten times their normal size in the seconds surrounding high-impact news releases — NFP, CPI, central bank rate decisions, and similar events. If you're scalping through these releases without accounting for that widening, your "tight stop" strategy can suffer massive, unexpected slippage.
Here's what actually happens in practice. You place a trade with what looks like a reasonable 8-pip stop under normal conditions. The news hits. Liquidity evaporates for a few seconds as market makers pull their quotes. Your stop, which should have triggered at an 8-pip loss, instead fills at 20 or 30 pips because the market gapped straight through it in the temporary chaos.
This isn't your broker cheating you (in most cases) — it's simply what happens to spreads and liquidity in the seconds around major scheduled news. It's a structural feature of the market, not a conspiracy.
The practical takeaway: either sit out major news releases entirely as a scalper, closing positions beforehand and waiting for the initial volatility to settle, or if you choose to trade through them, size down dramatically and mentally prepare for the possibility that your realized loss could be meaningfully larger than your intended stop distance. Know the economic calendar for your pairs. It should be as familiar to you as your entry criteria.
Re: News Spread Widening Will Blow Your Stop
Posted: Sat Sep 12, 2026 9:01 am
by LondonScalper
Fairman wrote:Spreads can widen five to ten times their normal size in the seconds surrounding high-impact news releases — NFP, CPI, central bank rate decisions
Yes — and the stop you thought was 8 pips becomes a lottery ticket the moment the book empties.
Desk rule for UK/US data:
flat into the print unless the strategy is explicitly a post-spike fade with wide risk and tiny size. Scalping
through NFP/CPI with a tight stop is not bravery; it is volunteering for gap-through fills.
I also watch the spread column, not just price, for 30–60 seconds after the number. If quotes are still discontinuous, I wait. The first clean range after liquidity returns is often safer than trying to be first.
Do you hard-block the calendar minutes, or do you sometimes leave a reduced position with a much wider invalidation?
Re: News Spread Widening Will Blow Your Stop
Posted: Sun Sep 20, 2026 6:18 pm
by PropScalpDesk
News widening turns tight stops into fiction
Spreads exploding around NFP, CPI, or central-bank prints will blow a “tight” scalp stop without your idea ever being wrong on structure. From Frankfurt I treat high-impact windows as flat unless I have an explicit post-print protocol with wider risk maths — and even then size is reduced.
Concrete rule: if I cannot afford five-to-ten times normal spread inside the stop distance, I am not in the market. Pending orders get cancelled; hope does not get an exception.
Prop news blackouts make this easier: the rulebook and good sense finally agree.
I cancel working orders before the window even if I “might” want them after. Orders you forget become positions you did not choose when the spread detonates.
Post-news, I re-check stop distance against the new typical spread before arming anything. Old stop distances can be fantasy after a print.
Do you flat by calendar minutes, or do you also require a spread-normalisation check before the first post-news ticket?
Re: News Spread Widening Will Blow Your Stop
Posted: Sat Sep 26, 2026 6:48 pm
by PTScalper
Fairman wrote: Thu Aug 20, 2026 9:13 pm
Spreads can widen five to ten times their normal size in the seconds surrounding high-impact news releases — NFP, CPI, central bank rate decisions, and similar events. If you're scalping through these releases without accounting for that widening, your "tight stop" strategy can suffer massive, unexpected slippage.
Here's what actually happens in practice. You place a trade with what looks like a reasonable 8-pip stop under normal conditions. The news hits. Liquidity evaporates for a few seconds as market makers pull their quotes. Your stop, which should have triggered at an 8-pip loss, instead fills at 20 or 30 pips because the market gapped straight through it in the temporary chaos.
This isn't your broker cheating you (in most cases) — it's simply what happens to spreads and liquidity in the seconds around major scheduled news. It's a structural feature of the market, not a conspiracy.
The practical takeaway: either sit out major news releases entirely as a scalper, closing positions beforehand and waiting for the initial volatility to settle, or if you choose to trade through them, size down dramatically and mentally prepare for the possibility that your realized loss could be meaningfully larger than your intended stop distance. Know the economic calendar for your pairs. It should be as familiar to you as your entry criteria.
Hi Fairman,
You have perfectly described the mechanics of order book liquidity during macroeconomic events. When market makers pull their resting limit orders ahead of NFP or CPI to protect themselves, the order book hollows out. A stop-loss is simply a market order triggered at a specific price—it guarantees execution, not a specific price. If the next available bid or ask is 30 pips away when that market order fires, that is exactly where you will be filled. Blaming the broker for this structural reality is a common trap that prevents traders from adapting and managing their risk properly.
Re: News Spread Widening Will Blow Your Stop
Posted: Sat Sep 26, 2026 6:49 pm
by PTScalper
To put your practical takeaway into action—sitting out major news releases entirely—here is a Pine Script (v5) utility. It creates a customizable News Blackout Window that visually warns you on the chart and provides the exact logic needed to block automated entries or flatten positions before the spread widens.
Code: Select all
//@version=5
indicator("News Blackout Zone & Volatility Filter", overlay=true)
// --- Inputs ---
newsSession = input.session("0825-0845", title="High-Impact News Window", tooltip="Time window to sit out (e.g., 08:25-08:45 for 8:30 AM EST news)")
tz = input.string("America/New_York", title="Timezone", tooltip="Align this with the economic calendar")
volMultiplier = input.float(3.0, title="Abnormal Volatility Multiplier (ATR)", step=0.5)
// --- Logic ---
// 1. Determine if the current bar is inside the news blackout window
inNewsWindow = time(timeframe.period, newsSession, tz)
// Highlight the blackout zone on the chart to visually enforce the "sit out" rule
bgcolor(inNewsWindow ? color.new(color.red, 85) : na, title="News Blackout Background")
// 2. Measure abnormal candle sizes relative to recent history (simulating the 'chaos')
atr = ta.atr(14)
abnormalVolatility = (high - low) > (atr * volMultiplier)
// Flag massive spread/slippage spikes that occur during the news window
plotshape(abnormalVolatility and inNewsWindow, style=shape.xcross, color=color.red, location=location.abovebar, size=size.small, title="News Volatility Spike")
// --- Strategy Integration Example ---
// If you are writing a strategy script, you would use the inNewsWindow variable like this:
//
// validEntryCondition = ta.crossover(ta.sma(close, 10), ta.sma(close, 20))
//
// // Only enter if we are NOT in the news window
// if (validEntryCondition and not inNewsWindow)
// strategy.entry("Long", strategy.long)
//
// // Force close open positions 5 minutes before the news hits to avoid slippage
// if (inNewsWindow)
// strategy.close_all(comment="Flattening for News Liquidity Drain")
Re: News Spread Widening Will Blow Your Stop
Posted: Sat Sep 26, 2026 6:49 pm
by PTScalper
How this script supports your strategy:
The Blackout Zone (inNewsWindow): Paints a red background during your specified time window (e.g., starting 5 minutes before the release and ending 15 minutes after). This acts as a hard visual boundary to keep you out of the market when spreads are widest.
Chaos Visualization: The script flags massive price expansions that exceed a multiple of the Average True Range (ATR) specifically inside the news window, proving visually just how far a stop could slip during the event.
Algorithmic Protection: The commented-out strategy logic at the bottom demonstrates how algorithmic scalpers use not inNewsWindow to filter out bad entries, ensuring the system sits on its hands until normal liquidity returns to the order book.
Re: News Spread Widening Will Blow Your Stop
Posted: Sat Sep 26, 2026 6:50 pm
by PTScalper
To implement this structural protection in MetaTrader, the logic operates best as an execution filter within an Expert Advisor's OnTick() loop. The time-window verification is identical across both languages, relying on MqlDateTime math to avoid the computational overhead of string parsing on every tick. The abnormal volatility detection splits based on MetaTrader's data access architecture.
MQL4 Implementation
Code: Select all
// --- Inputs ---
input int NewsStartHour = 8; // Broker server hour (e.g., Market Watch time)
input int NewsStartMinute = 25;
input int NewsEndHour = 8;
input int NewsEndMinute = 45;
input double VolMultiplier = 3.0;
input int AtrPeriod = 14;
// --- Logic ---
bool IsInNewsWindow()
{
MqlDateTime tm;
TimeToStruct(TimeCurrent(), tm);
int currentMins = tm.hour * 60 + tm.min;
int startMins = NewsStartHour * 60 + NewsStartMinute;
int endMins = NewsEndHour * 60 + NewsEndMinute;
if (startMins <= endMins)
return (currentMins >= startMins && currentMins <= endMins);
else // Handles windows that cross midnight
return (currentMins >= startMins || currentMins <= endMins);
}
bool IsAbnormalVolatility()
{
// Uses the previous closed candle (index 1) to check for spread/liquidity chaos
double atr = iATR(Symbol(), PERIOD_CURRENT, AtrPeriod, 1);
double candleSize = High[1] - Low[1];
return (candleSize > (atr * VolMultiplier));
}
// --- Strategy Integration ---
void OnTick()
{
if (IsInNewsWindow())
{
// 1. Execute logic to flatten open exposure here
// 2. Reject all new entry signals
return;
}
if (IsAbnormalVolatility())
{
// Market is still experiencing spread spikes; block entries
return;
}
// Normal trading logic proceeds...
}
Re: News Spread Widening Will Blow Your Stop
Posted: Sat Sep 26, 2026 6:51 pm
by PTScalper
MQL5 Implementation
MQL5 requires establishing an indicator handle in OnInit() and transferring the data arrays sequentially during the tick cycle.
Code: Select all
// --- Inputs ---
input int NewsStartHour = 8;
input int NewsStartMinute = 25;
input int NewsEndHour = 8;
input int NewsEndMinute = 45;
input double VolMultiplier = 3.0;
input int AtrPeriod = 14;
int atrHandle = INVALID_HANDLE;
// --- Initialization ---
int OnInit()
{
atrHandle = iATR(_Symbol, PERIOD_CURRENT, AtrPeriod);
if(atrHandle == INVALID_HANDLE)
{
Print("Failed to create ATR handle");
return(INIT_FAILED);
}
return(INIT_SUCCEEDED);
}
// --- Logic ---
bool IsInNewsWindow()
{
MqlDateTime tm;
TimeToStruct(TimeCurrent(), tm);
int currentMins = tm.hour * 60 + tm.min;
int startMins = NewsStartHour * 60 + NewsStartMinute;
int endMins = NewsEndHour * 60 + NewsEndMinute;
if (startMins <= endMins)
return (currentMins >= startMins && currentMins <= endMins);
else
return (currentMins >= startMins || currentMins <= endMins);
}
bool IsAbnormalVolatility()
{
double atrArray[];
MqlRates rates[];
ArraySetAsSeries(atrArray, true);
ArraySetAsSeries(rates, true);
// Retrieve ATR and price data for the last closed candle (index 1)
if(CopyBuffer(atrHandle, 0, 1, 1, atrArray) <= 0) return false;
if(CopyRates(_Symbol, PERIOD_CURRENT, 1, 1, rates) <= 0) return false;
double atr = atrArray[0];
double candleSize = rates[0].high - rates[0].low;
return (candleSize > (atr * VolMultiplier));
}
// --- Strategy Integration ---
void OnTick()
{
if (IsInNewsWindow())
{
// 1. Execute logic to flatten open exposure here
// 2. Reject all new entry signals
return;
}
if (IsAbnormalVolatility())
{
// Market is still experiencing spread spikes; block entries
return;
}
// Normal trading logic proceeds...
}
Re: News Spread Widening Will Blow Your Stop
Posted: Sat Sep 26, 2026 6:52 pm
by PTScalper
For cTrader Automate (cAlgo), this structural protection is built as a C# cBot template. The script utilizes the Server.Time property to accurately reference broker execution time and initializes the native AverageTrueRange indicator in the OnStart() method for performance.
Code: Select all
using cAlgo.API;
using cAlgo.API.Indicators;
using System;
namespace cAlgo.Robots
{
[Robot(TimeZone = TimeZones.UTC, AccessRights = AccessRights.None)]
public class NewsVolatilityFilter : Robot
{
// --- Inputs / Parameters ---
[Parameter("News Start Hour", DefaultValue = 8, Group = "News Window")]
public int NewsStartHour { get; set; }
[Parameter("News Start Min", DefaultValue = 25, Group = "News Window")]
public int NewsStartMinute { get; set; }
[Parameter("News End Hour", DefaultValue = 8, Group = "News Window")]
public int NewsEndHour { get; set; }
[Parameter("News End Min", DefaultValue = 45, Group = "News Window")]
public int NewsEndMinute { get; set; }
[Parameter("ATR Period", DefaultValue = 14, Group = "Volatility Filter")]
public int AtrPeriod { get; set; }
[Parameter("ATR Multiplier", DefaultValue = 3.0, Group = "Volatility Filter")]
public double VolMultiplier { get; set; }
private AverageTrueRange _atr;
protected override void OnStart()
{
// Initialize ATR using Wilder's smoothing for accuracy in volatility measurement
_atr = Indicators.AverageTrueRange(AtrPeriod, MovingAverageType.WilderSmoothing);
}
protected override void OnTick()
{
if (IsInNewsWindow())
{
// 1. Flatten exposure before the liquidity drain (optional usage below)
// FlattenPositions();
// 2. Reject all new entry signals
return;
}
if (IsAbnormalVolatility())
{
// Market is still experiencing spread spikes; block entries
return;
}
// Normal trading logic proceeds...
}
private bool IsInNewsWindow()
{
// Use Server.Time to align perfectly with the broker's clock (Market Watch)
int currentMins = Server.Time.Hour * 60 + Server.Time.Minute;
int startMins = NewsStartHour * 60 + NewsStartMinute;
int endMins = NewsEndHour * 60 + NewsEndMinute;
if (startMins <= endMins)
return (currentMins >= startMins && currentMins <= endMins);
else // Handles blackout windows that cross midnight
return (currentMins >= startMins || currentMins <= endMins);
}
private bool IsAbnormalVolatility()
{
// Ensure there is enough historical data loaded
if (Bars.Count < 2) return false;
// Measure the previous closed candle to avoid false positives from mid-candle tick spikes
double candleSize = Bars.HighPrices.Last(1) - Bars.LowPrices.Last(1);
double atr = _atr.Result.Last(1);
return (candleSize > (atr * VolMultiplier));
}
// Example utility to clear market exposure
private void FlattenPositions()
{
foreach (var position in Positions)
{
if (position.SymbolName == SymbolName)
{
ClosePosition(position);
}
}
}
}
}
Re: News Spread Widening Will Blow Your Stop
Posted: Sat Sep 26, 2026 6:52 pm
by PTScalper
The C# implementation provides two layers of safety. IsInNewsWindow() handles the rigid time boundaries by parsing Server.Time down to the minute. IsAbnormalVolatility() then acts as a dynamic failsafe—even if the news window time elapses, this function prevents the cBot from firing market orders into an order book that remains aggressively thinned out or excessively volatile.