Rollover Scalper EA - USDCHF trade analysis from 2022.07.13-2022.07.14

15 July 2022, 15:16
Alexandru Casian
2
208
The USDCHF buy position from the 2022.07.13-2022.07.14 rollover period is an interesting case to study and could've triggered some questions regarding how spread and slippage can affect the night scalping strategies (including the one used by my EA, Rollover Scalper EA).
First of all, I'll remind you some general knowledge facts:
    a. The lower the liquidity, the bigger the spread. You can also think about it the other way: the big spread means a low liquidity.
    b. The liquidity (and thus the spread) depends on the symbol. Some pairs (EURUSD, GBPUSD) have a higher liquidity even out-of-hours, while others (EURCHF, USDCHF) have a lower liquidity. This can be seen by simply observing the spread, and you don't even have to do this live because the real spread can be analyzed even from backtests done on MT5.
    c. Slippage is normal, especially during low-liquidy periods such as the rollover period. The slippage can be both positive and negative, and it (normally) is random. Some traders will get their orders executed with positive slippage while others will get similar orders executed with negative slippage (I'll explain and prove this later with some screenshots).

Now, about the USDCHF trade from 2022.07.13-2022.07.14. I'll discuss it based on the trades done on IC Markets broker, but the same could've happened on other ECN brokers.
The order placed was a BUY LIMIT order. It was placed after 2022.07.13 23:00 broker's time, and was activated at around 2022.07.14 00:03 broker's time. Now, here already were some differences in the trade execution. The order should've been activated at ~0.97823. This was the level for the BUY LIMIT order. However, the following 2 ticks were 0.97816 and 0.98044.

The difference between them is of 228 points which is huge.
The first tick (0.97816) was the one that triggered the execution of the BUY LIMIT order. Till then there was no tick with the price lower than 0.97823, so there was nothing to trigger the execution of USDCHF BUY LIMIT order.
Now, an important notice - the volume of orders to be filled is limited, as you probably know, and therefore not everyone's order was filled at 0.97816 (which would've mean a positive slippage of ~7 points). Once the existing orders were filled at 0.97816, the next were filled at the next available price - 0.98044 (which meant ~221 points of negative slippage). This is a lot, isn't it? I'll repeat, even though the first tick which triggered the execution of BUY LIMIT was at 0.97816, the execution itself isn't necessarily done at that specific tick's price (0.97816). If there are no more orders to be filled at that price (0.97816), your BUY LIMIT will be executed at the next tick's price (which in this case was 0.98044).
Regarding limit orders... the advantage of using limit orders is that these are executed faster, and the chance of getting the best price (0.97816) are bigger. Yet, the chances are not 100%, and your limit order still could've been executed with a negative slippage of ~221 points.

Here is how a BUY LIMIT order executed on USDCHF on 2022.07.14 00:03 at the first price (0.97816) looks in logs (on MT4, AUD account):



Here is how the same BUY LIMIT order executed on USDCHF on 2022.07.14 00:03 at the second available price (0.98044) looks in logs (on MT4, USD account):


Here is how a BUY LIMIT order executed on USDCHF on 2022.07.14 00:03 at the first price (0.97816, 7 points of positive slippage) looks on chart and on backtesting (the screenshot is taken from a backtest on MT5 but the same would've been on a live account):

You can see that the TP is above the order open price as it should always be when the position has just been opened. You can also see that the spread is huge (481 points). The spread is less relevant, but it shows a bigger probability of a huge negative slippage to occur. Also, you can deduce the fact that backtests will always fill the order at the first tick, and therefore you'll probably never get negative slippage when limit orders are triggered on backtests. You can simulate ping and slippage when backtesting on MT5, but keep in mind that limit orders are kept on the broker's servers and therefore are executed almost instantly. That's why the "delay" option in MT5 backtests doesn't affect the limit orders.

Here is how a BUY LIMIT order executed on USDCHF on 2022.07.14 00:03 at the second price (0.98044, 221 points of negative slippage) looks on chart (the screenshot is taken from a live account, MT5):


You can see that the TP is already below the order open price, and this is caused by the slippage. At first I thought (and others might've thought) that this is due to the "trailing TP" functionality. But this is impossible, keep in mind that in case of BUY orders, the TP still has to be above the price to be trailed (it can't be technically done, you'll get an error, this is unless you got huge negative slippage). The order won't even be accepted if the first TP value is below the open price. The fact that the open price was above the TP shows that the order was executed with a huge negative slippage.
Starting with 1.2 version of Rollover Scalper EA, the "trailing TP" functionality will use the previous closed M15 bar (unlike the 1.0 and 1.1 versions which use the current M15 bar) to calculate the Moving Average value. This means that the EA will modify the TP each 15 minutes only (unlike 1.0 and 1.1 versions which modify it each 5 minutes), and will not change it for example between 00:02 and 00:14:59, no matter how big the spread gets.


Why keep the TP at a negative TP value if the order opened at a worse price than expected? Why not place the TP higher, to still have a positive TP?
My EA (Rollover Scalper EA) and also some other night scalpers use by default a Moving Average to trail the TP. This means that, regardless of where the position has been opened, the TP is at the same level. This makes sense and is a good practice from the probability point of view, because the price tends to reverse to a mean value and it does not care about where your position has been opened. That explains why the BUY LIMIT orders which activated at 0.97816 had a positive TP (the TP was above the opening price), while the BUY LIMIT orders activated at 0.98044 had opened with a negative TP (the TP was already below the opening price). Changing the TP in this case (just to try to still get a positive profit) would be similar to trying to influence the market to move in your desired direction. The market doesn't care about what price you want it to go to. It will most often go to its average price, and if it's below your opened price then it's better to accept a loss than risk to get a full stop loss.
Make no mistake, the EA will never send an order which will have negative TP from the start. It can't even do it technically, it would get an error, but it won't do it anyways because it's coded to send orders with positive TP only. However, as in the case of USDCHF order, the order will sometimes be executed at a worse price, and in this case you'll have a negative TP from the start. This is the case I mentioned, the case when it's better to accept a loss (by having a negative TP) than risk getting the SL hit.

Can't the slippage be controlled?
It can on some brokers, but on others it can't. Even though Metatrader has a "slippage" (also called "deviation") parameter which should limit the slippage, and you'd expect to have no position opened with a bigger negative slippage than the indicated one, some brokers will ignore it. Most ECN brokers (such as IC Markets) ignore it, they don't have a slippage control (IC Markets has an exception for cTrader accounts, these do have a slippage control). I don't know the reason for that, but I suppose there are technical reasons. Maybe this is done to improve the execution speed, with the drawback that they can't cancel your order if the slippage is too big.
So, the answer is yes and no. On some brokers you can fully control the maximum slippage (in this case you'll have to use virtual TP instead of the standard real TP), on others you can't no matter what you do. Which type of broker is better? I don't know. I often get positive slippage on IC Markets too. Also, speaking of the same USDCHF trade from 2022.07.14 00:03, I had about 10 different accounts which opened then the same USDCHF position on IC Markets, and only 2 of them got a negative slippage of about ~221 points. This means that the most of them had the USDCHF order executed at the 1st price. And in any case, such negative spread doesn't 
occur too often, at least for now.

What other solutions are there to minimize the negative slippage?
1. There is no big slippage before the rollover period. Rollover Scalper EA allows you to set the time when to delete the pending limit orders. You can set it to close them at rollover period. This way you'll avoid opening positions during the rollover period, and you'll minimize the losses caused by slippage. Keep though in mind that this will only reduce the negative slippage when opening positions. If you have positions opened earlier and these close during the rollover period, you still can get negative slippage when the position is closed.
Also, keep in mind that by not opening positions during the rollover period you also minimize the number of trades, and therefore you minimize the potential total profit. I can't tell you which option is better, and probably no one can tell you that because no one can predict the slippage. Well, kind of... some pairs have less negative slippage, and here comes the 2nd solution:
2. Trade only the pairs with a higher liquidity (such as EURUSD, GBPUSD), this way the chance to get negative slippage is much lower and also the potential negative slippage is lower too.
3. Avoid trading (or pause the EA) after news. News can cause big movements for a few hours, but later it can cause even a lower liquidity than usual. This might've been the case with USDCHF because on 2022.07.13 there were CPI news.

Is the slippage random or is it the broker trying to steal my money?
Regarding the slippage randomness - yes and no. It's mostly yes, and the example with my ~10 accounts partially proves it. But, the bigger the lot size you're using the bigger the possible negative slippage. Yet, I'm sure no one can tell you at which lot size you'll start getting bigger slippage. It depends on market conditions, market hours, the number of participants, and even your broker's hardware and software.
Is it the broker trying to steal your money? If the broker is regulated, my guess is - no. If it is ECN, I think it can't control your slippage anyways. But these are only my hypotheses, I can't tell for sure.

Share it with friends: