2010-02-22 39 views
26

如何使用python解析FIX消息? (如在「金融」 FIX協議FIX消息)解析FIX消息的最佳方法是什麼?

+4

13選票和關閉!做得好! – chrisapotek 2012-07-11 16:39:34

+3

這個問題也讓我感興趣,可惜看到它關閉了。 – Guillaume07 2012-10-01 07:48:11

+0

雖然這個問題是特定於.NET的,但這裏有一些通用的想法:http://stackoverflow.com/questions/4907848/whats-the-most-efficient-way-to-parse-fix-protocol-messages- in-net – SteveWilkinson 2012-10-01 16:17:42

回答

9

你是指使用QuickFIX? (我可以在你的標籤中看到QuickFIX)

如果是這樣的話,我不知道。 通常,爲FIX消息編寫簡單的解析器並不困難。 我發現valid fix上的網絡工具可以完成這項工作。

+0

QuickFix被許多提供FIX解析器的公司用作底層FIX解析器。它很容易得到一個QuickFIX解析器運行,我建議你試試看。 – Luhar 2010-02-25 18:31:39

1

沒有一個最好方式,但考慮到您或SO系統連接入quickfix標籤,看看QuickFix開源FIX引擎會一個開始的好地方。

很多商業供應商以及如果你在一個公司的重要,或者如果你想要更多的支持和服務。

好運

4

FIX格式出奇地令人討厭地解析(因爲非XML格式,即幾乎每個人都使用的格式,沒有子組的開始和結束標記,而必須根據標籤排序規則進行處理,以及不在子組中的標籤,標題或尾部可以以任何順序)。

因此,不要自己解析它,我建議你使用現有的庫來做到這一點。

唯一良好維護的開源選項是Java QuickFIX/J庫。

有許多商業解決方案,例如, CameronFIX

+1

也維護C++ QuickFIX庫。 – 2010-02-22 14:04:03

6

除了使用實際的quickfixengine,當你知道它包含特定的標籤時,很容易解析修復消息。

它包含0x1分離的'key = value'字符串對。一個複雜因素是組,因爲您必須弄清楚標記是組中的第一個(組標題),然後確定組的結束時間(當它遇到不在組中的另一個標記時)。

另一個有問題的字段是RawData,它可以包含任何內容,包括字段分隔符0x1,但它前面是RawDataLength,因此您必須先讀取它,然後讀取RawData標記後的RawDataLength字節數,以便到達下一個字段。

我相信quickfixengine使用標籤字典,它可以找出標籤是一個組中的第一個,然後繼續添加,直到擊中不在組中的標籤。

當我需要對FIX消息進行自定義分析時,我主要知道什麼消息和我們期望的數據,以便我可以對這些消息進行調整。

2

來自quickfixj源代碼,它使用treeMap來處理FIX消息。

關於XML格式,我認爲FIX更好,雖然在JAVA解析更困難。因爲XML太重了。

+0

我同意基於XML的FIX,除了血腥的重複組。 – ProfK 2011-04-21 16:50:58

+0

我同意ProfK。派對等重複的團體是一種痛苦。 – Kelly 2011-11-18 04:39:03

+0

此外,大多數人試圖通過分解SOH來「解析」FIX消息,這完全忽略了RawData(標記96)的問題。順便說一句,使用TreeMap可能不是最好的方法,因爲它使得難以識別和支持消息中的重複標籤。我認爲列表可能是更好的數據結構表示。 – noahlz 2012-02-21 17:25:26

相關問題