3
$\begingroup$

Hi I'm having trouble with the Interactive Broker python API. I'm using python 3.8 and connecting to IB TWS ver. 979

when I run this symbol script I get the following error:

from ibapi.client import EClient from ibapi.wrapper import EWrapper from ibapi.contract import Contract import threading import time class IBapi(EWrapper, EClient): def __init__(self): EClient.__init__(self, self) def tickPrice(self, reqId, tickType, price, attrib): if tickType == 2 and reqId == 1: print('The current ask price is: ', price) def run_loop(): app.run() app = IBapi() app.connect('127.0.0.1', 7497, 123) #Start the socket in a thread api_thread = threading.Thread(target=run_loop, daemon=True) api_thread.start() time.sleep(1) #Sleep interval to allow time for connection to server fut_contract = Contract() fut_contract.symbol = "MNQU0" #MNQ SEP'20" fut_contract.secType = 'FUT' fut_contract.exchange = 'GLOBEX' fut_contract.currency = 'USD' fut_contract.LocalSymbol = 'MNQU0' fut_contract.LastTradeDateOrContractMonth = "202009"; #Request Market Data app.reqMktData(1, fut_contract, '', False, False, []) time.sleep(100) #Sleep interval to allow time for incoming price data app.disconnect() 

Error:

Error 1 321 error validating request:-'bW' : cause - Please enter a local symbol or expiry

I can't see what I'm doing wrong. I can't find any other Contact() field relating to expiry.

Thanks

$\endgroup$
2
  • 2
    $\begingroup$ You're probably better of asking IB tech support. $\endgroup$ Commented Jul 10, 2020 at 16:19
  • 3
    $\begingroup$ ..or at a specialized group like this groups.io/g/twsapi $\endgroup$ Commented Jul 10, 2020 at 16:50

1 Answer 1

5
$\begingroup$

Try changing LocalSymbol to tradingClass and changing Last..Month to last..Month:

fut_contract = Contract() fut_contract.symbol = 'MNQU0' #MNQ SEP'20 fut_contract.secType = 'FUT' fut_contract.exchange = 'GLOBEX' fut_contract.currency = 'USD' fut_contract.tradingClass = 'MNQ' fut_contract.lastTradeDateOrContractMonth = '202009' #Request Market Data app.reqMktData(1, fut_contract, '', True, False, []) 

I switched the 4th argument to True because I didn't want to request a stream, just a snapshot. Be careful with your upper and lower cases!

This is what is returned for me when running your script with the changes I suggest:

The current ask price is: 10765.5 
$\endgroup$
1
  • 1
    $\begingroup$ Fixed! It seems that the change to tradingClass, was necessary only if the 4th arg was 'True'... Thank you!! $\endgroup$ Commented Jul 10, 2020 at 18:54

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.