Jump to content

KML

Community Member
  • Posts

    7
  • Joined

  • Last visited

Posts posted by KML

  1. Where you able to get this to work? When I add the _method = DELETE header, I get a 404 file not found, but I've checked the URI about 718 times. I'm able to create new positions, and also to delete using the API companion.

    The following is a printout from my post() method when creating a position:

    IgAPI.post: URI: https://demo-api.ig.com/gateway/deal/positions/otc
    IgAPI.post: Headers: java.net.http.HttpHeaders@2c272c73 { {Accept=[application/json; charset=UTF-8], Content-Type=[application/json; charset=UTF-8], CST=[removed], IG-ACCOUNT-ID=[removed], Version=[2], X-IG-API-KEY=[removed]} }
    IgAPI.post: Body: {"currencyCode":"USD","direction":"BUY","epic":"IX.D.SPTRD.IFM.IP","expiry":"-","forceOpen":"true","guaranteedStop":"false","orderType":"MARKET","size":"0.04","stopDistance":"2","trailingStop":"true","trailingStopIncrement":"1"}

    which works.

    And the following is the same printout when trying to delete a position:

    IgAPI.post: URI: https://demo-api.ig.com/gateway/deal/positions/otc
    IgAPI.post: Headers: java.net.http.HttpHeaders@42f3e43d { {_method=[DELETE], Accept=[application/json; charset=UTF-8], Content-Type=[application/json; charset=UTF-8], CST=[removed], IG-ACCOUNT-ID=[removed], Version=[2], X-IG-API-KEY=[removed]} }
    IgAPI.post: Body: {"dealID":"DIAAAAPN7BCT8AP","direction":"SELL","size":"0.04","orderType":"MARKET"}

    which yields a 404 response.

    Any help highly appreciated!
     

  2. Thanks for all your replies! Highly appreciated! 🙂

    However, I'm still not able to cross the finish line. If I proved the following headers:
    {_method=[DELETE], Accept=[application/json; charset=UTF-8], Content-Type=[application/json; charset=UTF-8], CST=[removed], IG-ACCOUNT-ID=[removed], Version=[2], X-IG-API-KEY=[removed]}

    I get the 404 File not found error.

    However, when I use the following headers:
    {Accept=[application/json; charset=UTF-8], Content-Type=[application/json; charset=UTF-8], CST=[removed], IG-ACCOUNT-ID=[removed], Version=[2], X-IG-API-KEY=[removed]}

    I get {"errorCode":"validation.null-not-allowed.request.expiry"} which is expected as I don't provide sufficient information to create a new position. (I guess that is what IG thinks I'm trying to do when I don't add the _method= DELETE?

    Any ide what I'm missing/misunderstanding?

    I still have the option to delete a position by creating a new with a opposite buy/sell attribute, but it would feel more satisfying making this work. 🙂

  3. Dear all,

    I'm having trouble deleting a position using the API. As I understand https://labs.ig.com/rest-trading-api-reference/service-detail?id=678, I'm supposed to send a DELETE request with a body. But isn't a DELETE-request supposed to be without a body?

    The line

         HttpRequest request = HttpRequest.newBuilder().uri(URI.create(uri))
               .headers("Content-Type", "application/json; charset=UTF-8", "Accept", "application/json; charset=UTF-8",
                "Version", "2", "IG-ACCOUNT-ID", CAI,
                "X-IG-API-KEY", APIKEY, "CST", CST)
                .method("DELETE", HttpRequest.BodyPublishers.ofString(body))  
                .build();

    returns a 404 not found error, but if I change DELETE to POST as in 

         HttpRequest request = HttpRequest.newBuilder().uri(URI.create(uri))
               .headers("Content-Type", "application/json; charset=UTF-8", "Accept", "application/json; charset=UTF-8",
                "Version", "2", "IG-ACCOUNT-ID", CAI,
                "X-IG-API-KEY", APIKEY, "CST", CST)
                .method("POST", HttpRequest.BodyPublishers.ofString(body))  
                .build();

    I get an expected error {"errorCode":"invalid.request.format.line-1.column-3"}. Does this mean that I'm supposed to use the POST method anyway? How does it then know that I',m deleting the position and not creating a new one?

    I could of course delete a long position by creating a short position and vice versa, but that looks a bit messier.

    Thanks for any help or clarifications.

  4. Thanks for your input. I started to code from scratch, using JDK 11 on Linux. That is, I did not start with the code from Githup.

    Not sure what you mean by default profile, but I had to create a specific username/password for the application in addition to the one I use when I log in myself. As the user interface in Norwegian, I'm not sure on the exact wording in the menues, but the link is https://www.ig.com/no/myig/settings/api-keys. Not that there are different entries for live and demo accounts.

    The application uses the same username/password as I do in the API companion.

  5. Dear all.

    I'm playing around with the API using Java. I've been able to log in (version 1), listing accounts (https://demo-api.ig.com/gateway/deal/accounts), listed top level nodes (marketnavigation) and subscribed to some information using the LightStreamer client.

    However, I'm now trying the /markets endpoint, but with no success so far. For instance, I get status 401, with error code "error.better-search.invalid-call". I'm not able to find this error message in the documentation. The same endpoint work when I try the API companion.

    Any help highly appreciated!

    • Like 1
×
×
  • Create New...
us