Jump to content
  • 0

InvalidHeader error for creating working order through trading_ig api


wki

Question

Hi, trying to create a new working order with a trigger level going through the Python trading_ig API.

currencyCode = 'GBP'
direction = 'BUY'
epic = 'CS.D.BITCOIN.TODAY.IP'
expiry = 'DFB'
forceOpen = True
guaranteedStop = True
level = str(11450)
limitDistance = str(150)
timeInForce='GOOD_TILL_CANCELLED'
limitLevel = None
orderType = 'LIMIT'
quoteId = None
size = str(1)
stopDistance = str(150)
stopLevel = None
goodTillDate = str(datetime(year = 2020, month = 9, day = 3, hour = 18, minute = 0))

response = ig_service.create_working_order(currencyCode, direction, epic,
        expiry, guaranteedStop, level, size, timeInForce, orderType, limitDistance, limitLevel, 
        stopDistance, stopLevel, goodTillDate, quoteId, forceOpen, None)

However, getting a "InvalidHeader: Value for header {VERSION: 2} must be of type str or bytes, not <class 'int'>" error.  Tried various permutations on the string values, have a feeling that the problem lies elsewhere (pebkac most likely 😉 ). 

 

Link to comment

8 answers to this question

Recommended Posts

  • 0

You have two parameters that conflict with each other, "timeInForce" and "goodTillDate".

Change the "orderType" parameter to "type"

I moved what I had in C# to Python in this repo, so it is easier to point things out:

https://github.com/oneangrytrader/brokerapiclients/blob/master/IG.Python.Api.Client/tests/TestIgClientWorkingOrders.py

Within the test you can see the parameters that I am using. The test uses GBPUSD with a limit and a stop of 100 away from the initial level.

image.thumb.png.c5f88d765fc0a0aebc7d50a2529ce9a0.png

 

 

  • Like 1
  • Sad 1
Link to comment
  • 0

Thanks again for your help @jlzbut still struggling. I reverted back to the basic create_open_position to test the connection, and start again from there, etc.  So this works: 

response = ig_service.create_open_position(
    currency_code='GBP', 
    direction='BUY', 
    epic='CS.D.BITCOIN.TODAY.IP',
    expiry='DFB', 
    force_open=True, 
    guaranteed_stop=False, 
    level=None, 
    limit_distance='150', 
    limit_level=None, 
    order_type='MARKET', 
    quote_id=None, 
    size='1', 
    stop_distance='150', 
    stop_level=None,
    trailing_stop=False, 
    trailing_stop_increment=None)

But this does not (same InvalidHeader error as original post):

response = ig_service.create_working_order(
    currency_code='GBP', 
    direction='BUY', 
    epic='CS.D.BITCOIN.TODAY.IP',
    expiry='DFB', 
    force_open=True,
    time_in_force = 'GOOD_TILL_CANCELLED',
    good_till_date=None,
    guaranteed_stop=False, 
    level='10800', 
    limit_distance='150', 
    limit_level=None, 
    order_type='LIMIT', 
    deal_reference=None, 
    size='1', 
    stop_distance='150', 
    stop_level=None)

Link to comment
  • 0

ahh, that is why I don´t like weak-typed languages. C# would have spotted that error in the fist run.

Also looking at the repo you sent, it seems that the streaming API has many errors and there are pending pull requests to be completed. The C# library works without any problem so you might want to have a look at it and give up Python.

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

    • Total Topics
      20,089
    • Total Posts
      88,150
    • Total Members
      69,080
    • Most Online
      7,522
      10/06/21 10:53

    Newest Member
    GrantEttalong
    Joined 04/10/22 00:37
  • Posts

    • Australian Stock Market Elliott Wave Technical Analysis Trading Levels ASX 200 Index (XJO), Forex AUDUSD, US Dollar DXY, Commonwealth Bank CBA, BHP Group (BHP), Rio Tinto (RIO), Fortescue Metals Group (FMG), Newcrest Mining NCM, Australian 2 Yr Government Bonds Yield. Technical Analysis Trading Strategies ASX200 Market Summary: Bear Market Rally  Elliott Wave count: (c) of iv) of 3 of (1) ASX200 Trading Strategy: Wait for the top of Wave iv), confirming the top and then look to short. Gold stocks and other resource stocks have much the same count, including the AUDUSD Video Chapters 00:00   ASX200 (XJO) 08:04 Commonwealth Bank CBA  10:44  Iron Ore Copper BHP RIO FMG  19:53 Newcrest Mining NCM / US GOLD/ GDX 19:53  Lithium Stocks 19:53  Australian 2 Yr Government Bonds Yield 23:49  AUDUSD /  DXY US Dollar  30:05 Thanks for watching! Analyst Peter Mathers TradingLounge™ Australian Financial Services Licence - AFSL 317817 Source: tradinglounge com    
    • Stock Market SP 500, NASDAQ 100 NDX, Russell 2000 RUT. Dow Jones Industrial (DJI) Elliott Wave Technical Analysis and Trading Strategies. US Markets News Today:The Dow moved higher 800 points as stocks rose broadly. Treasury yields fell back towards 4% Elliott Wave Market Summary: The move up is a bear market rally on lower volume, corrective. Expect the next session to open higher then fade lower. Elliott Wave count: iv of (c) of iv) of 3 of (1) Day / Trend Trading Strategies: Day traders look to short Wave cv of (c) of iv) and also the turn lower as Wave (i) and (ii) building shorts... Video Chapters 00:00 S&P500  15:29 NASDAQ 100 (NDX) 19:06 Russell 2000 (RUT)  19:57 Dow Jones (DJI) 21:18 End. Thanks for supporting! Analyst Peter Mathers TradingLounge™ Australian Financial Services Licence - AFSL 317817 Source: tradinglounge com    
    • Market data to trade on Tuesday: AUD rates and GRG earnings          
×
×
  • Create New...