FIX協(xié)議-接入總結
它是由國際FIX協(xié)會組織提供的一個開放式協(xié)議,目的是推動國際貿易電子化的進程,在各類參與者之間,包括投資經(jīng)理、經(jīng)紀人,買方、賣方建立起實時的電子化通訊協(xié)議。Fix協(xié)議的目標是把各類證券金融業(yè)務需求流程格式化,使之成為一個個可用計算機語言描述的功能流程,并在每個業(yè)務功能接口上統(tǒng)一交換格式,方便各個功能模塊的連接。
目前市場 FIX 協(xié)議版本基本都是 FIX.4.4;
FIX協(xié)議框架的選用:QuickFix/J 1.6.3 (QuickFIX/J 是實現(xiàn)了FIX協(xié)議所有版本及其功能的開源軟件,100%使用JAVA實現(xiàn)。);
QuickFix/J: 主要有兩大部分,一部分是Fix協(xié)議數(shù)據(jù)的解析,另外一部分是客戶端跟服務器端建立連接并維持回話,傳輸數(shù)據(jù)。
QuickFix/J 配置詳解:http://www.quickfixj.org/quickfixj/usermanual/1.6.3/usage/configuration.html
對于大部分的 FIX 供應商,Quote 服務器為普通連接,Trade 服務器為 SSL/TSL 協(xié)議的加密連接;
如果是 SSL/TSL,若服務商證書是未受信任的,請求網(wǎng)站拿到證書 .cer 文件,需要為客戶端創(chuàng)建一個保存所有信任證書的倉庫,然后把服務端證書 .cer 文件導進這個倉庫。這樣,當客戶端連接服務端時,會發(fā)現(xiàn)服務端的證書在自己的信任列表中,就可以正常通信了。
導入具體命令:
keytool -import -trustcacerts -alias <別名> -file ./server_key.cer -keystore ./client_ks
對于QuickFix/J框架,需要在配置文件中使用 SSL 協(xié)議的 Session下添加,如下配置:
SocketUseSSL=Y
SocketTrustStore=上面生成的client_ks文件路徑
SocketTrustStorePassword=生成client_ks文件時,設置的密碼
值得注意的是,登錄不需要主動發(fā)起,每次連接上相應的服務器,QuickFix/J 會自動發(fā)起登錄請求,但是用戶名/密碼需要自己在toAdmin 生命周期函數(shù)里設置進去。如下圖,判斷請求類型是否為登錄,設置用戶名/密碼。
在 QuickFix/J 配置文件中有個DataDictionary字段,這個可以用來處理,有些服務商返回字段不符合 FIX.4.4 標準協(xié)議,QuickFix/J 報錯的情況。