我使用IB(交互式经纪人)示例代码来自定义我的交易界面。我在start()中放入无限循环以随时下订单。但是我发现当程序进入循环时,我订阅的报价没有出来。
如果我删除循环,则报价会出来。如果我将循环放入线程中,则引号不会出现。如果我创建GUI,则引号仍然没有出来。
def start(self):
if self.started:
return
self.started = True
if self.globalCancelOnly:
print("Executing GlobalCancel only")
self.reqGlobalCancel()
else:
print("Executing requests")
print('Start subscribing market data......')
self.reqMktData(9901, ContractSamples.COMEXGold(), '', False, False, [])
while True:
cmd = input('Command > ')
if cmd == '7':
print('Sell')
self.placeOrder(self.nextValidOrderId, ContractSamples.COMEXGold(), OrderSamples.MarketOrder("SELL", comex_gold_position))
elif cmd == '9':
print('Buy')
self.placeOrder(self.nextValidOrderId, ContractSamples.COMEXGold(), OrderSamples.MarketOrder("BUY", comex_gold_position))
elif cmd == 'Q' or cmd == 'q':
print('Quit')
exit()
else:
print('Unknown command.')
print("Executing requests ... finished")
我希望报价总能显示出来,我可以输入命令同时下订单。