Acceptor或者Initiator能够为您维护尽可能多的FIX会话,因而FIX会话标识的唯一性非常重要。在QuickFIX/N中,一个FIX会话的唯一标识是由:BeginString(FIX版本号)、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(或以上版本)需要。忽略早期版本的传输。指定会话的默认应用程序的版本ID。ApplVerID的枚举值(请看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 |
当PossDupFlag(tag 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.1的TransportDataDictionary和AppDataDictionary的配置。 |
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。 |