Running a simple data download request through IBKR TWS Python API Following one of the tutorials: https://www.youtube.com/watch?time_continue=1065&v=GmTPDzcko6k
Debugging yields that app.reqContractDetails(1, contract)
returns None
Info on this issue seems limited
from ibapi.client import EClient
from ibapi.wrapper import EWrapper
from ibapi.contract import Contract
class TestApp(EWrapper, EClient):
def __init__(self):
EClient.__init__(self, self)
def error(self, reqId, errorCode, errorString):
print("Error: ", reqId, " ", errorCode, " ", errorString)
def contractDetails(self, reqId, contractDetails):
print("contractDetails: ", reqId, " ", contractDetails)
def main():
app = TestApp()
app.connect("127.0.0.1", 7496, 0)
contract = Contract()
contract.symbol = "BYND"
contract.secType = "STK"
contract.exchange = "SMART"
contract.currency = "USD"
contract.primaryExchange = "NASDAQ"
print (app.reqContractDetails(1, contract))
app.run()
app.reqContractDetails(2, contract)
if __name__ == "__main__":
main()
Actual:
"C:\Users\Erix Liechtenstein\AppData\Local\Programs\Python\Python37-32\python.exe" "C:/TWS API/source/pythonclient/HelloWorld.py"
None
ERROR -1 2104 Market data farm connection is OK:eufarm
ERROR -1 2104 Market data farm connection is OK:cashfarm
ERROR -1 2104 Market data farm connection is OK:usopt
ERROR -1 2104 Market data farm connection is OK:usfarm
ERROR -1 2106 HMDS data farm connection is OK:ushmds
Update:
tried the following per brian's advice - still does nothing :(:
class TestApp(EWrapper, EClient):
def __init__(self, addr, port, client_id):
EWrapper.__init__(self)
EClient.__init__(self, self)
self.connect(addr, port, client_id)
thread = Thread(target=self.run)
thread.start()
def error(self, reqId, errorCode, errorString):
print("Error: ", reqId, " ", errorCode, " ", errorString)
def contractDetails(self, reqId, contractDetails):
print("contractDetails: ", reqId, " ", contractDetails)
def main():
app = TestApp("127.0.0.1", 4002, 0)
app.run()
contract = Contract()
contract.symbol = "BYND"
contract.secType = "STK"
contract.exchange = "SMART"
contract.currency = "USD"
contract.primaryExchange = "NASDAQ"
app.reqContractDetails(1, contract)
time.sleep(3)
app.disconnect()
if __name__ == "__main__":
main()