首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IbPy:我无法获取市场数据

IbPy:我无法获取市场数据
EN

Stack Overflow用户
提问于 2016-12-13 18:58:12
回答 1查看 691关注 0票数 1

我已经看了这里的所有东西,但它似乎不起作用,我在编程方面相对较新,任何回应都将非常感谢。我需要能够将苹果的股票价格下载到一个变量中并打印出来。我使用的是Interactive Broker‘TWS的演示版本。

代码语言:javascript
复制
from ib.ext.Contract import Contract
from ib.opt import ibConnection, message
from time import sleep

# print all messages from TWS
def watcher(msg):
print msg

# show Bid and Ask quotes
def my_BidAsk(msg):
if msg.field == 1:
    print ('%s:%s: bid: %s' % (contractTuple[0],
                   contractTuple[6], msg.price))
elif msg.field == 2:
    print ('%s:%s: ask: %s' % (contractTuple[0], contractTuple[6], msg.price))

def makeStkContract(contractTuple):
newContract = Contract()
newContract.m_symbol = contractTuple[0]
newContract.m_secType = contractTuple[1]
newContract.m_exchange = contractTuple[2]
newContract.m_currency = contractTuple[3]
newContract.m_expiry = contractTuple[4]
newContract.m_strike = contractTuple[5]
newContract.m_right = contractTuple[6]
print ('Contract Values:%s,%s,%s,%s,%s,%s,%s:' % contractTuple)
return newContract

if __name__ == '__main__':
con = ibConnection()
con.registerAll(watcher)
showBidAskOnly = False  # set False to see the raw messages
if showBidAskOnly:
    con.unregister(watcher, message.tickSize, message.tickPrice,
                   message.tickString, message.tickOptionComputation)
    con.register(my_BidAsk, message.tickPrice)
con.connect()
sleep(1)
tickId = 59

# Note: Option quotes will give an error if they aren't shown in TWS
contractTuple = ('AAPL', 'STK', 'SMART', 'USD', '', 0.0, '')
#contractTuple = ('QQQQ', 'OPT', 'SMART', 'USD', '20070921', 47.0, 'CALL')
#contractTuple = ('ES', 'FUT', 'GLOBEX', 'USD', '200709', 0.0, '')
#contractTuple = ('ES', 'FOP', 'GLOBEX', 'USD', '20070920', 1460.0, 'CALL')
#contractTuple = ('EUR', 'CASH', 'IDEALPRO', 'USD', '', 0.0, '')
stkContract = makeStkContract(contractTuple)
print ('* * * * REQUESTING MARKET DATA * * * *')
con.reqMktData(tickId, stkContract, 'AAPL', False)
sleep(15)
print ('* * * * CANCELING MARKET DATA * * * *')
con.cancelMktData(tickId)
sleep(1)
con.disconnect()
sleep(1)

这是我从IbPy得到的代码。

EN

回答 1

Stack Overflow用户

发布于 2016-12-15 12:31:29

我假设你只是在粘贴代码时把格式搞乱了。否则,它永远不会起作用。

如果你得到的是错误回调,你可能会看到类似“无效的泛型标记”之类的东西。您可以将'AAPL‘放在指定您想要的刻度类型的位置。只需将此值保留为空即可获得正常的滴答声。

con.reqMktData(tickId, stkContract, '', False)

我不确定demo使用哪个端口和id,但是如果不是7496,0(默认值),你可以在这里指定。

例如:con = ibConnection(port = 7497, clientId = 123)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41119411

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档