MC have added a new feature to the CQG broker profile that allows users to avoid stop order rejections by converting the stop order to market in the event where the user wanted it triggered instead of rejected.
Previously the only solution was to code workarounds in your signals (e.g. by checking open next bar first). "Open next bar" changes some behaviours and will typically require lots more lines of code to handle all the extra named orders. Hence I was very pleased to see the addition of the following:
I asked MC to explain exactly how it works and was a little shocked at the response........
Amazingly, MC are saying that if a buy stop trigger price <= best ask price then MC will go to market!The conversion in MultiCharts is performed as follows:
if the Sell STP price >= Best BID, then a STL is converted to a Limit order, a STP is converted to a market order.
if the Buy STP price <= Best ASK, then a STL is converted to a Limit order, a STP is converted to a market order.
This might sound trivial but its ramifications are huge. There will be times when instead of having a stop order working and not triggered, MC will instead have gone to market on your behalf.
Imagine if your signal went to submit a buy stop order during quiet hours in an illiquid futures contract. Lets say last trade price was 98, and best bid 98, best offer 108. You then send an buy stop with trigger price of 100......
MC will now convert it and immediately buy 108 or worse, instead of having a working order: a non-triggered stop resting at 100!
You'd speculate in most cases the resting stop will inevitably get triggered anyway....BUT not always! It should only be triggered once someone buys @ 100 or worse. Therefore there will be times when no one trades @100 or worse and the best bid/offer subsequently drop. This is also far more likely to happen in the seconds just before big data releases, where the spread widens massively without anything trading. In the futures markets, trades trigger stops not bid/offers. Just before a data release MC might have you exiting/entering a position at the extreme of a bid/offer quote!!
This has to be corrected immediately with the following conditions for a conversion to market (or limit if stoplimit orders):
-IF Buy stop trigger price (<=Best BID) or (<LastTrade), then convert and submit market/limit
-IF Sell stop trigger price (>= Best ASK) or (>LastTrade), then convert and submit market/limit
This is simply a reverse engineer of the conditions for a CQG gateway order rejection. If anyone has a better solution please share your thoughts.