FIX协议-接入

560 阅读4分钟

盈透证券(Interactive Brokers), 简称IB, 全球知名的互联网券商,在IB 开立一个账户即可在其平台交易全球多种金融产品(股票,期货,外汇。。。)

中国很多小型的互联网券商(包括一些初创的小型的金融科技公司)大多都(不是全部)选择IB作为美股下游券商(通俗点讲就是:美股下单全都走IB通道

大多选择IB除了IB的稳定可靠外,主要是费用成本的考虑(IB的收费较为合理,具体的收费标准IB官网有很详细的介绍)

一般对接IB有两种方式:

(1) IB API . API 支持多种语言的接口,例如:JAVA, C#,Python等。

  API 的开发流程一般可归结为:API调用服务+TWS

(2) IB FIX. FIX 开发应该是业内最标准的方式(主要是因为FIX协议在全球的广泛使用)

  FIX得开发流程一般可归结为:FIX实现服务+IB Gateway

 

因为FIX 是业内标准的解决方案,因此这几篇博文主要介绍IB FIX开发。

为了叙述的方便,现假设有一家中国小型的金融科技公司A,A 公司想对接IB,即A公司想通过IB来交易美股。

在A公司进行IB FIX开发之前,首先需要搭建FIX开发的测试环境,测试环境的搭建主要包括以下步骤:

(1)A公司首先需要在IB开立一个实盘账户(该账户资产必须保证在10000美元以上)

(2)A公司联系IB QA部门,向QA申请测试环境

(3)QA收到申请后,会检查A实盘账户的资金情况,若资金大于等于10000美元,QA会向

  A 发送"FIX Intergration Information.pdf"文件(该文件相当于A用户需求的问卷调查)

  这个问卷主要是IB想了解用户通过IB交易的金融产品的种类,用户的连接方式、断线后委托的处理方式等。

(4)上述文件填写完后,IB QA 会开立IB Gateway的测试账户名和密码,TWS的测试账号和密码。

(5) A公司开发人员下载IB Gateway 和TWS 软件,在IB Gateway 的安装路径下,将jts.ini文件用QA 提供的文件替换掉。

  A公司开发人员用测试账号和密码登录 Gateway 和TWS,登录成功则代表测试环境搭建成功。 目前市场 FIX 协议版本基本都是 FIX.4.4;

FIX协议框架的选用:QuickFix/J 1.6.3 (QuickFIX/J 是实现了FIX协议所有版本及其功能的开源软件,100%使用JAVA实现。);

QuickFix/J: 主要有两大部分,一部分是Fix协议数据的解析,另外一部分是客户端跟服务器端建立连接并维持回话,传输数据。

对于大部分的 FIX 供应商,Quote 服务器为普通连接,Trade 服务器为 SSL/TSL 协议的加密连接;

如果是 SSL/TSL,若服务商证书是未受信任的,请求网站拿到证书 .cer 文件,需要为客户端创建一个保存所有信任证书的仓库,然后把服务端证书 .cer 文件导进这个仓库。这样,当客户端连接服务端时,会发现服务端的证书在自己的信任列表中,就可以正常通信了。

导入具体命令:

keytool -import -trustcacerts -alias -file ./server_key.cer -keystore ./client_ks

对于QuickFix/J框架,需要在配置文件中使用 SSL 协议的 Session下添加,如下配置:

SocketUseSSL=Y

SocketTrustStore=上面生成的client_ks文件路径

SocketTrustStorePassword=生成client_ks文件时,设置的密码

值得注意的是,登录不需要主动发起,每次连接上相应的服务器,QuickFix/J 会自动发起登录请求,但是用户名/密码需要自己在toAdmin 生命周期函数里设置进去。如下图,判断请求类型是否为登录,设置用户名/密码。

在 QuickFix/J 配置文件中有个DataDictionary字段,这个可以用来处理,有些服务商返回字段不符合 FIX.4.4 标准协议,QuickFix/J 报错的情况。