Every month or two, someone asks about picking off brokers with slow or manipulated prices. The basic concept is that you can buy or sell "risk free" when two parties misprice certain assets.
Example of differing Bid/Ask:
Broker A shows EUR/USD trading at 1.48250 / 1.49264
Broker B shows EUR/USD at 1.48227 / 1.48239
Notice how it is possible to buy EUR/USD at 1.48239 at Broker B and instantaneously sell the same contract at Broker A? The idea is that you could make 1.1 pips without worrying about the direction of the price. Although it sounds farfetched, arbitrage differences actually occur all the time.
Arbitrage is a perfectly sensible strategy. But, there are a number of risk factors to consider when taking this approach in MetaTrader:
- The price you see on the screen may not be tradeable. Latency, a glitch on the server or any number of reasons can cause your price feed to lag unreasonably. This means that the price is not actually real.
- Slippage. You do not have any way to guarantee that your order will be filled at the requested price. Considering that the normal slippage is often more than the amount of money that you're trying to earn, you still face a very real risk of loss.
- Brokers aren't stupid – they notice scalpers who seem to win all the time. If a broker manipulates the price and sees you taking advantage of it, I guarantee that your account will not remain open very long.
- The amount of time it takes to execute orders means that the price on the other half of your trading is dancing around while you have a naked position.
Think about the time involved with every step of the process of executing two trades. Assume that you have a respectable internet connection with a 40 ms latency to the trading server. The following steps have to occur:
- The broker sends the price quote (40 ms)
- MT4 communicates with the other broker to determine if an opportunity exists. MQL4 is a slow langugage, so let's say this takes 10 ms.
- MT4 sends the first part of the order to Broker A. Broker A checks with their counterparty, confirms the trade and then forwards this on to you. My experience is that this takes anywhere from 200 ms up to several seconds in MT4, depending on the broker and market conditions.
- You receive the trade confirmation and send the new request over to the Broker B MT4 platform (40).
- MT4 only updates on incoming ticks, so you're unable to send the order request programmatically until a new incoming tick arrives. Market conditions dictate how long this might take. We'll call the optimistic scenario 200 ms.
- MT4 sends the second part of the order to Broker B (40 ms).
- Broker B takes the same 200+ ms that Broker A took in Step 3.
At this point in time, the entire sequence completes its execution. How long did it take? The best case scenario looks like it takes something around 750 milliseconds, if everything goes smoothly. If any one of the 7 steps hits a bump in the road, it could take 5 seconds (5,000 ms) or longer to actually complete both sides of the order.
A lot can happen in 5 seconds! Most of these opportunities appear during volatilie markets, which means that the worst case scenario is most likely to happen precisely when you're trying to arbitrage the market.