QuickFIX/N入門:三、 如何配置QuickFIX/N


Acceptor或者Initiator能夠為您維護盡可能多的FIX會話,因而FIX會話標識的唯一性非常重要。在QuickFIX/N中,一個FIX會話的唯一標識是由:BeginStringFIX版本號)、SenderCompID(發送方ID)及TargetCompID(目標方ID)等標識字符組合而成。通常還會加上SessionQualifier來保證會話的唯一性。

每個FIX會話可以有很多與它們相關聯的配置信息。在編譯的時候,有些配置可能還是未知的,因此可以通過類SessionSettings來設置或加載。 SessionSettings是一個數據字典,可以隨意設置和查詢配置信息。

SessionSettings有兩個帶參數構造函數,其中一個是System.IO.TextReader的參數,它能夠解析TextReader的配置信息;另外一個構造參數是文件名,把配置文件的文件路徑作為參數傳入,它可以解析當中的配置信息 ​​。當然,你也可以自己定義組件(例如,一個特定的數據庫存儲),然后使用SessionSettings存儲配置信息(SessionSettings提供了一個Set方法)

配置文件當中有兩個類型的配置節點: [DEFAULT][SESSION][SESSION]定義一個會話。[DEFAULT]節點定義與會話相關,但沒在會話當中明確定義的相關配置,比如連接對手方的IP、端口、心跳間隔等。QuickFIX/N並不會為所有必需配置的定義默認值。如果配置有任何一個QuickFIX/N必需的配置項缺失,它將拋出ConfigError異常,提示配置缺少或格式不正確。

1)      會話配置(SESSION

配置

描述

有效值

默認

BeginString

會話使用的FIX版本號(發送和接收消息起始字符串)

FIXT.1.1

 

FIX.4.4

FIX.4.3

FIX.4.2

FIX.4.1

FIX.4.0

SenderCompID

會話當中定義本方的ID

區分大小寫的字符串

SenderSubID

會話相關的本方的子ID (可選)

區分大小寫的字符串

 

SenderLocationID

會話相關的本方的locationID (可選)

區分大小寫的字符串

TargetCompID

本會話當中的對方ID

區分大小寫的字符串

 

TargetSubID

本會話當中的對方SubID (可選)

區分大小寫的字符串

TargetLocationID

本會話當中的對方locationID (可選)

區分大小寫的字符串

 

SessionQualifier

附加的限定詞,用於消除歧義,保證會話的唯一性

區分大小寫的字符串

DefaultApplVerID

FIXT1.1(或以上版本)需要。忽略早期版本的傳輸。指定會話的默認應用程序的版本IDApplVerID的枚舉值(請看ApplVerID字段詳細介紹),或默認BeginString

FIX.5.0SP2

-

FIX.5.0SP1

FIX.5.0

FIX.4.4

FIX.4.3

FIX.4.2

FIX.4.1

FIX.4.0

ConnectionType

定義會話當中本方的角色:acceptor或者r initiator

initiator

-

acceptor

StartTime

交易日的會話有效開始時間,這時FIX會話被激活

UTC時間,格式: HH:MM:SS,

-

EndTime

交易日的會話失效時間,FIX會話將被停止

同上

-

StartDay

對於為期一周的會話配置,一周會話開始的第一天。與STARTTIME結合使用。

使用一周中某天的英語任何縮寫都是有效的(比如,mo, mon, mond, monda,Monday都是有效的

-

EndDay

對於為期一周的會話配置,一周會話結束的最后一天。與EndTime結合使用。

同上

-

MillisecondsInTimeStamp

時間戳是否加入毫秒。FIX.4.2和更高版本可用。

Y

Y

N

ResetOnLogon

接收登錄請求時,序列號是否要復位。只用於Acceptor

Y

N

N

ResetOnLogout

正常注銷登錄時,序列號是否要復位

Y

N

N

ResetOnDisconnect

連接異常斷開后是否要將序列號重置為1

Y

N

N

RefreshOnLogon

確定是否應當從持久層登錄時恢復會話狀態。在創建熱故障切換會話時有用。

Y

N

N

EnableLastMsgSeqNumProcessed

是否在header中添加最后一條消息的序列號(可選tag369)。

Y

N

N

MaxMessagesInResendRequest

設置一次重發請求的消息的最大消息數。

任何大於0的整數。使用0為無窮大(默認)。

0

SendLogoutBeforeDisconnectFromTimeout

指定是否因超時斷開連接之前發送logout消息。

Y

N

N

IgnorePossDupResendRequests

PossDupFlagtag 43)設置為true時,是否忽略一次重發請求,

Y

N

N

 

2)      驗證配置

 

配置

描述

有效值

默認

UseDataDictionary

告訴會話是否使用數據字典,或不希望使用數據字典。 如果你要使用repeating group,你必須使用DataDictionary

Y

Y

N

DataDictionary

XML定義文件用於驗證傳入的FIX消息。如果沒有提供DataDictionary,只會做基本消息的驗證。 

有效的XML數據字典文件。QuickFIX/N 配備默認的協議字典數據

-

該配置只用於比FIXT.1.1還老的版本。詳細參考FIXT.1.1TransportDataDictionaryAppDataDictionary的配置。

FIX44.xml

FIX43.xml

FIX42.xml

FIX41.xml

FIX40.xml

TransportDataDictionary

XML定義文件用於驗證傳入的管理消息。如果沒有提供DataDictionary,只會做基本消息的驗證。該配置只用於FIXT.1.1(或更高版本)的會話。 

有效的XML數據字典文件。QuickFIX/N 配備默認的協議字典數據

-

更多信息請參考(FIX.4.0 FIX.4.4)的DataDictionary

 FIXT1.1.xml

AppDataDictionary

用於驗證應用層消息的XML定義文件。僅對FIXT.1.1(或更高版本)的會話有效。

更多信息請參考(FIX.4.0 FIX.4.4)的DataDictionary

該配置可以為每個會話指定一個自定義應用的數據字典。該配置僅用於FIXT.1.1或更新的傳輸協議。使用FIXT傳輸時,該配置可以作為指定多個應用的數據字典的前綴。例如: 

DefaultApplVerID=FIX.4.2 # For default application version ID AppDataDictionary=FIX42.xml # For nondefault application version ID # Use BeginString suffix for app version AppDataDictionary.FIX.4.4=FIX44.xml 

有效的XML數據字典文件。QuickFIX/N 配備默認的協議字典數據

-

FIX50SP2.xml

FIX50SP1.xml

FIX50.xml

FIX44.xml

FIX43.xml

FIX42.xml

FIX41.xml

FIX40.xml

ValidateFieldsOutOfOrder

 如果設置為N,字段放置區域錯誤(例如,body字段在header區域內,或在header字段在body區域內)將不會被拒絕。用於連接字段要求不嚴格的系統。

Y

Y

N

ValidateFieldsHaveValues

如果設置為N,沒有值的字段將不會被拒絕。用於連接到系統不當發送空標簽。

Y

Y

N

ValidateUserDefinedFields

如果設置為N,用戶自定義的字段將不會被拒絕,即使沒有在數據字典中定義,或沒出現在消息中。

Y

Y

N

 

1) Initiator

設置

描述

有效值

默認

ReconnectInterval

嘗試重新連接的時間間隔(秒)。僅用於 initiator。

正整數

30

HeartBtInt

心跳間隔(秒)。僅用於initiator。

正整數

-

LogonTimeout

登錄超時時間間隔(秒)

正整數

10

LogoutTimeout

注銷登錄超時時間間隔(秒)。

正整數

2

SocketConnectPort

Socket服務端口,用於建立會話。僅用於 initiator

正整數

-

SocketConnectHost

連接主機.僅用於 initiator

x.x.x.x格式IP地址或域名

-

SocketConnectPort<n>

一組備用Socket端口,用於連接會話的故障轉移,n是正整數。SocketConnectPort1SocketConnectPort2 ... 必須是連續的,並有一個與之相匹配的數組SocketConnectHost<n>

正整數

-

SocketConnectHost<n>

一組備用Socket服務主機,用於連接會話的故障轉移,n是正整數。SocketConnectHost1, SocketConnectHost2...  必須是連續的,並有一個與之相匹配的數組SocketConnectPort<n>

x.x.x.x格式IP地址或域名

-

SocketNodelay

連接是否禁用Nagle算法。在[DEFAULT]配置節點定義。

Y

Y

N

注:Nagle算法的目的是避免TCP發送大量的小數據包。TCP在接收到前一個小段的ACK消息之前,一直保存小數據包。然而Nagle算法和TCP的延遲確認策略間的交互會因一段暫時性的死鎖而使應用程序產生嚴重的性能下降。

2) acceptor

設置

描述

有效值

默認

SocketAcceptPort

監聽接入連接Socket端口。僅用於acceptor

正整數,有效的、開放的套接字端口

-

SocketAcceptHost

監聽接入連接的Socket服務的主機。如果不提供,acceptor將監聽所有網絡端口(0.0.0.0

有效的x.x.x.x格式IP地址

0.0.0.0

SocketNodelay

連接是否禁用Nagle算法。在[DEFAULT]配置節點定義。

Y

Y

N

3) Storage 

設置

描述

有效值

默認

PersistMessages

如果設置為N,被不會保存消息。這樣將迫使quickfix總是發送GapFills,而不是重新發送消息。如果你知道你永遠不需要重新發送消息,使用此配置。有用的市場數據流。

Y

Y

N

4) File  Storage 

設置

描述

有效值

默認

FileStorePath

存儲序列號和消息的文件目錄。

有效的文件存儲目錄,必須有寫入權限。

-

5) Logging 

設置

描述

有效值

默認

FileLogPath

存儲日志的目錄。

有效的文件存儲目錄,必須有寫入權限。

-

6) 配置文件的樣例

(1) Initiator 配置文件的樣例

     只能用一個[DEFAULT]節點,可以有多個[SESSION]節點,多個[SESSION]節點是定義多個會話。

#定義會話的默認配置(default節點,對於全部會話有效,當然允許 SESSIION節點重寫)
[DEFAULT]
FileStorePath=store
FileLogPath=log
ConnectionType=initiator
ReconnectInterval=60
SenderCompID=TW
 
# session定義
[SESSION]
# FileStorePath,FileLogPath,ConnectionType, 
#    ReconnectInterval and SenderCompID 等配置延用 default的配置
BeginString=FIX.4.1
TargetCompID=ARCA
StartTime=12:30:00
EndTime=23:30:00
HeartBtInt=20
SocketConnectPort=9823
SocketConnectHost=123.123.123.123
DataDictionary=somewhere/FIX41.xml
 
[SESSION]
BeginString=FIX.4.0
TargetCompID=ISLD
StartTime=12:00:00
EndTime=23:00:00
HeartBtInt=30
SocketConnectPort=8323
SocketConnectHost=23.23.23.23
DataDictionary=somewhere/FIX40.xml
 
[SESSION]
BeginString=FIX.4.2
TargetCompID=INCA
StartTime=12:30:00
EndTime=21:30:00
# 自定義ReconnectInterval時間間隔值,不用default配置節點的配置,僅本會話有效
ReconnectInterval=30
HeartBtInt=30
SocketConnectPort=6523
SocketConnectHost=3.3.3.3
# (可選)連接端口及連接服務主機列表, 用於故障恢復時自動切換
SocketConnectPort1=8392
SocketConnectHost1=8.8.8.8
SocketConnectPort2=2932
SocketConnectHost2=12.12.12.12
DataDictionary=somewhere/FIX42.xml

 

(2)      Acceptor 配置文件的樣例

 

# 定義會話的默認配置(default節點)
[DEFAULT]
FileStorePath=store
FileLogPath=log
ConnectionType=acceptor
ReconnectInterval=60
SenderCompID=ARCA
 
# session definition
[SESSION]
# FileStorePath,FileLogPath,ConnectionType, 
#    ReconnectInterval and SenderCompID 等配置延用 default的配置
BeginString=FIX.4.1
TargetCompID=TW
StartTime=12:30:00
EndTime=23:30:00
HeartBtInt=20
SocketAcceptPort=9823
DataDictionary=somewhere/FIX41.xml
 
[SESSION]
BeginString=FIX.4.0
TargetCompID=TW
StartTime=12:00:00
EndTime=23:00:00
HeartBtInt=30
SocketAcceptPort=8323
DataDictionary=somewhere/FIX40.xml
 
[SESSION]
BeginString=FIX.4.2
TargetCompID=TW
StartTime=12:30:00
EndTime=21:30:00
#自定義ReconnectInterval時間間隔值,不用default配置節點的配置,僅本會話有效
ReconnectInterval=30
HeartBtInt=30
SocketAcceptPort=6523
# (可選) 僅監聽指定主機的連接請求
SocketAcceptHost=127.0.0.1
DataDictionary=somewhere/FIX42.xml

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM