[英]Incorrect BeginString (FIX.4.4) in c# (Quickfixn)
I'm trying to get the MarketData from fix, but I'm seemingly answering the "Incorrect BeginString (FIX.4.4)".我试图从修复中获取 MarketData,但我似乎在回答“不正确的 BeginString (FIX.4.4)”。 The "Logon" returns OK. “登录”返回 OK。 but when I call MarketDataRequest it doesn't work.但是当我调用 MarketDataRequest 时它不起作用。 I checked my XML dictionary and it's set to FIX.4.4.我检查了我的 XML 字典,它被设置为 FIX.4.4。
quickfix C+ Incorrect BeginString with FIXT.1.1 and FIX.5.0 - FIX.5.0SP2 quickfix C+ 不正确的 BeginString 与 FIXT.1.1 和 FIX.5.0 - FIX.5.0SP2
I saw a post like mine but my dictionary xml is declared as FIX.4.4 and also "LOGON" is working.我看到了一个像我这样的帖子,但我的字典 xml 被声明为 FIX.4.4 并且“LOGON”也在工作。 so, I think a different case from the link above.所以,我认为与上面的链接不同。
here is the log.这是日志。
2020-11-10 17:27:44,148 [1] INFO QuickFixDemo.Program OnCreate FIX.4.4:xxxxxxxxxxxxxxxx->XXXXXX
2020-11-10 17:27:46,321 [8] INFO QuickFixDemo.Program ToAdmin 8=FIX.4.4|9=83|35=A|34=1|49=xxxxxxxxxxxxxxxx|52=20201110-08:27:46.309|56=XXXXXX|98=0|108=20|141=Y|10=112|
2020-11-10 17:27:46,666 [8] INFO QuickFixDemo.Program FromAdmin 8=FIX.4.4|9=83|35=A|34=1|49=XXXXXX|52=20201110-08:27:46.437|56=xxxxxxxxxxxxxxxx|98=0|108=20|141=Y|10=114|
2020-11-10 17:27:46,681 [8] INFO QuickFixDemo.Program OnLogon
2020-11-10 17:27:46,686 [8] INFO QuickFixDemo.Program ToApp 8=FIX.4.4|9=126|35=V|34=2|49=xxxxxxxxxxxxxxxx|52=20201110-08:27:46.685|56=XXXXXX|262=0|263=1|264=0|265=0|146=1|48=4004|22=8|267=2|269=1|269=0|10=033|
2020-11-10 17:27:47,093 [8] INFO QuickFixDemo.Program ToAdmin 8=FIX.4.4|9=100|35=5|34=3|49=xxxxxxxxxxxxxxxx|52=20201110-08:27:47.093|56=XXXXXX|58=Incorrect BeginString (FIX.4.4)|10=052|
2020-11-10 17:27:47,405 [8] INFO QuickFixDemo.Program FromAdmin 8=FIX.4.4|9=65|35=5|34=3|49=XXXXXX|52=20201110-08:27:47.187|56=xxxxxxxxxxxxxxxx|10=038|
2020-11-10 17:27:47,426 [8] INFO QuickFixDemo.Program OnLogout
my header of dictionary looks like this我的字典标题是这样的
<?xml version="1.0" encoding="UTF-8"?>
<fix major="4" minor="4" servicepack="0" type="FIX">
<header>
<field name="BeginString" required="Y"/>
<field name="BodyLength" required="Y"/>
<field name="MsgType" required="Y"/>
<field name="SenderCompID" required="Y"/>
<field name="TargetCompID" required="Y"/>
<field name="MsgSeqNum" required="Y"/>
<field name="PossDupFlag" required="N"/>
<field name="PossResend" required="N"/>
<field name="SendingTime" required="Y"/>
<field name="OrigSendingTime" required="N"/>
</header>
and my MarketDataRequest is like this:我的 MarketDataRequest 是这样的:
<message name="MarketDataRequest" msgcat="app" msgtype="V">
<field name="MDReqID" required="Y"/>
<field name="SubscriptionRequestType" required="Y"/>
<field name="MarketDepth" required="Y"/>
<field name="MDUpdateType" required="N"/>
<field name="AggregatedBook" required="N"/>
<component name="MDReqGrp" required="Y"/>
<component name="InstrmtMDReqGrp" required="Y"/>
</message>
my config我的配置
[DEFAULT]
BeginString=FIX.4.4
ConnectionType=initiator
ReconnectInterval=10
FileStorePath=store
FileLogPath=log
StartTime=00:00:00
EndTime=00:00:00
UseDataDictionary=Y
DataDictionary=./Fix/LMAX.xml
SocketConnectHost=fix-marketdata.london-demo.lmax.com
SocketConnectPort=443
SSLEnable=Y
SSLValidateCertificates=N
HeartBtInt=20
[SESSION]
# inherit ConnectionType, ReconnectInterval and SenderCompID from default
SenderCompID=XXXXXXXXXXX
TargetCompID=LMXBDM
Username=XXXXXXXXXXXXXXXXXXXXX
Password=XXXXXXXXXXXXXXXX
ResetOnLogon=Y
---------------- aditional information 2020/11/11 ---------------- 补充资料 2020/11/11
I debugged the quickfix and found the place where it is returning me "UnsupportedVersion exception".我调试了 quickfix 并找到了它返回“UnsupportedVersion 异常”的地方。 follow the image of my debugger.按照我的调试器的图像。
DefaultMessageFactory's "this._factories" is empty. DefaultMessageFactory 的“this._factories”是空的。 then this class returns to me the UnsupportedVersion... I'm researching the reason for this.然后这个类返回给我 UnsupportedVersion ......我正在研究这个原因。 Would you have any tips?你有什么建议吗?
the problem was that in linux Directory.GetFiles is Case Sensitive, so DefaultMessageFactory:LoadLocalDlls() wasn't able to find the local dlls in Linux.问题是在 linux Directory.GetFiles 是区分大小写的,所以 DefaultMessageFactory:LoadLocalDlls() 无法在 Linux 中找到本地 dll。 I created the pull request in github https://github.com/connamara/quickfixn/pull/663 and with this change it worked perfectly in Linux.我在 github https://github.com/connamara/quickfixn/pull/663 中创建了拉取请求,并且通过此更改它在 Linux 中完美运行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.