尝试将字符串转换为MarketDataIncrementalRefresh

时间:2012-05-22 07:26:38

标签: c# quickfix fix-protocol

我有一个包含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

3 个答案:

答案 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对象本身的

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);