简体   繁体   English

c# (Quickfixn) 中的 BeginString (FIX.4.4) 不正确

[英]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?你有什么建议吗?

DefaultMessageFactory.cs:Create1

DefaultMessageFactory.cs:Create2

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM