Does anyone know the exact sequence of order
execution from the time it’s placed by the trader (via OrderSend()) to the time it gets executed
on the trade server?
My current understanding is that once any order
(pending or market) is placed by the trader on MT4 client, it gets passed to
the MT4 server (trade server) which will place the order in an execution queue.
The trade server will then execute market orders from the queue while pending
orders will be only executed if they hit target price.
Is this correct?
I’m asking because I want to know if it is possible
to catch spikes early during news release by placing pending orders well in
advance of the news so I can get higher priority in execution queue.
For example, when there’s a sudden price jump,
say two consecutive ticks 20 pips apart, does that mean:
1- The jump in
price is what’s given to the trade server by the liquidity providers. There’s
no way the server can execute orders within this price gap, or
2- The price jump
is a result of the trade server executing pending orders that consumed all
price points between the two ticks
If 2 is the case, does
pending order execution priority depends on the time the order was placed? If
so, does modifying an existing pending order change its priority on the server?
Was this a really stupid question or no one knows the answer?
By "the server" I meant the broker's MT4 server. I assume that each MT4 client communicates with an MT4 server at the broker side, right?
What I'm trying to understand is whether there could be ticks the MT4 client was not informed of, simply because the volume at those ticks was consumed by pending orders and hence there's no point of reporting those ticks. It's hard to imagine a 30 pip price jump with absolutely no pending orders (both buy and sell) in between.
Always. You do NOT have a 100GB pipe to the broker in a co-located room. You are not getting all ticks, ever. Different brokers give different data with different filtering, different delays, different prices. E.g. for the same pair one broker averages 30/min, mine 60/min, and another 180 ticks/min. And that is an AVERAGE.
Not hard to imaging at all. The following comes from IBFX one day before every FOMC anouncment:
As with all major economic releases, there could be significant price volatility with this announcement. Currency spreads will typically widen just before the release and will remain wide for a few minutes after. If the announcement is a shock to the consensus estimate, the price of the currency pair could gap significantly. For example, the price on the EURUSD trading at 1.2820 - 1.2822 just before release could gap up 60 pips to 1.2880 - 1.2882, without any available prices available between the price of 1.2820 and 1.2882. A Buy Stop placed before the announcement at 1.2830 would turn into a Market Order and would be filled at the prevailing price 1.2882. The same would be true with a Sell Stop.
Approximately four years ago we saw a gap of approximately 200 pips on the GBPUSD on a Non-Farm Payroll announcement. While this is an extreme example, it nevertheless is a possibility with trading during economic announcements. Consequently, plan on the spreads widening and, if you are trading with a Buy or a Sell Stop entry order, do not anticipate being filled at your entry price. You will be filled at the prevailing market price after the release, which could be significantly different from your desired price of your entry order.
Please be advised that due to the volatility of price fluctuations during the news, it is possible to see a delay in execution due to the additional verification necessary for each trade.
From data I have collected . . H1 tick counts on GBPUSD approx 5:1 highest tick count Broker : lowest tick count Broker
IBFX: For example, the price on the EURUSD trading at 1.2820 - 1.2822 just before release could gap up 60 pips to 1.2880 - 1.2882, without any available prices available between the price of 1.2820 and 1.2882
This confirm the first assumption in my original post:
1- The jump in price is what’s given to the trade server by the liquidity providers. There’s no way the server can execute orders within this price gap
WHRoeder: You're thinking 30 pips how about 200? While you're waiting for the OrderSend to transfer, sit in the queue, until the server can get to you, verify the price, verify your account, match your order with another, and send the result back, THOUSANDS of ticks may have been received by the broker.
Imply that there will be ticks within this gap, however the broker chose not to report them to the terminal for whatever reason (e.g., price is moving way too fast). If an order is already in the queue (i.e., pending order) does this improve its chance of catching one of the ticks within the gap? In other words, does pending orders get executed based on the ticks given to the terminal or the ticks received by the broker?
I know nothing about how pending orders are handled by the server, how order queue work or how order execution priority is determined, if at all, (I'd really appreciate an article on the subject)
Great, so back to my original question, how can I improve the chances of the server getting to my order in time to minimize slippage? The order has to be in the queue so it must be a pending order. The order has to be at the top of the queue, so it must be placed way ahead of news release (assuming execution priority is determined only by the time the order was received) Are those assumptions correct?
In another, but related note, are there any brokers who can use the "slippage" parameter on pending orders? This broker seems to offer something similar, did anyone try them?
... uses the latest technology on the MT4 platform to ensure the most exact execution of pending orders. This technology works by optimizing the algorithms behind interactions with liquidity providers.
Fills with no slippage are guaranteed for all pending orders executed at least three hours after trading opens for that particular Forex instrument. Now limit orders (Buy Limit, Sell Limit, Take Profit) and stop orders (Sell Stop, Buy Stop, Stop Loss) are executed at the exact price the trader specified.