FIX协议-接入总结

它是由国际FIX协会组织提供的一个开放式协议,目的是推动国际贸易电子化的进程,在各类参与者之间,包括投资经理、经纪人,买方、卖方建立起实时的电子化通讯协议。Fix协议的目标是把各类证券金融业务需求流程格式化,使之成为一个个可用计算机语言描述的功能流程,并在每个业务功能接口上统一交换格式,方便各个功能模块的连接。

目前市场 FIX 协议版本基本都是 FIX.4.4;

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

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

QuickFix/J 配置详解:http://www.quickfixj.org/quickfixj/usermanual/1.6.3/usage/configuration.html

对于大部分的 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 报错的情况。