MT4 processes orders one at a time
Posted: Sat Oct 31, 2026 1:46 am
MetaTrader 4 handles trading operations in a single trade thread per terminal. If two EAs on the same terminal send orders at the same moment, one waits for the other. If an order is waiting on the server, a second one can fail with "trade context busy" (error 146).
For manual traders that rarely matters. For anyone running multiple strategies on one terminal, especially ones that fire at news time or at the open of a bar, it can mean delayed or missed entries.
Several ways around it exist. Running separate terminals for each strategy gives each its own thread. Adding a random delay of a few milliseconds avoids exact collisions. Checking the busy flag before sending and retrying a few times also helps, as long as the logic doesn't chase a price that has moved on.
Even a single EA that opens a basket of orders in a loop can run into it, because each order has to wait for confirmation before the next one goes out. A basket of five trades can take two seconds to complete.
MT5 improved the situation with more flexible handling, but the principle that trade requests are queued still applies.
Another quirk is that the order of arrival isn't always the order of processing when several terminals connect to the same account. Two terminals sending orders at the same moment can have them processed in either sequence, which matters for strategies that depend on one order being in place before the next.
Keeping a single terminal responsible for all trading on an account removes the ambiguity.
Has "trade context busy" ever cost an entry during a fast market?
For manual traders that rarely matters. For anyone running multiple strategies on one terminal, especially ones that fire at news time or at the open of a bar, it can mean delayed or missed entries.
Several ways around it exist. Running separate terminals for each strategy gives each its own thread. Adding a random delay of a few milliseconds avoids exact collisions. Checking the busy flag before sending and retrying a few times also helps, as long as the logic doesn't chase a price that has moved on.
Even a single EA that opens a basket of orders in a loop can run into it, because each order has to wait for confirmation before the next one goes out. A basket of five trades can take two seconds to complete.
MT5 improved the situation with more flexible handling, but the principle that trade requests are queued still applies.
Another quirk is that the order of arrival isn't always the order of processing when several terminals connect to the same account. Two terminals sending orders at the same moment can have them processed in either sequence, which matters for strategies that depend on one order being in place before the next.
Keeping a single terminal responsible for all trading on an account removes the ambiguity.
Has "trade context busy" ever cost an entry during a fast market?