福利来了,老虎(盈透)用户用excel实时数据抓取教程

10月9日 盈透发布了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软件,请去https://www.ibkr.com.cn/cn/index.php?f=16352下载。

进入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强大。

谢谢观赏

听说输入以下密码,看得人更多。 $AMD(AMD)$ $苹果(AAPL)$ $谷歌(GOOG)$ $特斯拉(TSLA)$ $英伟达(NVDA)$ $阿里巴巴(BABA)$ $短期VIX指数期货ETN(VXX)$

免责声明:上述内容仅代表发帖人个人观点,不构成本平台的任何投资建议。

举报

评论26

  • 推荐
  • 最新
  • 8d9217f
    ·2017-11-14
    K神,可否再写个帖子,介绍一下如何利用EXCEL抓取TWS的已有持仓,以及达到某个条件自动开仓平仓的方法呢?例如我有一个束勒式短仓组合(卖两边期权),想让EXCEL帮我监控盈亏,当盈利从高位回落一定程度时自动平仓(类似trail单),该用到哪些命令呢?
    回复
    举报
    收起
    查看更多 2 条评论
  • Riccoffee
    ·2017-11-29
    请问 如何可以指定日期 如想显示苹果17年九月10号收盘价 怎样指定;另外,在不付费购买数据的情况下 比较实用的分析还能做什么?
    回复
    举报
    收起
    查看更多 1 条评论
  • rick001
    ·2017-11-29
    simons哥,方便加个微信吗lq_17fuxe
    回复
    举报
    收起
  • 期权小能手
    ·2017-11-11
    请问在输入=RTD"tws.twsrtdserverctrl",,"sym=IBM", "sec=OPT", "exp=20171110", "strike=160", "right=put", "exch=SMART", "cur=USD", "qt=Bid" 后显示函数错误是怎么回事
    回复
    举报
    收起
    • 期权小能手
      找到问题了=RTD("tws.twsrtdserverctrl",,"sym=ES", "sec=FUT", "exch=GLOBEX", "cur=USD", "exp=201712") 要加括号才对
      2017-11-12
      回复
      举报
  • 小白相
    ·2020-05-08
    老虎用户都有tws账号?
    回复
    举报
  • harveyghw
    ·2017-11-29
    太费劲了,不适合炒股票适合玩技术
    回复
    举报
  • 美股日内汉克
    ·2017-11-29
    貌似操作有点小复杂。
    回复
    举报
  • 幽灵船长
    ·2017-11-29
    看着就很高深啊
    回复
    举报
  • cool3d
    ·2017-11-10
    這個厲害,神人等級,佩服。
    回复
    举报
  • 克己自律
    ·2017-11-09
    老虎牛人真多
    回复
    举报
  • 水云间
    ·2017-11-09
    赶不上大神节奏
    回复
    举报
  • 亏成狗的Todd
    ·2017-11-09
    牛逼牛逼,我群真是卧虎藏龙。
    回复
    举报
  • 老倒霉蛋
    ·2017-11-29
    不明觉厉
    回复
    举报
  • Ewind
    ·2017-11-29
    学习一下
    回复
    举报
  • 一只优雅的猪
    ·2017-11-09
    厉害了
    回复
    举报