本發(fā)明屬于金融期貨領域,涉及一種適用于高頻期貨行情加速系統(tǒng)及加速方法。
背景技術:
股票市場作為重要的資本市場,在我國的經濟建設中起到了巨大的作用。其中,高頻交易因具有基本不持有隔夜頭寸,每天交易實現多次盈利等特點,而逐漸被國內金融行業(yè)所關注。由于國內股票市場目前仍然實行T+1交易制度,而隨著股指期貨、ETF套利、融資融券等新型交易手段的出現, T+1交易制度的對市場的限制愈加明顯;而大部分投資者最為關心的是以日為單位的短線,中長線投資機會。因此在允許T+0交易方式的期貨交易市場,高頻交易在國內有了發(fā)展空間。
然而,高頻交易系統(tǒng)對于行情信息延遲有著極為苛刻的要求,系統(tǒng)每節(jié)省一個微秒,甚至納秒,都意味著更大的獲利可能。但是,目前市場上常見的普通期貨行情系統(tǒng)和交易系統(tǒng),均遠遠不能滿足交易者對于高頻交易速度的極致要求。
技術實現要素:
為克服現有普通期貨行情系統(tǒng)和交易系統(tǒng)不能滿足用戶對于高頻交易速度的極致要求,發(fā)明了一種期貨行情加速系統(tǒng)及加速方法,采用軟硬件結合的方式,解決了國內行情獲取速度受限,高頻交易難以實現的技術問題。
本發(fā)明通過以下技術方案來實現上述目的:
一種期貨行情加速系統(tǒng),包括報文接收模塊、報文選擇模塊、行情分發(fā)模塊和用戶登錄模塊;
所述報文接收模塊,用于接收行情源發(fā)出的行情數據,并系統(tǒng)解析,將得到的FTD報文發(fā)送給報文選擇模塊;
所述報文選擇模塊,用于對報文接收模塊發(fā)送的FTD報文進行先后判定,提取唯一的、最先到達的行情數據發(fā)送給行情分發(fā)模塊;
所述行情分發(fā)模塊,用于將最先到達的行情數據通過用戶登錄模塊分發(fā)給登錄的用戶;
所述用戶登錄模塊,用于管理登陸本系統(tǒng)的用戶連接,包括用戶登陸報文校驗、與用戶機建立TCP連接、保持TCP連接、數據保存和記錄。
進一步地,所述報文選擇模塊與行情分發(fā)模塊之間連接有報文拷貝模塊,用于將最快行情報文根據用戶的登陸數量拷貝多份,并傳輸給行情分發(fā)模塊。
進一步地,還包括數據存儲備份模塊,用于對所有進入和發(fā)出本系統(tǒng)的數據全部進行拷貝,并將其通過DMA通道保存,以便在程序故障時進行原場景模擬。
進一步地,所述報文選擇模塊包括數據判斷模塊,分別與所述數據判斷模塊相連的數據輸入模塊、檢驗時間戳模塊、丟棄模塊和分發(fā)給用戶模塊。
進一步地,所述報文選擇模塊采用多通道并行解析方式。
進一步地,所述加速系統(tǒng)通過API與登錄用戶進行交互。
進一步地,所述報文接收模塊采用被動偵聽的方式從行情源獲取行情數據。
進一步地,所述加速系統(tǒng)采用網絡部署方式、本地部署方式和混合部署方式三種部署方式。
進一步地,所述加速系統(tǒng)還包括輔助功能模塊,為用戶使用和維護軟件提供參考;包括幫助、關于、產品升級功能。
一種期貨行情加速系統(tǒng)的加速方法,包括如下步驟:
a、通過期貨交易所端口向本加速系統(tǒng)輸入行情數據,對獲取的行情TCP報文經解析得到的FTD報文,通過數據存儲備份模塊保存和記錄后將行情包發(fā)送給報文選擇模塊;
b、對上述步驟a發(fā)送的FTD報文,根據報文中的時間戳檢驗行情數據的先后順序,對于具有相同時間戳的FTD報文,只對其中首個到達的進行提取,其余具有相同時間戳的行情FTD報文將被丟棄,將提取唯一的、最先到達的行情數據發(fā)送給下一模塊;
c、將上述步驟b中提取的唯一報文根據用戶的登陸數量拷貝多份,傳輸給行情分發(fā)模塊;
d、用戶登錄后經身份校驗與本加速系統(tǒng)建立TCP連接,通過數據存儲備份模塊將數據保存和記錄后,將上述步驟c中行情分發(fā)模塊獲取的行情數據,按照不同用戶登錄時的IP地址和端口,組織UDP報文后分發(fā)給相應的登錄用戶。
本發(fā)明的有益效果是:
1、采用硬件行情加速卡,集成TCP解壓引擎,無需內核處理;和普通的軟件行情系統(tǒng)的不同的是,本加速系統(tǒng)直接采用硬件方式對數據進行處理,類似于計算機硬件網卡,其中為期貨行情設計定制的報文接收、處理、分發(fā)模塊使得行情數據無需與計算機CPU內核進行交互就可獨立處理數據,極大提高了速度。
2、硬件協(xié)助處理FTD行情信息,進一步提高行情使用速度;從TCP包中解壓出來的FTD報文也將同樣通過硬件的方式進行處理,根據其報文時間戳進行報文速度對比,選取最快的行情進行批量轉發(fā)或者DMA傳輸。
3、為低延遲定制的DMA通道,無需內核干預,數據搬運速度達到極致;由于采用定制DMA(直接內存存?。┑姆绞綄祿M行操作,本系統(tǒng)在進行行情數據流交互運作時無需等待CPU指令交互,而可以直接將數據傳輸到所需之處。
4、匯集所有行情,配置簡單,對交換機影響??;行情源的行情數據主要通過被動偵聽的方式接收,由交換機進行鏡像操作而實現。
5、采用三種部署方式,靈活方便,既可以用戶獨享,也可以通過萬兆光口批量轉發(fā),本系統(tǒng)可以安裝在期貨公司的標準服務器上,將行情分發(fā)給多個用戶,也可以安裝在個人用戶的托管服務器上,直接將數據通過PCI-E端口輸出到本機,或者將上述兩種方式結合起來。
6、簡單易用的API和用例,可直接上手使用;用戶與本系統(tǒng)的交互通過API接口和范例,用戶可直接根據API接口規(guī)范進行編程,提高了用戶熟悉掌握本產品的效率。
附圖說明
圖1為本發(fā)明的系統(tǒng)連接示意圖;
圖2為報文選擇模塊連接示意圖;
圖3為報文拷貝模塊和報文分發(fā)模塊連接示意圖;
圖4為數據存儲備份模塊連接示意圖;
圖5為用戶登錄過程流程圖;
圖6為本發(fā)明的運行狀態(tài)圖。
具體實施方式
下面將結合附圖及實施例對本發(fā)明及其效果作進一步闡述。
如圖1所示,一種期貨行情加速系統(tǒng),采用軟硬件結合的方式,將報文接收、解析、分發(fā)和用戶管理等功能集成在FPGA硬件上,定制成硬件行情加速網卡,解決了國內行情獲取速度受限,高頻交易難以實現的技術問題。比普通行情軟件速度提高了數百倍,滿足高頻交易者對行情獲取速率的需求,也填補了該技術在國內的空白;其包括報文接收模塊、報文選擇模塊、行情分發(fā)模塊和用戶登錄模塊;
報文接收模塊,用于接收行情源即期貨交易所發(fā)出的TCP報文,并進行解析得到FTD報文,然后將FTD報文發(fā)送給報文選擇模塊。本加速系統(tǒng)中,報文接收模塊采用被動偵聽的方式從行情源獲取行情數據。被動偵聽的實現方式是指在已經建立TCP連接的通路上,由交換機對相應的數據流進行鏡像操作,形成一個復制的數據流交給FPGA進行處理。其優(yōu)勢在于,無需為建立TCP連接而消耗端口,即交易所席位。而且可以通過將多個數據流鏡像到同一端口,從而實現多路偵聽和報文比對。由于被動偵聽無法向行情源發(fā)出反饋,因此當接收到行情數據后,本系統(tǒng)會對TCP包進行解析和處理,以確保數據的正確性。其主要根據TCP報文中的Sequence Number字段對報文進行判斷,由于按順序傳輸的TCP報文中,Sequence Number具有一定的規(guī)律,因此可以根據這一點排除錯誤的報文,確保報文傳輸的準確性。
報文選擇模塊即報文處理模塊,從TOE接口接收獲得的行情FTD報文,根據FTD報文中的時間戳判定該行情數據的先后順序;通常交易所會在同一時間產生多路行情,其具有相同的時間戳,我們只提取這些行情數據中最先到達的、唯一的一條發(fā)送給行情分發(fā)模塊。
如圖2所示,報文選擇模塊具體包括數據判斷模塊,分別與所述數據判斷模塊相連的數據輸入、檢驗時間戳、丟棄和分發(fā)給用戶模塊。報文選擇模塊采用多通道并行解析方式解析報文。多通道的處理方式是指,在行情數據通過光口進入FPGA后,根據其IP地址和端口的不同,將其分別分入不同的處理器中進行預處理,提取出其中的FTD報文,然后再進行后續(xù)的處理。多通道并行解析方式的好處是避免了當多路行情間隔時間較短時,系統(tǒng)處理前一條行情時引發(fā)的后續(xù)行情不能及時處理的情況,使得能夠最快速度地判斷出行情快慢,為本加速系統(tǒng)實現加速提供保障。期貨交易所每隔一時間段發(fā)送一批行情,該批行情是相同的,具有相同的時間戳,但是走不同的通路;因相同的行情包具有同樣的時間戳,其代表了合約在該特定時間的狀態(tài);因此,時間戳可以用于識別行情,并對其速度進行判斷。數據輸入后經數據判斷模塊、檢驗時間戳模塊提取其中最先到達的進行轉發(fā)給下一模塊,其余具有相同時間戳的行情FTD報文將被丟棄。
行情分發(fā)模塊,用于將最快的行情數據通過用戶登錄模塊分發(fā)給登錄的用戶;根據不同用戶的IP地址,端口等信息,組成UDP報文進行分發(fā)。
進一步地,報文選擇模塊與行情分發(fā)模塊之間連接有報文拷貝模塊,用于將最快行情報文根據用戶的登陸數量拷貝多份,并傳輸給行情分發(fā)模塊。如圖3所示,經過篩選的行情數據FTD報文被存入寄存器Msg-Buffer當中。通過配置接口Config_interface將控制指令輸入寄存器,并控制行情分發(fā)模塊從寄存器Msg-Buffer中讀取數據。每多一個客戶訂閱了行情,行情分發(fā)模塊就從寄存器Msg-Buffer中多讀取一次,然后將讀取的報文按照不同用戶登錄時的IP地址和端口,組織UDP報文后分發(fā)給不同的用戶。
如圖4所示,本加速系統(tǒng)還包括數據存儲備份模塊,用于對所有進入和發(fā)出本系統(tǒng)的數據全部進行拷貝,并將其通過DMA通道保存,以便在程序故障時進行原場景模擬。由于采用定制DMA(直接內存存?。┑姆绞綄祿M行操作,本系統(tǒng)在進行行情數據流交互運作時無需等待CPU指令交互,而可以直接將數據傳輸到所需之處。在程序運行的過程當中,我們從Client(客戶)端和Venue(數據)端同時進行數據拷貝、保存,以便在程序故障時進行原場景模擬。
所述用戶登錄模塊,用于管理登陸本系統(tǒng)的用戶連接,包括用戶登陸報文校驗、與用戶機建立TCP連接、保持TCP連接、數據保存和記錄等功能。且本系統(tǒng)通過API方式與登錄用戶進行交互,將接收到的行情數據按照用戶指定的交易策略進行處理,用戶的登錄狀態(tài)同樣會根據系統(tǒng)API給予用戶反饋;用戶可直接根據API接口規(guī)范進行編程,提高了用戶熟悉掌握本產品的效率。如圖5所示,用戶登錄過程為:當用戶的登陸的用戶名和密碼正確時,我們將允許用戶與本加速系統(tǒng)建立TCP連接,并返回正確的登陸報文。若登陸信息有誤,也將向用戶返回錯誤信息。
本加速系統(tǒng)采用網絡部署方式、本地部署方式和混合部署方式三種部署方式。其中在網絡版部署方式中,行情加速系統(tǒng)被部署在期貨公司的標準服務器中,使用一個鏡像端口,可以支持16個客戶的行情需求。而在本地版的部署方式中,行情加速系統(tǒng)被直接安裝在客戶托管服務器的板卡內,由于沒有路由器的延遲,該部署方式可以使用戶獲得最快速的行情。將上述兩種部署方式結合使用,可以達到最為優(yōu)化的使用效果。采用三種部署方式,靈活方便,既可以用戶獨享,也可以通過萬兆光口批量轉發(fā),本系統(tǒng)可以安裝在期貨公司的標準服務器上,將行情分發(fā)給多個用戶,也可以安裝在個人用戶的托管服務器上,直接將數據通過PCI-E端口輸出到本機,或者將上述兩種方式結合起來。
所述加速系統(tǒng)還包括輔助功能模塊,為用戶使用和維護軟件提供參考;包括幫助、關于、產品升級功能。
一種期貨行情加速系統(tǒng)的加速方法,包括如下步驟:
a、通過期貨交易所端口向本加速系統(tǒng)輸入行情數據,對獲取的TCP報文經解析得到的FTD報文,通過數據存儲備份模塊保存和記錄后將行情包發(fā)送給報文選擇模塊;
b、通過TOE接口接收上述步驟a發(fā)送的FTD報文,根據報文中的時間戳檢驗行情數據的先后順序,對于具有相同時間戳的FTD報文,只對其中首個到達的進行提取,其他具有相同時間戳的行情FTD報文將被丟棄,提取唯一的、最先到達的行情發(fā)送給下一模塊;
c、將上述步驟b中提取的唯一報文根據用戶的登陸數量拷貝多份,傳輸給行情分發(fā)模塊;
d、用戶登錄后經身份校驗、API交互后與本加速系統(tǒng)建立TCP連接,數據存儲備份后,將上述步驟c中行情分發(fā)模塊獲取的行情數據,按照不同用戶登錄時的IP地址和端口,組織UDP報文后分發(fā)給相應的登錄用戶。
如圖6所示,由交易所先后或者同時發(fā)出多路行情,經報文接收模塊接收解析后,由報文選擇模塊判定快慢,提取唯一的、最先到達的進行轉發(fā)給下一模塊。根據報文中的時間戳檢驗行情數據的先后順序,對于具有相同時間戳的FTD報文,只對其中首個到達的進行提取,其他具有相同時間戳的行情FTD報文將被丟棄。
本實施例中的系統(tǒng)要求為:
Linux 64bit kernel 2.6 (推薦CentOS 6.4 64位)
Xele-MD服務程序ftd_md
Linux 64bit kernel 2.6 (推薦CentOS 6.4 64位)Xele-MD服務程序ftd_md
執(zhí)行過程為:
1. ./start_md.sh
正常啟動xele_md
2. 看到進程是否正常運行:
ps –ef | grep ftd_md |grep –v grep
當使用本地版時,如若需要修改進程CPU占用率,需要用root用戶執(zhí)行。如果希望手動修改CPU占用率,可將1000至100000寫入/cgroup/cpu/xele_0/cpu.cfs_quota_us,如寫入的為50000,則CPU占用率將為50000/100000即50%。如果不希望使用root用戶執(zhí)行,但又希望修改CPU占用率,可以于/cgroup/cpu/目錄建立xele_0目錄,并將當前進程pid寫入/cgroup/cpu/xele_0/tasks,同時將1000至100000寫入/cgroup/cpu/xele_0/cpu.cfs_quota_us,即可修改當前進程CPU占用率。
在本加速系統(tǒng)中,外部網絡連接TOE,通過萬兆光口與物理層板卡連接,之后再通過GXMII總線進行數據傳輸。
總線接口PCI-E:PCI-E的連接是建立在一個雙向的序列的(1-bit)點對點連接基礎之上,這稱之為“傳輸通道”。與PCI 連接形成鮮明對比的是PCI是基于總線控制,所有設備共同分享的單向32位并行總線。PCI-E是一個多層協(xié)議,由一個對話層,一個數據交換層和一個物理層構成。物理層又可進一步分為邏輯子層和電氣子層。邏輯子層又可分為物理代碼子層(PCS)和介質接入控制子層(MAC)。
DAM通道:直接內存存取(DMA)是數字信號處理器(DSP)中用于快速數據交換的重要技術,它具有獨立于CPU的后臺批量數據傳輸能力,能夠滿足實時圖像處理中高速數據傳輸要求。通過靈活地控制DMA,不僅能夠提高數據的傳輸效率,而且能夠充分地發(fā)揮DSP的高速性能。
系統(tǒng)總線:所有外設的接口與系統(tǒng)總線時鐘同步,不需要復雜的握手或應答機制。這樣就簡化了系統(tǒng)總線的時序行為,而且便于集成高速外設。系統(tǒng)總線以及整個系統(tǒng)的性能可以采用標準的同步時序分析技術來評估。
所有的信號都是高電平或低電平有效,便于信號在總線中高速傳輸。在系統(tǒng)總線中,由數據選擇器決定哪個信號驅動哪個外設,而不是由三態(tài)緩沖器來決定。因此外設即使在未被選中時也不需要將輸出置為高阻態(tài)。
為了方便外設的設計,地址、數據和控制信號使用分離的、專用的端口。外設不需要識別地址總線周期和數據總線周期,也不需要在未被選中時使輸出無效。分離的地址、數據和控制通道還簡化了與片上用戶自定義邏輯的連接。
以上實施例僅是示例性的,并不會局限本發(fā)明,應當指出對于本領域的技術人員來說,在本發(fā)明所提供的技術啟示下,所做出的其它等同變型和改進,均應視為本發(fā)明的保護范圍。