Jump to content

stonkyboy

Community Member
  • Posts

    3
  • Joined

  • Last visited

Posts posted by stonkyboy

  1. 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
×
×
  • Create New...
us