- ago
Is there a way for WL8 to check to see if an order was Cancelled/Rejected by the broker? I've had several instances where it will send in an order that was cancelled/rejected because of a number of reason and I was just wanting to see if I could automate it to re-try to submit the same order say 5-10 seconds after the rejection/cancellation....but only if the original order was rejected/cancelled.
0
349
6 Replies

Reply

Bookmark

Sort
Cone8
 ( 5.68% )
- ago
#1
No.
But if there were a way, what mechanism would you use to resubmit an order seconds after it was just canceled, and, why wouldn't it just be canceled again?

It's probably more productive to concentrate on resolving why the original orders were rejected and avoiding those scenarios (or adapting to them).
0
- ago
#2
Most Likely Reason Orders are cancelled for me: WL8 runs my strategy at 9:30:00am Eastern. Example strategy says to Stop Buy 1% above NextSessionOpen. NextSessionOpen is $100 according to IQFeed at exactly 9:30:00. In the time (2-4s) it takes WL8 to send the order and for Tradier to receive/complete the order, the price goes to $102. WL8 didn't recognize that current price is beyond what the Stop Buy order price would be because NextSessionOpen was below Stop Buy price at the moment it got that info from IQFeed,. So WL8 doesn't know to convert this order to Market Order even if I have that preference selected. Thus, Stop Buy is cancelled.

Second Most Likely Reason Orders are cancelled for me: Too little Buying Power.

There isn't a guarantee that, if the order was submitted a few seconds later that it wouldn't just be cancelled again, but at least it would be nice for it to try 1-3 times after the initial cancellation before giving up for the day. Every time I've had an order cancelled/rejected while I've been at my computer, I've simply re-run the strategy and the order was filled.

The mechanism would be a OCO-type of function in Strategy Monitor. I'd add the same strategy to SM three times. One runs at 9:30:00, next runs at 9:30:15, next runs at 9:30:30. If the 9:30:00 one is not cancelled/rejected by the time 9:30:15 comes around, then the 9:30:00 remains GTC and the other two strategy runs (9:30:15 & 9:30:30) are cancelled.
0
Cone8
 ( 5.68% )
- ago
#3
QUOTE:
So WL8 doesn't know to convert this order to Market Order even if I have that preference selected.
WL requests the quote when the order is placed, but there's always chance that a fast-moving market moves again. You should be able to speed up the quote request if you have streaming running for all your symbols. Just drag your DataSet into a Quotes window and turn on your IQFeed Stream.

QUOTE:
Second Most Likely Reason Orders are cancelled for me: Too little Buying Power.
Is that from the broker or due to Trading Threshold preferences?

QUOTE:
The mechanism would be a OCO-type of function in Strategy Monitor. I'd add the same strategy to SM three times. One runs at 9:30:00, next runs at 9:30:15, next runs at 9:30:30.
Touché!
But it's not going to be possible without building a ton of new plumbing and redesigning everything. Once a Strategy sends its orders, it's done, and it would be hard to describe in 20 pages of text everything that happens to that order after the strategy is done with it.
0
- ago
#4
I think streaming might be a good solution to this. Thanks! I’ll try that.

QUOTE:
Is that from the broker or due to Trading Threshold preferences?

Broker. I admittedly have a hard time wrapping my mind around “Buying Power” and am just hoping we get to T+0 sooner than later. But, in the meantime, I voted for your FeatureRequest that seeks to estimate one’s Buying Power. This is much less of an issue as the first reason my orders get rejected/cancelled.
0
- ago
#5
I've never used the Quotes tool. If I add the symbols in there and stream them, do I still need to select "Polling" for those symbols in the Strategy Monitor or am I changing that to another choice?
0
Cone8
 ( 5.68% )
- ago
#6
Yes, polling for a Daily strategy.
The Streaming is for another purpose.

It would be interesting for GetSessionOpen() to take advantage of already-available streaming data for that purpose, but right now it's done by polling for the current daily bar and using its Open.
0

Reply

Bookmark

Sort