Jump to content
  • 0

Unknown error when placing order on the demo API


stonkyboy

Question

Hello! I've been lurking in the community for a little while and recieved a lot of tips & tricks so thanks to all who have helped me get this far through my project. 

I've built my 1st trading bot in python and i'm trying to test it using the demo API. I've had no issues using most of the endpoints (fetch markets, get open orders, get open positions, etc) but for some reason most of my 'create new position' requests are failing witout explaination. The strange thing is when I try to open positions using the same parameters and same demo credentials on the API companion it succeedes and gives me a deal reference.

About 20% of my open position requests either succeed or return a sensible error like 'MINIMUM_SIZE_ORDER' or 'MARKET_CLOSED_WITH_EDITS' so I think my headers are fine.

I'm wondering if anyone has had a similar issue when trying to work with the demo api? 

Here's what i'm recieving after I try to open a position: 

"Order Failed: {'date': '2020-06-11T14:00:47.022', 'status': None, 'reason': 'UNKNOWN', 'dealStatus': 'REJECTED', 'epic': 'SB.D.EBSUS.DAILY.IP', 'expiry': None, 'dealReference': 'V5NMJXCZUFF44TE', 'dealId': 'DIAAAADW5TZM8BA', 'affectedDeals': [], 'level': None, 'size': None, 'direction': 'BUY', 'stopLevel': None, 'limitLevel': None, 'stopDistance': None, 'limitDistance': None, 'guaranteedStop': False, 'trailingStop': False, 'profit': None, 'profitCurrency': None}"

Here's the python code that i'm using to open a position: 

Connect to API:

data = {"identifier": DEMO_USERNAME, "password": DEMO_PASSWORD, "encryptedPassword":None}

headers = {'Content-Type': 'application/json; charset=utf-8',
           'Accept': 'application/json; charset=utf-8',
           'X-IG-API-KEY': API_KEY,
           'Version': '2'
           }

r = requests.post(API_ENDPOINT, data=json.dumps(data), headers=headers)

headers_json = dict(r.headers)
CST_token = headers_json['CST']
x_sec_token = headers_json["X-SECURITY-TOKEN"]


authenticated_headers = {'Content-Type': 'application/json; charset=utf-8',
                         'Accept': 'application/json; charset=utf-8',
                         'X-IG-API-KEY': API_KEY,
                         'CST': CST_token,
                         'X-SECURITY-TOKEN': x_sec_token}

auth_r = requests.get(base_url, headers=authenticated_headers)
d = json.loads(auth_r.text)

base_url = 'https://demo-api.ig.com/gateway/deal/session'

data = {
    "accountId": DEMO_ACC_ID,
    "defaultAccount": "True"}  # Main Demo acc

auth_r = requests.put(
    base_url,
    data=json.dumps(data),
    headers=authenticated_headers)

Open Position: 

base_url = 'https://demo-api.ig.com/gateway/deal/positions/otc'

data = {
    "epic": "UB.D.INTC.DAILY.IP",
    "expiry": "DFB",
    "direction": "BUY",
    "size": "1.144",
    "orderType": "MARKET",
    "level": None,
    "guaranteedStop": "false",
    "stopLevel": None,
    "stopDistance": "1748",
    "forceOpen": "true",
    "limitLevel": None,
    "limitDistance": None,
    "quoteId": None,
    "currencyCode": "USD"
}

r = requests.post(base_url,data=json.dumps(data),headers=authenticated_headers)

Any help in solving this issue would be greatly appreciated! 

Cheers. 

  • Great! 1
Link to comment

1 answer to this question

Recommended Posts

  • 0

The problem was that I was specifying a size with three decimal places... but the limit is two. Think this limit holds with every number you can provide to the API. Would be good if the tech team could explain that in the API response. 

  • Like 2
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
  • General Statistics

    • Total Topics
      22,068
    • Total Posts
      92,908
    • Total Members
      42,474
    • Most Online
      7,522
      10/06/21 10:53

    Newest Member
    scobes2
    Joined 17/05/23 10:51
  • Posts

    • Does anyone else know any other SB providers that you can use to trade through TV?  I've only so far seen CFD providers which doesn't work for me due to tax reasons (mainly the hassle of having to account for it as well as the obvious cost).
    • Is there any update on when/if there will be any integration with Tradingview???
    • The anonymity of cryptocurrency transactions can vary depending on the specific cryptocurrency you use and the methods you use. While some cryptocurrencies provide a degree of privacy and anonymity, it is important to note that achieving complete anonymity can be difficult. Most cryptocurrencies operate on a pseudonymous basis. Transactions are recorded in a public ledger, called a blockchain, using cryptographic addresses instead of personal information. However, these addresses are usually not directly linked to a real identity, unless someone voluntarily discloses this information. Some cryptocurrencies, such as Monero (XMR) and Zcash (ZEC), are specifically designed to increase privacy and anonymity. I read on https://deeplab.com/darkweb/anonymous-sudan-launches-cyberattacks-on-middle-eastern-news-outlets-expands-target-list-with-four-additional-names that some people use this anonymity as a cyber attack.
×
×
  • Create New...