ftp://ftp.cmegroup.com/fix/Production/secdef.dat.gzにある CME から静的証券定義ファイルを読み取ろうとしています。
これらは標準的な修正メッセージのように見えるので、ファイルを自分で解析するのではなく、QuickFix を使用して C# に読み込むことができると考えました。基本的に必要なことを行うテストアプリを作成しましたが、2 つの問題があります。
1) 文字列からメッセージを作成するときに、「無効なメッセージ: ヘッダー フィールドの順序が正しくありません」という QuickFix 例外が発生します。「validate」ブール値を 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());
}
}
}