Jump to content
  • 0

Order API Behaviour - How to formally raise a bug with IG?'


Tipper258

Question

Issue 1. The API does not behave as documented

The streaming API does not behave like the documentation, it never raises a WOU, always an OPU and it can have 2 different bodies. You have to inspect the body for presence of certain properties to determine what type of message it is. No biggie, can work round this once figured out this is what happens in both demo and live spread bet accounts.

Issue 2. forceOpen behaviour

Having used IG for many years, I'm very familiar with the web platform behaviour of forceOpen. Set it to true and your working order doesn't impact existing orders when the order executes. Set it to false and the order will apply to any open position in the same epic, quite how it decides which position to impact if you have multiple open is unknown.

In the REST API, the documentation says the default for forceOpen is true for working orders. Certainly if I try to set it to true I get a 400 with invalid.forceOpen error. If I don't set it, when the order is executed it behaves as if it were set to false and closes open positions which is rather unhelpful for the strategy.

When using the API companion, and I paste in the exact request body, with forceOpen set to true, it doesn't complain, off it goes and creates a working order. Mind you it returns the dealRef I specified but doesn't create the order with the dealRef which I guess is an implementation 'thing' with the companion, but then again that says maybe it actually strip out the forceOpen true before making the real API call too? Hard to know, or have confidence it's a true reflection of the real call.

This one I can't test in live, it costs real money with this behaviour, I'm unable to create a working order with forceOpen set to true, and the behaviour without it is as per false, despite the documentation saying it's true. I can't find a workaround.

How do I get support on this from IG, and bugs fixed or ultimately debug how this is my problem? Having been a developer for way too many years I'm conscious you can be very confident in your code only to find out you did get something wrong. For me the code works perfectly, a fairly complex strategy, until I add in the "forceOpen": "true" and get the 400.

Or is this 'just how it is' with the IG API? Thanks!

Link to comment

5 answers to this question

Recommended Posts

  • 0
19 minutes ago, Tipper258 said:

Issue 1. The API does not behave as documented

The streaming API does not behave like the documentation, it never raises a WOU, always an OPU and it can have 2 different bodies. You have to inspect the body for presence of certain properties to determine what type of message it is. No biggie, can work round this once figured out this is what happens in both demo and live spread bet accounts.

Issue 2. forceOpen behaviour

Having used IG for many years, I'm very familiar with the web platform behaviour of forceOpen. Set it to true and your working order doesn't impact existing orders when the order executes. Set it to false and the order will apply to any open position in the same epic, quite how it decides which position to impact if you have multiple open is unknown.

In the REST API, the documentation says the default for forceOpen is true for working orders. Certainly if I try to set it to true I get a 400 with invalid.forceOpen error. If I don't set it, when the order is executed it behaves as if it were set to false and closes open positions which is rather unhelpful for the strategy.

When using the API companion, and I paste in the exact request body, with forceOpen set to true, it doesn't complain, off it goes and creates a working order. Mind you it returns the dealRef I specified but doesn't create the order with the dealRef which I guess is an implementation 'thing' with the companion, but then again that says maybe it actually strip out the forceOpen true before making the real API call too? Hard to know, or have confidence it's a true reflection of the real call.

This one I can't test in live, it costs real money with this behaviour, I'm unable to create a working order with forceOpen set to true, and the behaviour without it is as per false, despite the documentation saying it's true. I can't find a workaround.

How do I get support on this from IG, and bugs fixed or ultimately debug how this is my problem? Having been a developer for way too many years I'm conscious you can be very confident in your code only to find out you did get something wrong. For me the code works perfectly, a fairly complex strategy, until I add in the "forceOpen": "true" and get the 400.

Or is this 'just how it is' with the IG API? Thanks!

Hi @Tipper258,

The best way to get some support with API would be to reach out to webapisupport@ig.com.

All the best - Arvin

  • Like 1
Link to comment
  • 0

Hi @ArvinIG, I've written in with both bugs, not heard anything back yet, but I see you resolved something on another thread in a way which implied individual accounts need to be enabled to force open positions in opposite directions. 

If my demo account is not enabled for this, it could be a perfect explanation for the behaviour noted above. So I used the web interface and opened a position and then placed an opposing order, checking the 'open new position' box. It behaved impeccably, opening an opposing position when the price was hit. 

Guess that means my account can open opposing positions on the same epic via the web, any reason it wouldn't via the API?

Thanks

Link to comment
  • 0
5 minutes ago, Tipper258 said:

Hi @ArvinIG, I've written in with both bugs, not heard anything back yet, but I see you resolved something on another thread in a way which implied individual accounts need to be enabled to force open positions in opposite directions. 

If my demo account is not enabled for this, it could be a perfect explanation for the behaviour noted above. So I used the web interface and opened a position and then placed an opposing order, checking the 'open new position' box. It behaved impeccably, opening an opposing position when the price was hit. 

Guess that means my account can open opposing positions on the same epic via the web, any reason it wouldn't via the API?

Thanks

Stop the bus! I've just read that the API defaults to version 1 if not specified, and not as I'd assumed the latest version. Looking at the difference between the version specs, there is no forceOpen on v1, I need to explicitly set v2.

Tests under way with the appropriate header .....

Link to comment
  • 0

In case anyone reads this in the future, the root cause was the API call to POST an order did not specify the API version in the headers, which then defaults to v1. It is API v2 that supports the needed forceOpen behaviour, adding that header resolved the issue 2 above.

  • Like 1
Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • image.png

  • Posts

    • Asian shares rose to a one-month high on Wednesday, led by a rally in tech stocks like Nvidia which surpassed Microsoft to become the world's most valuable company. The dollar was steady as soft US retail sales data reinforced expectations of the Federal Reserve cutting interest rates later this year. Markets are pricing in around 48 basis points of rate cuts by the Fed in 2024. Trading is expected to be muted due to the US markets being closed for the Juneteenth holiday on Wednesday. Oil prices were steady, with Brent crude around $85 per barrel and WTI crude near $81.5 per barrel. UK inflation slowed to 2% year-on-year in May, from 2.3%, and held at 0.3% month-on-month. Core CPI slowed to 3.5% YoY from 3.9%. 
    • Alpha Trade is about to launch a sub-brand - Alpha Trade Seychelles In order to better meet the more segmented requirements of investors in the investment field, we are pleased to announce that at the end of summer 2024, we will launch a sub-brand regulated by Seychelles - Alpha Trade Seychelles. We are currently selecting the office address and finalizing the relevant management personnel. We believe that in a short time, we will be able to launch Alpha Trade Seychelles to provide investors with better and more diversified services. As a global high-quality liquidity provider, Alpha Trade's meticulous and customized liquidity service solutions have long been recognized by a wide range of investors and brokers. With the establishment of Alpha Trade Seychelles, our products will be richer, with more free leverage options and more liquidity docking, which will make it easier to meet the execution of investors' diversified strategies and shorten the execution time, which will help investors get better quotes in strategy operations.
    • ASX: V300AEQ ETF UNITS – VAS Elliott Elliott Wave Technical Analysis TradingLounge (1D Chart)   Greetings, Our Elliott Wave analysis today updates the Australian Stock Exchange (ASX) with V300AEQ ETF UNITS – VAS. We confirmed that wave 2-grey has ended and wave 3-grey is opening to push higher.   ASX: V300AEQ ETF UNITS – VAS Elliott Wave Technical Analysis   ASX: V300AEQ ETF UNITS – VAS 1D Chart (Semilog Scale) Analysis Function: Major trend (Minor degree, grey) Mode: Motive Structure: Impulse Position: Wave ((iii))-navy of Wave 3-grey Details: The short-term outlook shows that wave ((ii))-navy has just ended and it seems that wave ((iii))-navy is opening to push higher, while price must always maintain above 94.64 to maintain this view. Invalidation point: 94.64   ASX: V300AEQ ETF UNITS – VAS Elliott Wave Technical Analysis TradingLounge (4-Hour Chart) ASX: V300AEQ ETF UNITS – VAS Elliott Wave Technical Analysis ASX: V300AEQ ETF UNITS – VAS 4-Hour Chart Analysis Function: Major trend (Minute degree, navy) Mode: Motive Structure: Impulse Position: Wave (ii)-orange of Wave ((iii))-navy Details: The shorter term outlook shows that wave ((i))-navy has just ended at 94.64 and wave ((iii))-navy is unfolding, it is subdividing into wave (i)-orange and it's over, now it's time for wave (ii)-orange to open up to push a little lower, after which wave (iii)-orange can return to push higher. Invalidation point: 94.64   Conclusion:   Our analysis, forecast of contextual trends, and short-term outlook for ASX: V300AEQ ETF UNITS – VAS aim to provide readers with insights into the current market trends and how to capitalize on them effectively. We offer specific price points that act as validation or invalidation signals for our wave count, enhancing the confidence in our perspective. By combining these factors, we strive to offer readers the most objective and professional perspective on market trends.   Technical Analyst: Hua (Shane) Cuong, CEWA-M (Master’s Designation). Source : Tradinglounge.com get trial here!  
×
×
  • Create New...
us