Quickfix/n 1.4 中提取此处定义的消息类型的最有效方法是什么:http : //www.fixprotocol.org/FIXimate3.0/en/FIX.5.0SP2/messages_sorted_by_type.html
我目前使用var msgType = Message.GetMsgType(message.ToString());结果为“A”的登录消息。有没有更好的办法?我尝试确定其中的消息类型ToAdmin(...)以捕获传出的登录请求消息,以便我可以添加用户名和密码。
我很想通过 MessageCracker 来做到这一点,但到目前为止,我还没有找到一种方法来实现捕获所有剩余消息类型,以防我没有实现所有 OnMessage 重载。(请参阅相关问题:Quickfix,是否有“全能”方法 OnMessage 来处理未由重载方法处理的传入消息?)。
谢谢
我正在编写一个使用快速修复库的程序。文档很差,所以我请求SO研究员的帮助。
我在 Group 类中看到有迭代器。所以我认为有一些类似 STL 的方法来解析重复组。我错了吗?有人可以提供一个简单的例子吗?
预先非常感谢您。
我查看了 FIX v4.2 规范,我不清楚当 TCP 连接在会话中间丢失时应该是什么预期行为。
更具体地说,假设当前的序列号是 100 并且此时 TCP 连接丢失,当任何一方尝试恢复会话时,它重新发送消息号 100,或者启动一个新的登录会话?
在描述 FIX 会话时,规范说一个会话有一个登录和一个注销,但可以跨越多个物理连接。这让我认为当 TCP 连接丢失时,恢复过程不应该以登录消息开始,但我对此并不乐观。
提前致谢!
需要快速帮助。我是 QuickFixJ 的新手。我的 txt 文件中有一条 FIX 消息。我需要将其转换为 FIX50SP2 格式。我附上代码片段。
String fixMsg = "1128=99=25535=X49=CME34=47134052=20100318-03:21:11.36475=20120904268=2279=122=848=336683=607400107=ESU2269=1270=140575271=152273=121014000336=2346=521023=1279=122=848=336683=607401107=ESU2269=1270=140600271=206273=121014000336=2346=681023=210=159";
System.out.println("FixMsg String:"+fixMsg);
Message FIXMessage = new Message();
DataDictionary dd = new DataDictionary("FIX50SP2.xml");
FIXMessage.fromString(fixMsg, dd, false);
System.out.println("FIXMessage Output:" + FIXMessage.toString()); // Print message after parsing
MsgType msgType = new MsgType();
System.out.println(FIXMessage.getField(msgType));
Run Code Online (Sandbox Code Playgroud)
这是输出:
FixMsg String:1128=99=15835=X49=CME34=47164052=2012090312102051175=20120904268=1279=122=848=336683=607745107=ESU2269=1270=140575271=123273=121020000336=2346=501023=110=205
FIXMessage Output:9=6135=X34=47164049=CME52=2012090312102051175=20120904268=110=117
quickfix.FieldNotFound: Field [35] was not found in message.
at quickfix.FieldMap.getField(FieldMap.java:216)
at quickfix.FieldMap.getFieldInternal(FieldMap.java:353)
at quickfix.FieldMap.getField(FieldMap.java:349)
at MainApp.main(MainApp.java:52)
Run Code Online (Sandbox Code Playgroud)
我想提取 MsgType 字段(字段 35)。你能告诉我我错在哪里吗?我观察到的是,解析为 FIX50SP2 格式后,转换 FIX 消息缺少许多数据元素(有关详细信息,请参阅输出)
谢谢
假设我正在运行一个基于网络的交换并且有一个新客户注册。我为该客户提供了一个新的 CompID,现在我想将该 CompID 添加到我的接受方。我是否必须重新启动我的接受器或者可以动态完成吗?
必须提前就 CompID 达成一致,然后将其粘贴到某处的配置中,这似乎不太具有可扩展性。
我见过一些据说可以做到这一点的示例,但它们似乎只是通过将配置设置为*. 还有其他方法可以做到这一点吗?
我已经实现了一个使用QuickFIX/J(版本1.6.0)的Java程序.它从交易对手那里获得一条FIX消息(执行报告),其中包含重复的组NoPartyIDs(标签453),其中包含以下值
(Tag 453) NoPartyIDs = 4
(Tag 447) PartyIDSource = D
(Tag 448) Party ID = XXX
(Tag 452) PartyRole = 1
(Tag 447) PartyIDSource = D
(Tag 448) Party ID = XXX
(Tag 452) PartyRole = 66
(Tag 447) PartyIDSource = D
(Tag 448) Party ID = XXX
(Tag 452) PartyRole = 55
(Tag 802) NoPartySubIDs = 1
(Tag 447) PartyIDSource = D
(Tag 448) Party ID = XXX
(Tag 452) PartyRole = 7
Run Code Online (Sandbox Code Playgroud)
消息的这一部分的屏幕截图:

我的程序会自动发送拒绝消息
(Tag 58) Text …Run Code Online (Sandbox Code Playgroud) 我正在使用带有 python 的 quickfix。查看此处的文档页面告诉我们如何获取字段。假设 a message = fix.message(with quickfix as fix) 来自交易对手。我可以通过调用获得 35 (MsgType) 字段
message.getHeader().getField(fix.MsgType())
例如,它返回 35=X.
我的问题是:是否有任何方法可以返回X?或者我是否必须切片所有内容(例如35=X[3:],返回X)并因此知道所有字符串的长度?
QuickFIX 是否提供在单个步骤中获取传入 FIX 消息的所有现有字段的可能性?(我为 Python 使用 1.14.3 版。)
根据 QuickFIX 文档,可以通过某种方式获取字段值:
price = quickfix.Price()
field = message.getField(price)
field.getValue()
Run Code Online (Sandbox Code Playgroud)
各种消息类型包含不同的字段,因此对每个字段都这样做会很尴尬。此外,有时不知道消息中是否存在某些字段。如何在不知道消息包含哪些字段的情况下获取消息的所有字段?
我正在尝试使用QuickFIX/n通过FIX协议(4.4)连接到Bloomberg.
Bloomberg要求使用TLS 1.2协议.我按照说明安装了PFX证书.
我当前的FIX配置文件如下所示:
[DEFAULT]
ConnectionType=initiator
ReconnectInterval=2
FileStorePath=store
FileLogPath=fixlog
StartTime=06:00:00
StartDay=monday
EndTime=22:00:00
EndDay=friday
SocketConnectHost=xxx.xx.xxx.xx
SocketConnectPort=8228
# standard config elements
[SESSION]
BeginString=FIX.4.4
SenderCompID=MY_COMP_ID
TargetCompID=BBG_COMP_ID
HeartBtInt=60
ValidateFieldsOutOfOrder=N
UseDataDictionary=Y
DataDictionary=FIX_BBG.xml
CheckLatency=N
[SSL]
SSLEnable=Y
SSLProtocols=Tls12
SSLValidateCertificates=Y
SSLCheckCertificateRevocation=N
SSLCertificate=C:\Services\FixEngineService\cert\pkcs12\cert.pfx
SSLCertificatePassword=xxxxxxxxxxxx
Run Code Online (Sandbox Code Playgroud)
当我打开会话时,我立即断开连接.实际上,达到服务器并不是网络问题.布隆伯格告诉我他们有一个"未知协议"的消息.我没有得到任何记录.
你觉得我的配置有问题吗?有没有人成功建立与彭博的quickfix连接?如果是的话,根据您的经验,我的设置可能出现什么问题?
我正在尝试在 Centos7/Ubuntu16 和 MacOSX 上安装适用于 python 的 QuickFix FIX 引擎模块。我按照http://www.quickfixengine.org/quickfix/doc/html/上的说明进行操作
\nCentos/Ubuntu 上的安装与 ; 完美配合pip3.6 install quickfix。但是我在 MacOSX Mojave 10.14 上不断收到错误
首先我运行 axcode-select --install来安装命令行工具,然后我brew install gcc.
最后我执行了pip3 install quickfix. 该命令一直失败,并出现很长的错误日志,如下所示:
Collecting quickfix\n Downloading https://files.pythonhosted.org/packages/62/b0/caf2dfae8779551f6e1d2bc78668d8f5a2303d21311fdd54345722b68cbc/quickfix-1.15.1.tar.gz (1.5MB)\n |\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88| 1.5MB 8.0MB/s \nBuilding wheels for collected packages: quickfix\n Building wheel for quickfix (setup.py) ... error\n ERROR: Command errored out with exit status 1:\n command: /Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6 -u -c \'import sys, setuptools, tokenize; …Run Code Online (Sandbox Code Playgroud)