2013-05-10 66 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