我有一个包含FIX消息的文本文件(所有这些消息和MarketDataIncrementalRefresh(Type X)),我试图找到一种方法,使用C#中的QuickFIX从字符串中创建MarketDataIncrementalRefresh消息。
有什么建议吗?
以下是一行的示例:
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 269 = 1 270 = 9825.0 271 = 153 273 = 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 346 = 21 1023 = 3 10 = 058
答案 0 :(得分:2)
基本上这就是它的完成方式:
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根据给定的字符串设置其余的道具
答案 1 :(得分:1)
在Java中你可以使用
MessageUtils.parse(MessageFactory messageFactory, DataDictionary dataDictionary, java.lang.String messageString)
,see here使用构造函数:
Message(java.lang.String string, DataDictionary dd, boolean validate)
或fromString方法:
fromString(java.lang.String messageData, DataDictionary sessionDictionary, DataDictionary applicationDictionary, boolean doValidation)
你应该能够为quickfix / n找到类似的东西
我只找到this,它只允许您使用构造函数从字符串构建消息。如果您在所选API中找不到与上述相同的内容,那么这应该可行。
答案 2 :(得分:0)
我想执行相同的转换,但是在setString
中找不到QuickFix.Message
。我正在使用QuickFIXn
。我在methods
中进行了更多搜索,并查看了更多Message
,并找到了一种方法。您可以使用如下的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);