Trouble Submitting Bracket Order via API

Good day everyone. Thank you so much for your support Alexander, I’m confident we’ll get through this. Please see below the response I’m getting, as you can see it seems to be the same than everybody else. I checked char by char the exact message sent (compared to the one you provided in your last post). I also want to mention that if I use the exact same WebSocket (with same URL) to subscribe to say /user/syncrequest, I’m able to do so with no issues.

Update: We have found that the 404s are actually part of a bug - we’re actively working on resolving this!

5 Likes

Hey @Alexander, not trying to press you on this, but can we get a rough ETA on when to expect a bug fix?

I’m trying to figure out if I need to re-implement the bracket logic for order strategies via the POST options or work on something else.

Unfortunately we do not have an ETA yet, but we are working on solutions in our dev environment. I will keep this thread updated with the most recent progress.

Okay, thanks for letting us know.

Just for everyone’s information, is it possible to implement every behavior that you can do in startOrderStrategy using placeOrder, placeOSO, placeOCO, and modifyOrder?

In other words, was startOrderStrategy built using just those endpoints or would you need other functions? I’m having trouble getting these commands, just on their own, to replicate what the startOrderStrategy bracketing can do.

The main one I’d focus on would be OCO. You can use it to set your stop loss and profit targets to cancel one another. If you have a multi-bracket strategy you may need to utilize OSO as well to get to the next bracket step. But if you track IDs, you can certainly use OCO to create simple brackets with whatever entry order type you like - you’d just need to track the entry ID and watch for it to get executed. You can get execution report updates from the real-time websocket that you’ve subscribed to user/syncrequest from.

Hi @Arthur. What I did and worked for me is this:

  • I subscribed to the user/syncrequest endpoint.

  • Placed a normal order with placeOrder

  • Out of the user/syncrequest response messages (which in this case I assigned to the var response), I monitored it waiting to get something this way:

if(response.entityType == "executionReport" && response.entity.ordStatus == "Filled")

  • Once I got that message, I looked for this value which happened to be the actual trade price:
    response.entity.lastPx

  • With that value as reference, you can add or subtract whatever amount you wish in order to build your brakets by means of the OCO endpoint.

Hope it helps and let me know your thoughts.

2 Likes

Thank you @gustrom, that is exactly what I’ve been doing. It turns out the limitations have actually helped me customize my strategy better. It took me a while to get a feel for the other order types, but in the end, placeOrder does everything I need it to do.

One of the issues I see with startOrderStrategy for the future is that there is no isAutomated boolean. Also, the entire params input feels a little messy and lacks proper documentation for all the parameter types.

Anyway, good luck to you! Let me know when you have something working well for you.

I agree about the flexibility of customizing the brackets with separate functions.

However, there are still some advantages in using the startOrderStrategy endpoint in my opinion. For instance, the brackets won’t depend upon the script successfully getting and processing the right values from the trade response in order to request the brackets orders.

Also, for scapling or very quick strategies, there’s less order delay since the brackets instructions are already in tradovate’s server even before the 1st trade takes place. So we’d gain the time that results from adding: (getting response of 1st trade delay + delay of the server getting the OCO command afterwards).

1 Like

Alex

Not to be a negative nelly… but I had working strategyorder code that was running in live until this bug was introduced. I’ve lost several days trying to get it working again… with the same code that was working… and tried every example provided in this thread as well as in github…pulling my hair out.

I appreciate you finally acknowledging the bug. I really like the software tradovate offers, but more important than any of the features is basic stability. If Tradovate is going to change the way the API endpoints work you have to let us know with ample time change any of our affected systems. It’s been weeks since this was working.

I am just a simple brokerage client… but I can’t imagine the business partners using the same API feel any different.

1 Like

Am I correct in assuming that this bug also renders a good chunk of the code/examples here: https://github.com/tradovate/example-api-trading-strategy broken/unusable at the moment? Since, it’s mostly based on the orderStrategy/startOrderStrategy endpoint?

Unfortunately that is correct for the time being. I understand that this can be frustrating, but there will be a fix soon. It is already in development, it just takes time to get an update into release. In the mean time, using placeOSO and placeOCO can help you create your own brackets-like strategy.

@Alexander Any update on this? It’s been nearly two months. Is placing bracket orders via API still unavailable?

I’ve received an update recently that the solution for starting Bracket orders via API is on the horizon. In one to two weeks we should see the solution released. When I see it in the upcoming release notes I’ll update this page with an exact date.

1 Like

Thank you so much Alexander! Look forward to hearing back soon.

Good news, everyone! This weekend’s release will include the fix for placing bracket orders via API. By Monday we should be able to use the orderStrategy/startOrderStrategy endpoint again.

3 Likes

Sounds awesome! Thanks for the update.

Has anyone @here tried to implement this feature since the update?

I’m getting the same 404 error.

I think the update will be live by Monday March 14, 2022.

Thanks, can you point me to where you found that information?