如何使用IB示例代码同时下订单和获取市场数据?

时间:2019-07-31 08:58:03

标签: python python-3.x

我使用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")

我希望报价总能显示出来,我可以输入命令同时下订单。

0 个答案:

没有答案