2

我有一个带有FIX messages(所有这些和 MarketDataIncrementalRefresh(类型 X))的文本文件,我正在尝试找到一种方法使用QuickFIXin从.C#MarketDataIncrementalRefreshstrings

有什么建议么?

这是一行的示例:

1128=9 9=263 35=X 49=CME 34=10568699 52=20110110205433535 75=20110110 268=2 279=1 22=8 48=812201 83=1243518 107=GEZ2 22730=1 27115=27115=3 205433000 336=2 346=14 1023=1 279=122=8 48=812201 83=1243519 107=GEZ2 269=1270=9826.0 271=453 273=205433000 336=2 3416=21 1023=3=

4

3 回答 3

3

基本上这是它的完成方式:

string line = sr.ReadLine();
QuickFix42.MessageFactory fac = new QuickFix42.MessageFactory();
QuickFix.MsgType msgType = QuickFix.Message.identifyType(line);
QuickFix.Message message = fac.create("", msgType.getObject() as string);
message.setString(line, false);

工厂在给定消息后创建正确的消息类型,因此在这种情况下,由于类型为 {X},QuickFix.Message 消息是指向 MarketDataIncrementalRefresh 的指针,然后 message.setString 从给定字符串设置其余的道具。

于 2012-05-22T15:32:03.763 回答
1

在Java中你可以使用

MessageUtils.parse(MessageFactory messageFactory, DataDictionary dataDictionary, java.lang.String messageString)

看这里。

Message 对象本身,请参见此处使用构造函数:

Message(java.lang.String string, DataDictionary dd, boolean validate) 

或 fromString 方法:

fromString(java.lang.String messageData, DataDictionary sessionDictionary, DataDictionary applicationDictionary, boolean doValidation) 

您应该能够为 quickfix/n 找到类似的东西

我只找到了这个,它只允许您使用构造函数从字符串构建消息。如果您在选择的 API 中找不到上述等效项,那么这应该会起作用。

于 2012-05-22T09:11:57.133 回答
0

我想执行相同的转换,但setStringQuickFix.Message. 我正在使用QuickFIXn. 我搜索了更多并检查了更多methodsMessage找到了一种方法。您可以使用Message.FromString如下方法。

如果您不想使用,DataDictionary则只需将其传递为null.

string strMsg = "8=FIX.4.49=54735=AE34=4";

var dataDictionary = new QuickFix.DataDictionary.DataDictionary();
dataDictionary.Load("../../../spec/fix/FIX44.xml");

var tradeCaptureReport = new QuickFix.FIX44.TradeCaptureReport();
tradeCaptureReport.FromString(strMsg, false, dataDictionary, dataDictionary, _defaultMsgFactory);
于 2020-07-23T06:58:14.453 回答