Jump to content
  • 0

Incomplete response from the API


Tomegnon

Question

Hi

I am receiving only incomplete information from my API request. I use VBA and the request is based on the sample. I only get the first market of the watchlist and only few fields such as "expiry" and "epic", but no "bid" or "ask" for instance. If anyone has an idea?

Thanks

Public Function watchlistMarkets(watchlistIdentifier As String) As Collection
 

   Call oXMLHTTP.Open("GET", IG_API_HOST + "/watchlists/" + watchlistIdentifier, False)
    Call oXMLHTTP.SetRequestHeader("X-SECURITY-TOKEN", m_accountToken)
    Call oXMLHTTP.SetRequestHeader("CST", m_clientToken)
    Call oXMLHTTP.SetRequestHeader("X-IG-API-KEY", m_apiKey)
    Call oXMLHTTP.SetRequestHeader("Content-Type", "application/json; charset=utf-8")
    Call oXMLHTTP.SetRequestHeader("Accept", "application/json; charset=utf-8")
    Call oXMLHTTP.send
    If oXMLHTTP.Status = 200 Then
        Dim data As Dictionary
        Set data = JSON.parse(oXMLHTTP.responseText)
        Set watchlistMarkets = data.Item("markets")
    Else
        Set watchlistMarkets = Nothing
    End If
          

End Function

 

Link to comment

8 answers to this question

Recommended Posts

  • 0

Hi I am getting values from the service

image.thumb.png.4d36d60113b16d8be6e3066ce61cddba.png

I wrote a bit of a test in c# at

https://github.com/oneangrytrader/brokerapiclients/blob/master/IG.Csharp.Api.Client/IG.Csharp.Api.Client.Test/WatchListTest.cs

The only difference that I can see is that I pass the endpoint version within the http call as well.

https://github.com/oneangrytrader/brokerapiclients/blob/master/IG.Csharp.Api.Client/IG.Csharp.Api.Client/Rest/IgRestApiClient.cs

image.png.951e625c999774057720625cfceda6ae.png

  • Sad 1
Link to comment
  • 0

Hi, thank you for your response

I've inserted the version it doesn't seem to help. The response include only the first market in the watchlist and only few fields for that market. The API Companion works fine though, I see all the data. I can't see why...

Public Function watchlistMarkets(watchlistIdentifier As String) As Collection

    Dim A_instrumentName As String
    Dim A_expiry As String
    Dim A_epic As String
    Dim A_marketStatus As String
    Dim A_lotSize As String
    Dim A_high As String
    Dim A_low As String
    Dim A_percentageChange As String
    Dim A_netChange As String
    Dim A_bid As String
    Dim A_offer As String
    Dim A_updateTime As String
    Dim A_updateTimeUTC As String
    Dim A_delayTime As String
    Dim A_streamingPricesAvailable As String
    Dim A_scalingFactor As String
    
    Call oXMLHTTP.Open("GET", IG_API_HOST + "/watchlists/" + watchlistIdentifier, False)
    Call oXMLHTTP.SetRequestHeader("X-SECURITY-TOKEN", m_accountToken)
    Call oXMLHTTP.SetRequestHeader("CST", m_clientToken)
    Call oXMLHTTP.SetRequestHeader("Version", "1")
    Call oXMLHTTP.SetRequestHeader("X-IG-API-KEY", m_apiKey)
    Call oXMLHTTP.SetRequestHeader("Content-Type", "application/json; charset=utf-8")
    Call oXMLHTTP.SetRequestHeader("Accept", "application/json; charset=utf-8")
    Call oXMLHTTP.send
    If oXMLHTTP.Status = 200 Then
        Dim data As Dictionary
        Dim market As Dictionary
        Set data = JSON.parse(oXMLHTTP.responseText)
        Set watchlistMarkets = data.Item("markets")
        For Each market In watchlistMarkets
            A_instrumentName = market.Item("instrumentName")
            A_expiry = market.Item("expiry")
            A_epic = market.Item("epic")
            A_marketStatus = market.Item("marketStatus")
            A_lotSize = market.Item("lotSize")
            A_high = market.Item("high")
            A_low = market.Item("low")
            A_percentageChange = market.Item("percentageChange")
            A_netChange = market.Item("netChange")
            A_bid = market.Item("bid")
            A_offer = market.Item("offer")
            A_updateTime = market.Item("updateTime")
            A_updateTimeUTC = market.Item("updateTimeUTC")
            A_delayTime = market.Item("delayTime")
            A_streamingPricesAvailable = market.Item("streamingPricesAvailable")
            A_scalingFactor = market.Item("scalingFactor")
        Next
    Else
        Set watchlistMarkets = Nothing
    End If
        
    Exit Function

End Function

        
    Exit Function

End Function

 

API.thumb.jpg.0105708196e3c10a60f7c432e5c6e3c3.jpg

 

Link to comment
  • 0
52 minutes ago, Tomegnon said:

Ok you're right. The response is complete. It must come to the way I extract the info into my variables then. I used the same as the sample but somehow it is not working property.

API.jpg.c802702a3beb0e9bcef97902a8939b64.jpg

yes, that is why I asked the question, to get rid of one step.

You can tell now that your request and response are correct, so it is down to the way you are parsing the JSON object locally. I use Newtonsoft to parse JSON into objects in C# and it seems that it is working for Visual Basic as well.

https://stackoverflow.com/questions/20079177/deserializing-json-in-visual-basic/20080586

I can't thank enough to the author of that library, it made my development way easier.

 

  • Sad 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
  • Posts

    • Sainsburys full year earnings and Unilever’s first quarter trading update both say the same thing, UK consumers are in for higher prices. The war in Ukraine, supply chain issues and the effects of ongoing Covid all to blame.      
    • US Dollar (DXY) Daily Price and Analysis US Q1 GDP may stall the greenback’s advance. A 20-year high nears for the US dollar. The multi-month US dollar rally continues with the greenback printing a fresh high today ahead of the first look at US Q1 GDP at 12.30 GMT. The US dollar basket (DXY) has been boosted by renewed weakness in the Euro and the Japanese Yen, as investors move from lower-yielding to higher-yielding currencies, while safe-haven flows continue to benefit the greenback. The US growth release later in the session is expected to show a sharp slowdown from the robust Q4 figure of 6.9%. The markets are currently pricing in growth of just 1% for the first three months of this year, with the slowdown mainly due to a reduction in inventory accrual over the quarter. This release is unlikely to move the greenback, unless there is a large miss or beat, as the Fed believe that 2022 US growth will be robust enough to let them tighten monetary policy sharply without damaging the economy. The latest US Core PCE data – the Fed’s preferred inflation reading – is released on Friday and this may have more effect on the US dollar than today’s GDP data. For all market moving economic data and events, see the DailyFX Calendar. The ongoing US dollar rally has been aided by weakness across a range of G7 currencies including the Euro, the Japanese Yen, and the British Pound. The Euro continues to battle with lowly growth expectations, exacerbated by energy concerns, the British Pound is mired by weak economic data, while the Japanese Yen is in freefall as the BoJ continues with its ultra-loose monetary policy.   The US dollar continues to press higher and looks set to break above 103.96, the March 2020 high. Above here the US dollar would be back at levels last seen nearly two decades ago. The March resistance will likely hold in the short-term, especially with month-end portfolio rebalancing at the end of the week, but US dollar strength is set to continue in the months ahead. USDOLLAR (DXY) WEEKLY PRICE CHART – APRIL 28, 2022 {{THE_FUNDAMENTALS_OF_BREAKOUT_TRADING}} What is your view on the US Dollar – bullish or bearish?   Apr 28, 2022 | DailyFX Nick Cawley, Strategist
    • While Tesla has nothing directly to do with Elon Musk buying Twitter - TSLA stock closed down 12% on news that Musk may have to sell stock and use other holdings to stand against the loan to finalise the purchase of the social media giant.        
×
×
  • Create New...