Jump to content
  • 0

Close Position Using rest API


Guest oliver3146

Question

Guest oliver3146

Hi all,

I'm currently using IG rest API top open and positions. I don't have any issue opening a position but when I try to close it I get below error message:

"errorCode": "validation.mutual-exclusive-value.request"

I also get this error when using API companion:

Deal Id: DIAAAADQNQBZCAH
Epic: IX.D.SPTRD.IFE.IP
Expiry: -
Direction:  SELL (because my position is BUY)
Deal Size: 1
Closing order Level: 
Order Type:  MARKET
Time In Force: 
Quote ID: 

 (DELETE /positions/otc)

 

After I press GO I get error: "errorCode": "validation.mutual-exclusive-value.request" the same I get using python API.

Could you please help ? What am I doing wrong?

 

Thanks in advance

Link to comment

23 answers to this question

Recommended Posts

  • 1

If anyone is still having this problem, the answer is to use the POST method on your httpClient obj (whatever you're using) and set a header value. ("_method": "DELETE")

It needs to be POST because you're adding a request body, which isn't supposed to work with the DELETE verb.

So a request will look like this:

Method: POST

POST body:
{
    "dealId": "<deal id>",
    "direction": "SELL",
    "size": "1",
    "orderType": "MARKET",
}
All the rest could be null

Headers:
X-IG-API-KEY: <your api key>
X-SECURITY-TOKEN: <your token from logging in>
CST: <your cst token from logging in>
Content-Type: application/json
Version: 1
_method: DELETE

Hope this helps

  • Like 1
  • Thanks 1
Link to comment
  • 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!
 

Link to comment
  • 0
On 05/05/2020 at 19:14, Guest oliver3146 said:

Hi all,

I'm currently using IG rest API top open and positions. I don't have any issue opening a position but when I try to close it I get below error message:

"errorCode": "validation.mutual-exclusive-value.request"

I also get this error when using API companion:

Deal Id: DIAAAADQNQBZCAH
Epic: IX.D.SPTRD.IFE.IP
Expiry: -
Direction:  SELL (because my position is BUY)
Deal Size: 1
Closing order Level: 
Order Type:  MARKET
Time In Force: 
Quote ID: 

 (DELETE /positions/otc)

 

After I press GO I get error: "errorCode": "validation.mutual-exclusive-value.request" the same I get using python API.

Could you please help ? What am I doing wrong?

 

Thanks in advance

 

Link to comment
  • 0

Deal Id: DIAAAADQNQBZCAH
Epic:
Expiry:
Direction:  SELL (because my position is BUY)
Deal Size: 1
Closing order Level:
Order Type:  MARKET
Time In Force:
Quote ID:

 (DELETE /positions/otc)

When i send this request via command: "Call oXMLHTTP.SEND(requestBodyString)"

i get this error: "errorCode": "validation.null-not-allowed.request"

if i copy request text to API companion . It runs perfectly

Any body got a solution to this?

Link to comment
  • 0

request body string :{"dealId":"DIAAAAGVJZBK3AZ","direction":"SELL","size":"1","orderType":"MARKET","timeInForce":"EXECUTE_AND_ELIMINATE"}
Method : (DELETE /positions/otc)
When i send this request via command: "Call oXMLHTTP.SEND(requestBodyString)"
i get this error: "errorCode": "validation.null-not-allowed.request"
if i copy request text to API companion . It runs perfectly

Any body got a solution to this?

Link to comment
  • 0

request body string :{"dealId":"DIAAAAGVJZBK3AZ","direction":"SELL","size":"1","orderType":"MARKET","timeInForce":"EXECUTE_AND_ELIMINATE"}
Method : (DELETE /positions/otc)
position : "BUY"
When i send this request via command: "Call oXMLHTTP.SEND(requestBodyString)"
i get this error: "errorCode": "validation.null-not-allowed.request"
if i copy request text to API companion . It runs perfectly

Any body got a solution to this?

Link to comment
  • 0
On 28/10/2021 at 18:14, Guest Simon said:

Deal Id: DIAAAADQNQBZCAH
Epic:
Expiry:
Direction:  SELL (because my position is BUY)
Deal Size: 1
Closing order Level:
Order Type:  MARKET
Time In Force:
Quote ID:

 (DELETE /positions/otc)

When i send this request via command: "Call oXMLHTTP.SEND(requestBodyString)"

i get this error: "errorCode": "validation.null-not-allowed.request"

if i copy request text to API companion . It runs perfectly

Any body got a solution to this?

I think so expiry needs a '-' as value.

 

Link to comment
  • 0

I am also running into issue when trying to delete a position when following payload 

{
   "dealId": "DIAAAAJBD8TYKAT",
   "direction": "SELL",
   "orderType": "MARKET",
   "timeInForce": "FILL_OR_KILL",
   "size": 1.16,
   "expiry": "DFB"
}

 

endpoint https://demo-api.ig.com/gateway/deal/positions/otc

when I use POST method with _method header as DELETE, it returns 

{
"errorCode": "error.service.marketdata.position.notional.details.null.error"
}
 
when I use DELETE method 
validation.null-not-allowed.request
 
Will appreciate any help in this regard. 
Link to comment
  • 0

Thanks! 🙂 Tested and works with version 1. I sort of remember that I changed to version 2 a few months back, but I don't remember why, and the program still seems to work. (That code is also used during log in and creation of position.)

Not sure why that lead to 404, but now I'm past that hurdle. 

Link to comment
  • 0

Looking at the API documentation, it seems that each call has version 1, and maybe other later versions. I assume we ought to use the latest version for a new application, but the older versions remain so things don't break. e.g. You would use version 2 (the latest) to create a position and version 1 (the only one) to close it.

Julian

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

    • I am also new to this platform.  I also have a question related to spread betting for UK tax. IG always specifically mention spread betting is exempt from capital gain tax and stamp duty but never mention income tax. Does anyone know for sure if the profits and losses in spread betting need to be reported as income?  If so, should it be the net P&L for positions that are closed within the tax year?
    • Understanding the Repo Market: A Simple Guide Imagine you have a valuable watch, but you need some quick cash to pay for a surprise expense. You go to a pawnshop and offer your watch as collateral for a short-term loan. The pawnshop gives you the cash, and you agree to buy back your watch the next day, paying a little extra for the service. This is essentially how the repo market works in the financial world. What Is the Repo Market? The repo market (short for repurchase agreement market) is a crucial part of the financial system where banks and other financial institutions borrow and lend money to each other, usually overnight. They use high-quality securities, like government bonds, as collateral to secure these loans. How Does It Work? The Borrower (Seller): Needs cash for a short period. The Lender (Buyer): Has extra cash and wants to earn a small return with minimal risk. Collateral: High-quality assets like government securities are used to secure the loan. The Process: Step 1: The borrower sells securities to the lender and receives cash. Step 2: Both parties agree that the borrower will repurchase the same securities at a future date (often the next day) at a slightly higher price. Step 3: The difference in price represents the interest paid for the loan. Why Is the Repo Market Important? Liquidity Management: It allows financial institutions to manage their day-to-day cash needs efficiently. Low Risk: Using high-quality collateral reduces the risk for lenders. Interest Rates Influence: The repo market helps central banks implement monetary policy by influencing short-term interest rates. Economic Stability: A smooth repo market ensures that money flows effectively through the financial system, supporting lending and investment. Real-World Impact Banks and Businesses: They rely on the repo market to meet short-term funding needs, which helps them operate smoothly. Consumers: While not directly involved, consumers benefit from the stability and liquidity that the repo market provides to the overall economy. Central Banks: Institutions like the Federal Reserve use the repo market as a tool to control money supply and maintain financial stability. Key Takeaways Short-Term Borrowing: The repo market is all about short-term loans, often just overnight. Secured Loans: Loans are backed by high-quality collateral, reducing risk. Essential Function: It keeps the financial system liquid and stable, much like oil in a car engine. In Summary: The repo market is like a financial "pawnshop" for big institutions. It allows banks and other entities to quickly get cash by temporarily exchanging securities, ensuring that money keeps moving through the economy. Understanding the repo market helps explain how financial institutions manage liquidity and how central banks influence interest rates to maintain economic stability. Analyst Peter Mathers TradingLounge™  Source: tradinglounge.com 
    • I've been thinking about how gamers can easily advertise their creations, and what a platform designed for that would look like. This led me to do some research, and I found something interesting. During my search, Google brought up Cros, which is described as the world's most advanced in-game advertising platform. Cross allows advertisers to reach gamers through intrinsic in-game ads that enhance the experience, while also enabling developers to monetize their games without disrupting gameplay. One key aspect is the CROS token—central to Cross's economy. The token powers staking, payments, governance, and validation within the platform. Users can earn and trade CROS by participating in the ecosystem or get it pre-market on Bitget before live trading begins on the 23rd. What do you think of this innovation?
×
×
  • Create New...
us