Interactive Broker API error 321?
Interactive Broker API error 321?
Loading saved threads...
gearhead · External communityPost link
External question — Quantitative Finance Stack Exchange
Author: gearhead
Original post: https://quant.stackexchange.com/questions/55569
License: CC BY-SA 4.0 — https://creativecommons.org/licenses/by-sa/4.0/
Adaptation: HTML converted to plain text; contact email addresses removed.
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
Quote
Report
amdopt · External communityPost link
External answer — Quantitative Finance Stack Exchange
Author: amdopt
Original post: https://quant.stackexchange.com/a/55572
License: CC BY-SA 4.0 — https://creativecommons.org/licenses/by-sa/4.0/
Adaptation: HTML converted to plain text; contact email addresses removed.
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
Quote
Report
Post Reply
Quoted from Forex.com.bd-Editorial External answer — Quantitative Finance Stack Exchange Author: amdopt Source score (net votes, not local likes): 5 Original post: https://quant.stackexchange.com/a/55572 License: CC BY-SA 4.0 — https://creativecommons.org/licenses/by-sa/4.0/ Adaptation: HTML converted to plain text; contact email addresses removed. 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
Checking account access…