Your liquidity just evaporated. Here's what happened.
During the 30 seconds before a Federal Reserve announcement, liquidity in major forex pairs doesn't decrease. It collapses. Bid-ask spreads widen from 1 pip to 10. Market depth vanishes. The number of willing buyers and sellers at your intended price drops from thousands to dozens.
Your EA was designed for normal conditions. It has no contingency for when normal ends.
When liquidity dries up and your order can't execute at your intended price, your EA gets a partial fill. Your bot ordered 1.0 lot. It got 0.3. The logic that assumes a full position is now broken. Your EA thinks it has exposure it doesn't have. It's trying to manage a position that's only partially in the market.
This is the moment your EA fails.
What liquidity is (and why news destroys it)
Liquidity is the number of buyers and sellers ready to trade at any given price right now. High liquidity means orders execute instantly at predictable prices. Low liquidity means your order sits, waiting, while spreads widen.
In normal forex hours, EUR/USD has thousands of participants. Your order to buy 1.0 lot at 1.0950 fills instantly. Then: FOMC announcement incoming in 60 seconds.
Participants vanish. The algos stop. Market makers pull their quotes. Spreads explode from 1 pip to 5, 10, 20 pips. Your order can't find 1.0 lot of sellers at your price anymore. Your broker fills what it can—0.4 lots at your price, 0.6 lots at worse prices, or nothing while it shops around.
Your EA gets a partial fill. Or no fill. Or a fill hours later when you've already moved on.
Here's the thing: liquidity evaporates during scheduled economic releases (unemployment, CPI, GDP, rate decisions). It also vanishes during unexpected shocks—bank failures, military escalations, flash crashes. Most DIY EAs don't account for any of these. They assume liquidity is a constant. It isn't.
Why your DIY bot breaks when liquidity dries up
Let's say your EA is designed to enter a 1.0 lot position when Signal A fires, set a stop loss 50 pips away, set a take profit 100 pips away, and close when Signal B fires.
This logic works when you get a full 1.0 lot fill immediately. But what happens when liquidity dries up?
Scenario 1: Partial Fill
Your EA orders 1.0 lot. It gets 0.4 lots at your entry price, 0.6 lots at a worse price minutes later. But your EA's logic doesn't know about the partial fill—most DIY bots don't distinguish between full and partial. It thinks it has 1.0 lot in the market. It calculates stop loss and take profit as if the full position is live. But half the position is either underwater or never entered. Your EA is managing phantom exposure.
Scenario 2: Stranded Trade
Your EA orders 1.0 lot. Liquidity is so dry that zero fills come through immediately. Your EA waits. Signal B (the exit signal) fires 10 minutes later. But your entry never filled. Now you've got an exit order with no position to exit. Orders are fighting each other. You're bleeding commissions. Your account is confused.
Scenario 3: Wrong Risk/Reward Math
Your EA enters 0.6 lots instead of 1.0. But your stop loss and take profit are calculated for 1.0 lot. Your dollar risk is now wrong. Your reward is now wrong. Your math is broken. Over a week of trades, this compounds into devastating losses.
One partial fill cascades into three bad trades. Your equity is lower. Your margin is tighter. Your next EA decision comes from a distorted baseline.
The cost of broken execution: account blowups
A trader with a $10,000 account runs a DIY EA during a news event. Liquidity dries up. The EA gets a 0.4-lot fill instead of 1.0. The EA doesn't notice. The stranded 0.6 lots never enter. Ten minutes later, the exit signal fires. The EA closes the 0.4 lot position (profit: $60). Exit logic runs anyway on the phantom position, eating commissions.
Cost of that one trade: $60 profit minus $25 in excess commissions equals $35 net. On a $10,000 account, that's a 0.35% loss in a single partial fill. Over 20 trading days, that's 7% of your account if it happens once per day.
But it gets worse. After the first stranded trade, the EA is in an unknown state. Its next trade assumes a full fill again. Another partial fill. Now the EA has two half-positions it thinks are full. Two sets of broken stop/take logic. Margin is bleeding.
By day 5, your $10,000 account is at $9,100. By day 10, it's at $8,200. One liquidity drought killed the account.
This happens to DIY traders every month during FOMC, employment reports, and unexpected news. The broker shows a partial fill. The trader didn't know. The EA certainly didn't account for it. Account equity evaporates over the next week as broken position logic compounds.
What professional EAs do differently
Custom-built EAs designed for real market conditions handle partial fills in several ways:
1. Detect partial fills immediately. Check actual filled volume against requested volume. If they don't match, trigger a contingency. Don't proceed with position management until the fill is complete or acknowledged as partial.
2. Queue unexecuted volume. If you ordered 1.0 and got 0.4, re-order the 0.6 at the next available moment. Or cancel it if the entry no longer makes sense. Don't leave stranded orders.
3. Adjust risk for actual fill size. If you entered 0.6 instead of 1.0, your stop loss and take profit must scale accordingly. A professional EA recalculates risk per trade based on actual fill, not intended fill.
4. Skip trades during news events. Don't trade 30 minutes before major economic releases. Check the economic calendar. Wait for liquidity to return. The best trade is the one you skip.
5. Use queue logic for news resilience. Instead of "enter 1.0 lot now," use "stack 4 x 0.25 lots with staggered entries." If the first fill is partial, the remaining orders execute naturally as liquidity returns. You're not fighting to get all the volume in one instant.
These aren't complicated. But they're what custom-built EAs do when designed for the real market, not a hypothetical one.
The difference between "running an EA" and "running an EA that survives"
Most traders think EA development is about finding the right signals. Buy when RSI is below 30. Sell when MACD crosses. If the signals are good, the EA is good.
That's backwards. Signals matter in backtest. Execution matters in live trading. An EA with decent signals but broken execution will blow the account. An EA with mediocre signals but ironclad execution will at least survive long enough to be fixed.
The traders who scale from $10k to $100k accounts didn't do it with better signal logic. They did it with bulletproof execution. They handle partial fills. They skip news events. They manage stranded trades. They adjust risk based on actual fills.
This is where custom EAs separate from DIY bots. A custom EA built for your exact strategy—with your exact entry/exit rules—can also include your exact execution guardrails. The difference is 5-10 lines of code in the order management section. But those lines save tens of thousands of dollars per year.
That's not theory. That's what the 660+ EAs we've built on MQL5 have in common: they don't lose money to execution errors.
What to do right now
If you're running a DIY EA or thinking about building one:
- Add a liquidity check. Before entering any trade, ask: is the spread wider than 5 pips? Is it 30 minutes before a scheduled economic release? If yes, don't trade.
- Add partial fill detection. After every order, check if you got the full amount. If not, decide: re-queue the remaining volume or cancel it. Don't leave it hanging.
- Add position size adjustment. If your stop loss is calculated as "50 pips away" but you got 0.6 lots instead of 1.0, your dollar risk is now 60% of intended. Adjust your take profit to keep the math correct.
- Test during news events. Don't just backtest. Run your EA live (demo account first) during a scheduled economic release. See what breaks. Fix it before trading real money.
If you want to skip the trial and error and deploy an EA that already handles liquidity shifts, market gaps, and news events—one built for your exact strategy with bulletproof execution—that's what we build. Most developers take weeks. We deliver a working demo in 45 minutes and the full EA in a few hours, including full backtest reports that show exactly how it performs during the news events that matter to you.
Key Takeaways
- Liquidity doesn't decrease during news events—it vanishes. Spreads widen and partial fills become inevitable.
- DIY bots break under partial fills because they assume full fills. Position logic, stop/take calculations, and margin math all become wrong.
- One unhandled partial fill cascades into three bad trades. Over a week, stranded trades can erode 5-10% of your account.
- Professional EAs detect partial fills, adjust risk accordingly, and skip trades during volatility spikes.
- The traders who scale to six-figure accounts didn't do it with better signals. They did it with execution that survives liquidity shocks.