Hi there Stam,
Your question will be unusual to most of us, because in your scenario/case Backtest won’t enter while Live does, while 999 out of 1000 issues regarding this, it is the other way around. But it intrigues anyway (or because of that).
First things first :
How reliable is the execution process of PRT if conditions are not met yet execution takes place?
A very good question, but IMHO n/a;
Or maybe better : hard to wrap my head around because how or what then ? Read :
How could an execution take place on conditions *I* did not set ?? Of course, I understand that you seek for something like that because it seems to happen to you, but this is not how it can go. This can (and this is the other way around) :
How can conditions in Backtest *not* be met while in Live they are not.
… And of course, this *is* your stance, but it is also something to have straight.
First off, I don’t think that Spread can cause an order to not-enter or enter. This IMO works the other way around : the price is met, and next the spread is deducted so you catch a loss right away at that moment. Is that with a spread of 1 points ? then your loss is 1 point. Is it 5 ? then 5. … One thing with this : the taken loss on spread can be charged at Entry, Exit or Both (I explicitly take IG as the example, because this is not so everywhere). But it is unrelated to Yes/No Entry.
The fact that your Entries are Pending Stops could be something which is more special. So much so that a Backtest engine can run behind on their possibilities while Live depicts the truth and with that also how PRT behaves. This latter means : PRT will follow the broker (a real one (IBKR) or a not-so real one (IG) and there is nothing to be doubted for PRT in that realm. Errors in the communication (in the API with the broker) sure, but you will receive errors indeed (by means of 100+ different messages) and your System (Autotrading code) will be kicked out for further prevention of more anomaly). Mind you please, PRT is relatively unique in this, as the connection with the brokers is 100% tight because all server side processed.
Watch out ! with this I take it that you yourself do not used PRT’s own API which also exists (could be for Australia, USA and more). So in the case of you using the PRT API, all is moot (because now that can run behind on modern broker approaches).
One thing I wonder myself : can Manual Trading with IG via PRT (!) be done by means of a Pending Stop for Entry ?
I wonder because most of such more special means can not by done with the IG version of PRT, while “all” can be done in PRT-IB. This means that the native PRT platform would do it, but the constraints at PRT-IG must be filtered. But are they (sufficiently) ?
Something else is that you’d need a kind of special thinking to let an Entry happen in your Stop situation. Although this normally surely can be done, most people will tell you that it is not possible. And there you have it again : what is not possibly by general stance may be rejected by stupid theoretical software (PRT Backtest) while Live (IG) just allows it.
Small problem with this : you cannot backtest it. Arghhh.
It looks like you bear your experience from somewhere else (platform) and it could be good to tell which that is (no real need, but people may tell you experiences with the very same right away). But the message : because you *seem to* know how things should or could go, you may make the mistake to think of PRT as a just as decent platform with adjacent possibilities. And well, in many cases that cannot be. For example, you take into account the spread yo say. Well, without Bid, Ask and Price differentiation, you actually can’t. You may think to mimic or fake it, but you can’t. You thus also cannot form Entries around that, of which you seem to say you do that.
Having said this all, especially referring to PRT following the Broker’s interface (communication) for obtaining order status etc. while PRT is the instance to hand out the order of accepted type, not rejected by the parser/compiler (your Stop order in code), how would you now reason yourself what can be happening ?
- Backtest does not take position;
- very same code in Live does.
With this question on the table, you maybe realize that Backtest as such does not know about markets and queues and you will be later in Live than in Backtest (backtest always takes position once the price is properly touched). However : that is the normal situation with a Limit Order looking for the Entry. You do this the other way around; it wouldn’t be so that “something” now tells your turn is later ??
Read :
It wouldn’t be so that in Live your order at the wrong side of the price which you did not expect … because … that will be treated as a Market Order now (instantly filled) ?
If that is so, then this is also the one-line explanation. In that case, however, I like to add this :
Supposed you are used doing these things not with IG (CFDs) but with a real broker, then with IG things may turn against you more than with a normal broker because IG will have “10 fold” the peaks (and depths) that causing Live to behave really different from historical data. This is harder to explain but it may cause your strategy to end up at the right side of the price within a bar (the moment your program code is called). This may make it work, while it actually should not (think slippage for the direction I am think of).
As I said, intriguing; that’s why the long story.