我正在尝试从 CME 读取静态证券定义文件,该文件位于: ftp: //ftp.cmegroup.com/fix/Production/secdef.dat.gz
由于它们似乎是标准修复消息,我想我可以使用 QuickFix 来帮助我将它们读入 C#,而不是自己解析文件。我创建了一个基本上可以满足我要求的测试应用程序,但是我遇到了两个问题:
1) 从字符串形成消息时,我收到 QuickFix 异常“无效消息:标头字段乱序”。如果我将“验证”布尔值设置为 false,则此消息消失并且构造函数成功,但可能是下一个问题的指示符。
2) 在调用 p.Crack 时,我得到了 QuickFix 异常“QuickFix.UnsupportedMessageType”,但似乎没有任何迹象表明应该不支持的消息类型是什么。
无论如何,也许 QuickFix 不打算以这种方式使用,但是关于如何让它工作的任何想法?
using System;
using System.IO;
using System.Collections.Generic;
using System.Text;
using QuickFix;
namespace TestQuickFix
{
class Program : QuickFix.MessageCracker
{
static void Main(string[] args)
{
int count = 0;
string line;
Program p = new Program();
StreamReader file = new StreamReader(@"C:\secdef.dat");
while (((line = file.ReadLine()) != null && count < 10))
{
// ISSUE #1 REQUIRES false 2ND ARG WHEN CREATING THE MESSAGE
Message m = new Message(line, false);
// ISSUE #2 Exception of type 'QuickFix.UnsupportedMessageType' was thrown.
p.Crack(m, new SessionID("beginString", "senderCompID", "targetCompID"));
}
file.Close();
}
public void OnMessage(QuickFix.FIX50.SecurityDefinition secDef, SessionID sessionID)
{
Console.WriteLine(secDef.ToString());
}
}
}