盈透证券用户用excel抓取实时数据教程(附盈透API版本更新信息)

盈透很久前发布的API 9.73,开始正式支持RTD(Real Time Data)。顾名思义,就是实现数据的实时抓取,主要的对象是microsoft的excel。当然你必须要开启TWS(tradework statio,盈透的交易软件,每个老虎的用户都可以使用,如果你还没有登录密码,请联系盈透)。下面是整个工作的流程图(此图来自于thinkorswim,机理基本一致,把thinkorswim看成TWS即可):

我们在excel里的G2单元格输入命令,要求在该单元格显示$RUT的现价,此命令会传输至RTD模块,RTD模块会与TWS建立通讯,告诉TWS我需要$RUT的现价值,TWS将1017的现价返回给RTD模块,RTD模块将数据填入G2。整个数据传输都是实时的,也就是说你能看到G2单元格的数字是实时变化的,也就是$RUT的现价。整个RTD的数据更新是非常快的,最低能到250毫秒,也就是1秒内更新数据4次。

接下来我一步一步来教大家怎么实现这个过程,

STEP1 首先要下载IB API 9.73,并安装。网址为http://interactivebrokers.github.io/#,第一个界面点agree后弹出的页面下载完成后安装。

STEP2 确保你的Trader Workstation 是963以上版本,如果你没有TWS软件,请去盈透官网下载即可。

进入TWS软件,点界面上的配置-API-设置,在图上的三个选项上打钩,确认端口号为7496,应用并关闭。

STEP3 打开excel。确保你的excel是32位版本,64位版本的excel需要通过visual studio recompile。Excel的版本在文件-账户-关于excel里面看。直接在A1单元格内输入=RTD(“tws.twsrtdserverctrl”,,”sym=ES”, “sec=FUT”, “exch=GLOBEX”, “cur=USD”, “exp=201712”, “qt=Bid”)就能在A1单元格内显示ES12月份期货的买入价了,是不是非常简单?

命令和参数

接下来就是最重要的命令和参数怎么设定了。基本的规则可见API Reference Guidehttp://interactivebrokers.github.io/tws-api/tws_rtd_server.html,但是你可能会看得云里雾里。简单起见,我举几个例子作为范本:

在TWS的设定里,常用的交易品种分为股票(STK),期权(OPT),外汇(CASH),期货(FUT)等。每种交易品种的公式需要的参数是不一样的。

股票公式

=RTD(“Tws.TwsRtdServerCtrl”,,”sym=IBM”, “sec=STK”, “exch=ISLAND”, “qt=Ask”)

返回$IBM的卖出价,=RTD(“Tws.TwsRtdServerCtrl”)这部分是任何公式必须的,sym=股票的代码,sec=交易的种类(见上段),exch=交易所,qt=标题,这里为卖出价。

期货公式

=RTD(“tws.twsrtdserverctrl”,,”sym=ES”, “sec=FUT”, “exch=GLOBEX”, “cur=USD”, “exp=201712”, “qt=Bid”)

返回12月ES期货的买入价,参数基本一样,不同的地方为cur=货币,exp=期货交割日。

期权公式

=RTD(“tws.twsrtdserverctrl”,,”sym=IBM”, “sec=OPT”, “exp=20171110”, “strike=160”, “right=put”, “exch=SMART”, “cur=USD”, “qt=Bid”)

返回IBM到期日为17年11月10日行权价为160的看跌期权的买入价格,注意期权特有的参数,exp=到期日 strike=行权价 right=call/put。

以上的几个基本的命令行,相信可以满足大部分的需求,你只要按照自己的股票代码或者期权来修改参数就可以了。

下面是qt的参数列表,决定了你需要返回的参数值,这个表很重要。

应用意义

1、 通过RTD结合DDE、ActiveX、Python等API可以实现自动化的交易,RTD的本身也在excel里得到充分的利用,可以用复杂的公式、图表等进行数字统计和分析。也可以利用RTD抓取的数据进行自行建立数据库。

2、 可以用RTD对自行的设计报价的界面了,下图是我的excel的期权链,是不是比较整洁和美观呢?

如果我做个期权组合,比如买1手2300卖1手2400的spread,我想要知道组合的报价,很简单,只要A4-A8就行了,是不是很方便。

3、RTD还有其他有用的功能,这里不再赘述。Excel远比你的tws强大。

谢谢观赏

原文地址:https://www.laohu8.com/post/112598

美国盈透证券优惠信息(新、老盈透用户均适用):

盈透证券优惠开户链接:https://www.e-investingguide.com/interactivebrokers

无论你是已经在盈透证券入金交易的老客户或者是正准备在盈透证券开户的新客户,如果你需要免除盈透证券每月10美元账户维护费以及降低盈透证券账户交易佣金水平(具体能优惠和降低多少,取决于你的交易量,已经入金交易的盈透用户也能挂靠降低佣金),都可以联系我,在IB盈透证券出入金及TWS软件使用、API接口使用、开立机构类账户(离岸对冲基金、家族办公室、自营交易集团)等方面遇到问题的也可以联系我询问。 可以发Email邮件联系我,我的邮箱地址是 giftlord@gmail.com

我的微信号:47268101 或者打开微信,直接扫描下方二维码添加我为好友即可咨询:

盈透证券API发行要点: 支持以股数为单位的市场数据

【版本10.10】

支持WSH日历、以股数为单位的市场数据、更多属性

在API Clients中支持WSH meta和日历事件。

新增对买量、卖量和最后数量应用以股数为单位的市场数据。

新增PostToAts定单属性,以支持将IBKR ATS定单重新传递至SMART(Reroute to SMART)。见:网页链接

placeOrder/openOrder新增AutoCancelParent属性。

到期前有效定单新增持续时间定单属性。

不再支持ETradeOnly、FirmQuoteOnly和NbboPriceCap定单属性。

【版本9.81】

统一分配组和分配配置文件

API客户如对接版本983以上的TWS,且启用了旗标/勾选框“在分配方法中使用账户分组”,则其将看到以下变化:

如果参数为“分组”,则replaceFA和requestFA都将收发统一的分组/分配配置文件列表。

如果参数为分配配置文件,则replaceFA和requestFA都将收到错误。

placeOrder将支持指定的分配配置文件名称作为faGroup名称;faMethod可省略

如果指定的实际分组名称和faMethod为空或被省略,则使用该分组的默认方法。否则,请求的方法将被应用于定单。

如果定单是针对分配配置文件的,则openOrder回叫会报告“分配配置文件”来代替“分组”。

以下接受分组名称的API呼叫也会接受替代分组名称的分配配置文件名称:

reqAccountSummary / cancelAccountSummary

reqPositionsMulti / cancelPositionsMulti

reqAccountUpdatesMulti / cancelAccountUpdatesMulti

【版本9.80】

针对完整功能的细微修复

除非另有说明,否则本次发行要求TWS 980或以上的版本。

细微修复使980成为具备完整功能的推荐版本。

【版本9.79】

.Net标准2.0、家庭代码、基于价格的波动率和其它较小修复

除非另有说明,否则以下项目均要求使用TWS 979或以上版本。

.Net标准2.0: .Net客户库目标 .Net标准2.0

更为完整的家庭代码信息(服务器端更改)

python API添加了setConnectionOptions()。现在,您可像在其它API技术中一样,在Python中添加”+PACEAPI”连接选项。

基于价格的波动率报价:参见新增跳动点类型92-99:网页链接

该等跳动点要求TWS 980+版本

修复:python和C++客户库小修复

【版本9.76】

价格管理算法、已完成的定单

除非另有说明,否则以下项目均要求使用TWS 976或以上版本。

价格管理算法:我们为价格管理算法属性添加了对默认值的支持。有关IBKR全新的价格管理算法的更多信息请见网页链接

已完成的定单:reqCompletedOrders()函数允许返回所有已完成的定单,不论是已成交的还是已取消的