我已经成功地编写了代码,从TWS的演示版中提取关于我的位置的信息,使用该代码:
tws_conn = conn.Connection.create(port=7497, clientId=100)
tws_conn.register( acct_update, msg.updateAccountValue,
msg.updateAccountTime, msg.updatePortfolio)
tws_conn.connect()
tws_conn.reqPositions()
tws_conn.reqAccountUpdates(True,'DU15181')
但是,它将信息转储为:
^{pr2}$我想知道如何将上述信息存储到一个数组中,其中包含合同或股票代码的列、投资组合中的数量和购买价格的列
如果列表中的每个条目都是一个列表本身(并且子列表中的每个索引位置总是包含同一个字段),那么“列”要求在某种程度上是模糊的
您收到的消息将发送到您在tws注册的回调。每个“转储”字段都可以用“点”表示法或通过dict类似的方法(如“keys”、“values”和“items”)访问
主要的挑战是合约:IB提供了大量交易所和不同交易资产的通道。“contract”对象(以及IB后端的信息)似乎反映了一种对所有事物提供统一/统一访问的努力,同时也表明它们必须建立在现有基础设施之上。在
你提到“股票行情”,所以我想你可能会喜欢这样的东西:IBM-STK-SMART带有“ib”行业标准符号(第二个字段表示它是股票,第三个字段表示ib将使用智能路由来更新订单和价格)
我们来看看列表:
不幸的是,
^{pr2}$ibpy
消息中的“keys”方法不是classmethod
,但名称实际上是__slots__
。在持有acct_update
方法的类中,可以执行以下操作:如果您不想通过索引访问列表中的字段,而是更喜欢ibpy已经提供的字段的名称,那么还可以对dict进行dict
这将允许您按名称获取最新的股票信息,并按名称访问字段。在
如果你需要保持每票的历史记录
您可以存储“items”而不是值,然后根据需要访问元组。在
除了使用ibpy,我还将导入IBWrapper,可以从 Github:https://github.com/anthonyng2/ib
它们是您更新的账户价值和投资组合摘要:
^{pr2}$更新您的职位:
在篇幅和主要变化的情况下增加另一个答案。考虑到我正在编写一段代码,我用它回答了另一个问题,稍作修改也可以用于投资组合。在
代码:
结果
^{pr2}$最后2行可以直接导入(例如)Excel。或者,如果它是一个字典列表(打印出来的内容),它可以在脚本中进一步操作。在
相关问题 更多 >
编程相关推荐