盈透证券API

介绍盈透接口使用方法

Previous page Next page

DataCenter行情录制插件

基于TWS API

DataCenter可以通过TWS ApiTrader Workstation/IB Gateway建立TCP连接,从而实现全球范围内合约行情录制。 在启动之前,您需要先完成下面前置工作:

  • 确保您的Linux服务器上安装有完整的Java runtime
  • 确保您的Linux服务器支持图形界面
  • 下载并安装盈透客户端,您可以选择Trader Workstation或者IB Gateway

如果您对安装Java runtime以及图形界面存在疑问,可以在常见问题页面查看Java和VNC的安装使用方法。 Trader Workstation是完整的交易客户端,您可以在之上完成大部分账户管理以及交易操作;而IB Gateway是一个轻量级代理,占用的资源更少,两者对于ThunderTrader来说可以提供完全一样的功能。

Producer/Deploy producer页面新增libibkr_tws_data_collector_plugin_imp.so插件实例。

../ibkr-tws-deploy-tws-plugin.png

client_id是TWS的API接入ID,可以填写0,不同的接入端id不重合即可。host是您TWS进程所在机器IP地址,如果与DataCenter同一台机器,则一般填写172.17.0.1(从Docker容器内部访问localhost的代理地址);如果您使用的是TWS Workstation,则Port一般填写4001,如果是IB GatewayPort一般填写7496

点击桌面图标启动Trader Workstation或者IB Gateway

../ibkr-tws-click-icon.png

这里以Trader Workstation为例,打开软件后,可以看到主界面。

Classic版:

../ibkr-tws-main-classic.png

或Mosaic版:

../ibkr-tws-main-mosaic.png

在菜单中找到全局设置,在API菜单中完成必要的设置:

../ibkr-tws-api-setting-1.png 如上图所示,确保Enable ActiveX and Socket Clients选项被选中,而Read-Only API选项取消选中,端口可以使用默认的7496。

../ibkr-tws-api-setting-2.png

确保Allow connections from localhost only选项取消选中,在白名单中需要添加DataCenter的地址,通常为172.17.0.2

完成上述设置后,使用搜索功能找到需要录制行情的合约。

../ibkr-tws-find-instrument.png

并且在右键菜单中的Financial Instrument Description,找到合约的ExchangeContract ID

../ibkr-tws-instrument-description.png

此时我们需要拼接生成ThunderTrader体系中的UniqueID,拼接规则如下:

ibkr.tws.${type}.${exchange}.${contract id}
  • type:订阅类型,如果是l1则代表L1行情(Top of book, L1),如果是l2则代表深度行情(Market depth, L2),当前版本仅支持l1
  • exchange:交易所名称,区分大小写
  • contract id:合约ID,纯数字

这里以COMEX交易所的伦敦铜期货为例,经过拼接后的UniqueID为ibkr.tws.l1.COMEX.651096940

将我们需要订阅的所有合约整理为配置文件,格式为:

{
	"instruments": [
		"${UniqueID 1}",
		"${UniqueID 2}",
		"${UniqueID 3}",
		...
		"${UniqueID n}"
	]
}

例如:

{
	"instruments": [
		"ibkr.tws.l1.COMEX.651096940",
		"ibkr.tws.l1.COMEX.419743906",
		"ibkr.tws.l1.COMEX.662922793",
		"ibkr.tws.l1.COMEX.668631619",
		"ibkr.tws.l1.COMEX.447766922",
		"ibkr.tws.l1.COMEX.447585333"
	]
}

并且通过Producer/View producers更新到插件配置中。

../ibkr-tws-plugin-configuration.png

您可以在ThunderDevel中查看录制的行情数据。

../ibkr-tws-hg-notebook.png

基于Client portal Gateway

提示:目前在中国大陆地区该接口并不稳定,如无特殊情况建议使用基于`TWS API`的行情录制插件

DataCenter内置了盈透证券Client Portal Gateway以及行情录制插件,您需要打开82端口映射即可使用该功能。

$ mkdir ${your tick storage path}
$ sudo docker run --privileged -d \
 -p ${your web UI port}:80 \
 -p ${your IBKR authentication port}:82 \
 -v ${your tick storage path}:/thunder-ticks \
thundertrader/datacenter:1.81

其中${your IBKR authentication port}是您期望执行IBKR账户验证的端口。例如:

$ mkdir /home/my_ticks
$ sudo docker run --privileged -d \
 -p 8080:80 \
 -p 8082:82 \
 -v /home/my_ticks:/thunder-ticks \
thundertrader/datacenter:1.81

您需要在DataCenter所在的机器上进行IBKR账号登录,以上述8082端口为例,在浏览器中打开http://localhost:8082/登录IBKR账号完成授权。

由于盈透证券对于API安全性考虑,目前只开放在localhost进行本地登录。您可在Linux上安装VNC服务以及浏览器进行登录操作。

../ibkr-auth.png

使用IBKR discovery寻找目标合约。该功能在Utilities/IBKR discovery选项卡下,您可以通过下列4个API寻找合约对应的conid,详细使用文档可参考IBKR Instrument discovery

API 功能
/trsrv/stocks 查询Stock合约
/trsrv/futures 查询Future合约
/iserver/secdef/search 全市场搜索
/iserver/secdef/info 查看合约详情

../ibkr-instruments-discovery.png

根据您希望录制的合约列表,生成配置信息。格式如下:

{
	"instruments": [
        "instrument unique names..."
	]
}

例如:

{
	"instruments": [
        "ibkr.FUT.526262864",
        "ibkr.FUT.526262961",
        "ibkr.FUT.597391683",
        "ibkr.FUT.597391689",
        "ibkr.FUT.597391703",
        "ibkr.FUT.597391723"
	]
}

添加收集实例。选择libibkr_data_collector_plugin_imp.so插件,其中gateway_host填写localhost, gateway_port填写5000,并点击SUBMIT提交。 ../ibkr-deploy-producer.png

在Producers列表中,写入刚才生成的配置信息,并点击UPDATE提交。

../ibkr-update-configuration.png

通过监控查询行情信息收集是否符合预期。

../ibkr-metric.png

DataCenter在/ibkr_gateway路径下导出了GatewayAPI接口,您可以直接进行访问查询所需要的合约信息:

$ curl -X GET -k "http://localhost:8080/ibkr_gateway/v1/api/trsrv/futures?symbols=ZS"|python3 -m json.tool|grep "conid"|awk -F' ' '{print "\"ibkr.FUT."$2}'|sed 's/,/",/g'

"ibkr.FUT.526262864",
"ibkr.FUT.526262961",
"ibkr.FUT.597391683",
"ibkr.FUT.597391689",
"ibkr.FUT.597391703",
"ibkr.FUT.597391723",

您可以在DevelStudio中查看录制的行情数据。

../ibkr-ticks-plot.png

点击下载ibkr.ipynb

Engine行情&交易插件

敬请期待。