程式
從 C++ 解碼股市數據
作為實踐,我一直想解析交換數據並嘗試自己建構一個訂單簿算法。我從 NYSE 找到了一些樣本數據:ftp: //ftp.nyse.com/Real%20Time%20Data%20Samples/NYSE%20XDP/。
我嘗試使用 tcpdump 讀取 pcap 數據。然而,這並沒有得到潛在的市場數據。有人對我如何解析 pcap 文件以讀取市場數據有建議嗎?我目前希望在 C++ 中執行此操作,因為大多數高頻交易場所都使用 C++。
任何建議和建議都會非常有幫助。謝謝你。
我已經創建了一個如何訪問 pcap 文件中的 UDP 數據包的範例。
要點是您必須跳過乙太網/IP/UDP 標頭才能到達有效負載。這就是傳遞給您的提要處理程序的內容。
至於 tcpdump,它不會將 payload 傳遞給你,但它仍然有助於在解析時驗證你是否理解內容。例如。,
tcpdump -r NYSE_XDP_IMB_2.2.pcap -e
我推薦@chrisaycock 的完整答案。但是,如果您想要一種快速而骯髒的方式來提取有效負載,您可以使用
tshark
而不是tcpdump
:tshark -r NYSE_XDP_IMB_2.2.pcap -T fields -e data
這有時會很有用,因為許多交易所(比如納斯達克、澳大利亞和六家瑞士)通常會向您發送僅包含有效負載的歷史樣本。
例如,如果您想將充滿 NASDAQ pcaps 的目錄轉碼為範例二進制格式,並在 40 個核心上並行處理,您只需要一個神奇的單行程式碼:
find . -maxdepth 1 -name "*.pcap" | xargs -I {} -P40 sh -c 'tshark -r {} -T fields -e data | cut -c 41- | xxd -r -p > `basename {} .pcap`.bin'