2013-05-10 78 views
3

我有字符串FIX消息作为输入,我想将它转换成FIX消息。我正在使用QuickFix 1.13.3(我从quickfix网站下载了几天)如何解析字符串FIXMessage到C#中的FIXMessage对象#

我是QuickFix的新手。 google返回的大部分示例代码/帮助都是针对Java的,并且当应用程序将FIXMessage有效内容视为字符串时,也没有建议使用直接的方式。

我在网上看到的大多数样本都是人们使用QuickFix进行端到端的情况,即通过套接字进行通信以获取消息并破解它。

在我的情况下,我有我自己的通信层,它只是给我一个字符串有效载荷表示一个完整的FIX FIX消息。我需要的只是解析字符串并获取所有标签/值的列表。

尽管我自己写了一个小实用程序来使用标准的string.split()来解析FIX消息......但是有人建议我使用QuickFix,因为它支持所有事情。

但我很努力地开始即使是QuickFix上的一项非常基本的任务,因此任何帮助解析字符串有效载荷将非常感激。

下面是我找的

//转换器或破解

public QuickFix44.Message GetMessage(string payload); 

//来电

string newOrderSinglePayload = "8=FIX.4.49=13635=D.............."; 

QuickFix44:Message message = GetMessage(newOrderSinglePayload); 

if (message is QuickFix44.NewOrderSingle) 

{ 
    //I am happy 
} 

如果QuickFix的是太多这个简单的工作,然后我打开使用任何其他工具(免费&开源)

回答

7

QuickFIX是德有限设计为端到端。它的一些类可以用于其他目的,但这些不太常见的用例并没有太多的文档。

您可以将FIX字符串传递给Message的构造函数。

// Uses default DataDictionary (e.g. message definitions from FIX spec) 
Message::Message(const std::string& string, bool validate) 

// Uses a DataDictionary that you supply. 
// If your msg has custom fields, you need this one. 
// (You'll create a DD from a custom msg definition XML file that 
// you'll also need to create) 
Message::Message(const std::string& string, 
        const DataDictionary& dataDictionary, 
        bool validate) 

该消息转换为更具体的类型,你可以将其提供给一个更具体的类的构造函数,如ExecutionReport(Message)

您是否考虑过QuickFIX/n本机C#端口?

这将和quickfix/N功:

IMessageFactory _defaultMsgFactory = new DefaultMessageFactory(); 

var dd = new QuickFix.DataDictionary.DataDictionary(); 
dd.Load("../../../spec/fix/FIX44.xml"); 

var msg = new QuickFix.FIX44.ExecutionReport(); 
msg.FromString(msg_string, false, dd, dd, _defaultMsgFactory); 

如果你的XML有沉重的自定义,你可能会想再生源和第一重建库。

+0

在他们的.NET API,ExecutionReport构造函数中,或者事实上任何代表特定类型(即NOS)的构造函数都不会将消息类型作为输入。它的签名是ExecutionReport(string orderId,string,int ........),就像当某人有所有输入时创建ER一样 – Ishwar 2013-05-13 08:59:19

+0

Ugh。对不起,我不太了解包装API。它在某些方面与C++有所不同,令人沮丧。您是否尝试过[QuickFIX/n](http://quickfixn.org),本地C#端口? – 2013-05-13 14:38:24

+2

我添加了如何在QuickFIX/n中完成它。 – 2013-05-13 14:42:09