The arbitrage situation may arise for several reasons. Two most possible causes:
- Price difference between liquidity providers
- Latency due to imperfect aggregator/server/bridge/etc.
If hedge (2-legs) arbitrage EA open orders on price difference between liquidity providers (difference in banking prices)– it is not possibilities for broker to classify your trades like arbitrage trading.
If software open orders during delay period between faster and slower liquidity provider, and if broker has anti-arbitrage plugin based on fast feed: your trading style can be classified by broker as arbitrage trading.
It is almost impossible to separate case 1 and case 2, but some tricks can help you to avoid anti-arbitrage plugin.
First, we recommend to use difference to open smaller the difference in close. In this case 50%+ of orders will be opened based on price difference between liquidity providers and your trading stile will not be identified like arbitrage trading. For example, you can use diff to open = spread and diff to close = spread x 4. In this case, you can open 50-60% orders based on banks price difference and cover spread, but you will make more profit when you close orders.
You also can set Max diff to open parameter on 5% higher then Diff to open, it will help to filter orders latency due to imperfect aggregator/server/bridge/etc.
If you trade DAX (German Index), we recommend also to trade currencies. DAX has the reputation of the most popular index for arbitrage trading and for this reason if you will trade only DAX, your broker can be more attentive. I recommend to pay attention to exotic currencies (despite the large spreads) and other indexes/CFDs like UK100 for example.
If your one broker in hedging pair much faster then another one, it is good idea to use extra plugin “open slow first” allows you to open order first on slow broker and only when order will be opened – send order to fast broker. (for example if you use LMAX unthrottled FIX API (or other fix api broker without last look) vs MT4 slow broker). It helps you to avoid losses on handed orders.
It is very difficult to create standard instructions for all brokers combinations, and you'll have to make a lot of test and parameters optimization before you find the best settings and the most profitable symbols for arbitrage trading.
Like for latency arbitrage trading, you need to control execution time and compare it with Initial time of execution. Usually if MT4 broker flag your account, they will increase execution time or your orders will be rejected. FIX API brokers in about 90% cases will reject your orders (with the explanation that there is no liquidity), if you use FOK or IOC orders or slip them, if you send market orders.
In this case I recommend trying to reduce the size of the lots (sometimes broker can execute orders with small lot size, but reject or slip them if lot size high), if this does not help, then try to stop the trading and resume after a week (sometimes Liquidity provider change your conditions on 1-2 weeks then return them back) and if it can not - change the broker.
Click to read more about Hedge Arbitrage
[1.] FOK and IOK orders
A fill or kill (FOK) order is "an order to buy or sell a stock that must be executed immediately"—a few seconds, customarily—in its entirety; otherwise, the entire order is cancelled; no partial fulfillments are allowed.
An immediate or cancel (IOC) order, also known as an "accept order", is a finance term used in investment banking or securities transactions that refers "an order to buy or sell a stock that must be executed immediately". In the case entire order is not available at that moment for purchase a partial fulfillment is possible, but any portion of an IOC order that cannot be filled immediately is cancelled, obviating the need for manual cancellation. This "partial fulfillment" aspect is what differentiates IOC orders from all or none (AON) and fill or kill (FOK) orders.
[2.] Last look
Last look does not mean that the trader will get rejected or the clients experience is worsened. The reason for this is because the aggregation technology will allow the trade to be re-routed to the next best liquidity provider. Further, in a no last look environment brokers and traders will often get something called a “missed trade.” A missed trade means that the price the client tried to click on was taken by someone else. While it is technically not a reject, it is practically the exact same thing and will show up as a rejected trade in many aggregation systems.
In the end it seems that last look and no last look both have positives and negatives.