如何配置QuickFIX/N

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。


 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是正整数。SocketConnectPort1,SocketConnectPort2 ... 必须是连续的,并有一个与之相匹配的数组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
时间: 2024-10-06 00:39:54

如何配置QuickFIX/N的相关文章

QuickFIX/N入门:(三)如何配置QuickFIX/N

Acceptor或者Initiator能够为您维护尽可能多的FIX会话,因而FIX会话标识的唯一性非常重要.在QuickFIX/N中,一个FIX会话的唯一标识是由:BeginString(FIX版本号).SenderCompID(发送方ID)及TargetCompID(目标方ID)等标识字符组合而成.通常还会加上SessionQualifier来保证会话的唯一性. 每个FIX会话可以有很多与它们相关联的配置信息.在编译的时候,有些配置可能还是未知的,因此可以通过类SessionSettings来

vim 配置

1 此vim配置有以下优点: 2 3 1,按F5可以直接编译并执行C.C++.java代码以及执行shell脚本,按“F8”可进行C.C++代码的调试 4 2,自动插入文件头 ,新建C.C++源文件时自动插入表头:包括文件名.作者.联系方式.建立时间等,读者可根据需求自行更改 5 3,映射“Ctrl + A”为全选并复制快捷键,方便复制代码 6 4,按“F2”可以直接消除代码中的空行 7 5,“F3”可列出当前目录文件,打开树状文件目录 8 6,支持鼠标选择.方向键移动 9 7,代码高亮,自动缩

快速配置vim+ctags+taglist

实验平台:centos 7 1.安装vim编辑器 点击(此处)折叠或打开 $sudo yum install vim 并编辑配置文件.vimrc文件,放在主目录下/home/developer 参考配置如下 点击(此处)折叠或打开 set guifont=Courier_New:h10:cANSI " 设置字体 autocmd InsertLeave * se nocul " 用浅色高亮当前行 autocmd InsertEnter * se cul " 用浅色高亮当前行 s

Linux 的vim 配置

一.vim介绍 Vim是一个类似于Vi的著名的功能强大.高度可定制的文本编辑器,在Vi的基础上改进和增加了很多特性.VIM是纯粹的自由软件. vim常用的三种命令模式: 1.命令模式(command mode) 输入 vim test.c 会直接进入命令行模式,输入i,进入插入模式. 2.插入模式(Insert mode) 按ESC,进入命令行模式 : w (保存当前文件) : wq (保存并退出vim) : q! (强制退出vim) 3.底行模式(last line mode) 二.vim配置

配置VIM下编程和代码阅读环境

作者:gnuhpc from http://blog.csdn.net/gnuhpc  http://gnuhpc.wordpress.com/ 本文环境:ubuntu 10.10/vim7.2 基本配置1) 建立基本环境: 建立三个目录:mkdir ~/.vim/{plugin,doc,syntax} -p 建立配置文件:touch ~/.vimrc .vimrc是vim的主要配置文件,我们在配置VIM时首先对它进行基本的设置.打开home目录下刚刚建立的.vimrc文件,可以对VIM进行如下

vim 标准环境的配置

最近刚刚从IDE转到了vim,很多习惯不一致,特地配置了一下vim环境.在网上找了大神的帖子,怕忘记了,特此纪念. 传送门     http://www.cnblogs.com/ma6174/archive/2011/12/10/2283393.html 使用方法:  在个人账户的主目录下面新建一个文件夹,名为: ".vimrc "  (注意有一个点,但是配置完了,这个文件好像就会隐藏起来.) 下面是详细的代码,注释很清楚,可以针对性的使用几个命令. """

Fedora 20 配置

前几天装了fedora 20, 断断续续的进行了以下配置: 1. 安装oracle java及jdk版本切换 安装的过程很简单,从oracle官网上下载jdk及jre的rpm包,使用rpm -ivh 安装.但是遇到一个问题,因为fedora系统自带了openJDK,如果安装oracle的jdk,系统还是使用的是openJDK.一种方法是卸载openJDK,但是由于依赖的原因会卸载掉一些其他的软件,或者在装其他软件时又会重新将openJDK装上.因此考虑两个版本都装,但是将jdk切换到oracle

linux应用之vim的安装与配置(centos)

1.vim的安装 #yum search vim   //查看vim相关软件信息 #yum install -y vim*  //在线安装vim 2.vim的配置 (1)~/.viminfo 在vim中操作的行为,vim会自动记录下来,保存在 ~/.viminfo 文件中.这样为了方便下次处理,如:vim打开文件时,光标会自动在上次离开的位置显示.原来搜索过的字符串,新打开文件时自动高亮显示.~/.viminfo 文件是系统自动生成. (2)/etc/vimrc vimrc文件是vim的环境设置

vim 的安装及配置

Frm :http://blog.csdn.net/g_brightboy/article/details/14229139# 简介 为了更加方便的学习和研究一个开源c++项目(当然Linux环境下),特地花了一两周的时间研究vim及其插件的配置和使用方法,整理出来:一来做个记录便于日后回顾查看,二来分享出来为大家提供方便. vim是什么 vim是一款功能强大.支持各种插件.配置极为灵活的编辑器,且支持多种主流OS(linux.Unix.mac.windows),可用来各种编程预言的coding