tagname,Value のような解析モードで QuickFix メッセージをログに記録したい
既存の機能が見つかりません。QuickFix.Net を使用しています。
私は、提示されているすべてのタグを反復処理し、データ ディクショナリを使用してそれらを解析する何らかの方法を提供することを考えていました。
人間が読める形式でメッセージを解析する方法は、クイックフィックスにはありません。もう 1 つのオプションは、onMessage で着信 FIX メッセージを処理するときに、とにかくそれを解析してメッセージを読み取ることです。ここで、タグ名と値をファイルまたは DB にリストできます。ただし、ファイルまたは DB への書き込みは常に遅いため、そのような操作を行うと、Quickfix エンジンが遅くなる可能性があります。注意してください!!
もう 1 つのオプションは、メッセージをファイルではなく DB に記録し、DB ですべての作業を行うことですが、これはメッセージをエンジンと DB で 2 回解析することを意味します。しかし、何を読みたいか、何を読みたくないかについては、より柔軟に対応できます。
QuickFix.Message.InitializeXMLメソッドを使用すると、QuickFix.Message.ToXML()を取得して特定の辞書のタグを出力できます。
例えば。
QuickFix.Message msg = new QuickFix.Message();
// Create your message
QuickFix.Message.InitializeXML(@"c:\quickfix\spec\FIX44.xml");
Console.WriteLine(msg.ToXML());
各フィールドのタグは表示されますが、列挙値の場合はフィールドの内容が何を意味するかはわかりません。
これは、出力ウィンドウに表示されるものの例です。
<message>
<header>
<field name="BeginString" number="8"><![CDATA[FIX.4.4]]></field>
<field name="MsgType" number="35" enum="Heartbeat"><![CDATA[0]]></field>
<field name="MsgSeqNum" number="34"><![CDATA[10]]></field>
<field name="SenderCompID" number="49"><![CDATA[VCMVCON]]></field>
<field name="SendingTime" number="52"><![CDATA[20110815-09:35:33.782]]></field>
<field name="TargetCompID" number="56"><![CDATA[BLPVCON]]></field>
</header>
<body>
<field name="TestReqID" number="112"><![CDATA[R.0001.0010.000A.093519]]></field>
</body>
<trailer>
</trailer>
</message>