Ⅰ 高頻交易系統怎樣在多線程和埠通訊之間取捨
首先, 系統各業務功能的模塊化與主程序採用什麼樣的部署運行狀態(多線程或多進程)是不矛盾的,在各部分系統用同一種編程語言的前提下,兩者可以輕松地同時得到。這也是大家在答案中都提到過的解耦,但如果是多語言開發的系統,彼此之間還是需要數據通訊,或者是多個策略需要共用一個前端數據源,比如交易所只允許接一個連接,多個策略系統要用,可能沒辦法部署在一台機器上,這樣的情況下網路通訊都不可避免,可以升級通過內部網路和機器硬體來處理,換句話說,得具體問題具體分析和優化。
最後,一點建議,跟我們最近的一個R語言的策略開發SDK實例相關,R語言層面寫的策略只能是單線程的,而後端需要支持多個交易所的行情數據採集源、交易通道介面,必須是多線程,前後之間通過用C++開發R語言擴展包來銜接,中間就是採用的共享內存數據來通訊的,供借鑒參考。
Ⅱ 什麼是高頻交易系統
1、高頻交易系統概述
高頻交易是指從那些人們無法利用的極為短暫的市場變化中尋求獲利的計算機化交易。
比如,某種證券買入價和賣出價差價的微小變化,或者某隻股票在不同交易所之間的微小價差。
這種交易的速度如此之快,以至於有些交易機構將自己的「伺服器群組」(server farms) 安置到了離交易所的計算機很近的地方,以縮短交易指令到達交易所的距離。
2、高頻交易系統特點
(1)交易指令完全由電腦發送,對市場數據的響應延時在微秒級,有的甚至是納秒級;
(2)系統由專用的軟、硬體組成;
(3)系統的硬體需要放在離交易所主機很近的位置上,所謂 co-location。
3、高頻交易的兩大核心要素
(1)一是產生高頻交易信號的交易策略;
(2)二是優化交易執行過程的演算法。
1、高頻交易系統的特點
高頻系統是一種非常有特點的計算機應用。在輸入和輸出層面,數據比較簡單。
輸入用的都是市場行情數據,用的是Tick級別,甚至是更細顆粒度,比如用order book上數據。
輸出就是報單到交易所,執行層面上頻率會比較高,有可能會大量、頻繁地向交易所報單。系統運行時處理的信號源是交易所播報的實時行情,要求用最快的速度對信號進行拆解、計算和輸出,對於系統的實時計算能力的要求也比較高。
同時,一般高頻交易系統從邏輯的層面上來說是比較簡單的。
2、編程語言的選擇
目前,高頻交易系統最主流的是C/C++語言。
這是一種優點及其很顯著的語言。相比依賴虛擬機的JAVA和Python而言,C/C++是一種非常接近底層硬體的開發語言,對硬體操控的控制度、靈活度都超過其他語言,在性能上的把控力會更強。
但是,其語法相當復雜,比較難學,沒有受過系統編程訓練的開發者,掌握起來比較困難。
同時,使用C/C++編程也可以獲得及其優越的性能,這對於高頻交易系統來說,就非常重要了!並且,國內大多數的交易所提供的都是C++級別的類庫,只有用C++進行開發,才能方便進行系統對接。
Ⅲ 期貨程序化高頻交易託管伺服器(飛馬系統或者CTP系統)
我們是CTP系統
Ⅳ 高頻交易軟硬體是怎麼架構的
首先,高頻交易不一定是套利演算法。事實上HFT做的最多的業務是做市(market making),可以是把商品從一個交易所倒賣到另一個交易所,也可以是在同一個交易所內部提供某種商品的流動性。這兩種方式的共同點都是讓人們可以特定地點買到本來買不到的商品,所以本身就是有價值的,收服務費就可以盈利。
二,延遲和流量是不同的概念。低延遲不等於高數據量,事實上大部分時間交易數據流量並不大,一個market一天最多也就幾個GB。但HFT系統需要在流量高峰時也能快速響應,所以更看重延遲。這也是HFT系統和互聯網系統最大的區別所在,HFT系統的精髓在於把單機的軟硬體系統的性能發揮到極致,而不是像互聯網那樣強調高負載和延展性,動輒用幾千台機器搭集群的做法在這里是不適用的。用互聯網系統的性能指標來認知HFT系統也是沒有意義的,像淘寶這樣的應用需要保證交易的正確和一致性,包括從終端用戶的瀏覽器到淘寶後台到銀行介面之間一系列復雜的事務性數據操作,這個場景和HFT直接對接交易所走高速線路收發交易指令有天壤之別,不能用同樣的思維去理解。
三,一個HFT業務包括從主機到交易所的整條通信線路,在這條線路上有很多段不同的延遲,是需要分開討論的。如果是做跨交易所的交易,首先需要考慮的是兩個交易所之間的網路延遲。當數據通過網路到達主機的時候,有一個最基本的tick-to-trade延遲,是指主機接收到數據到做出響應所需的時間。但這個東西的測量很有技術含量,根據不同的測量方式,它可能包括或不包括網卡及網路棧的處理時間。所以拿到一個HFT系統的延遲數據時,首先要搞清楚它指的是什麼,然後再來討論。
題主提到從一個直連計算節點的router的角度來觀測,這是一個理論上看起來可行但實際仍然很模糊的概念,因為一般router本身是不做存儲和處理的,一個router會收發大量不同的數據,要理解一個接收到的包是對之前發出去的某個包的「回應」,是需要相當的處理邏輯的,一般很難這樣測。比較合理的測試仍然是在主機端做記錄,測試從收到市場數據(tick)的TCP/UDP包到發送交易指令(trade)包的時差。目前(2014)的情況是,這個延遲如果平均控制在個位數字微秒級就是頂級了。因為網路傳輸才是延遲的大頭,如果網路上的平均延遲是1毫秒(1000微秒)以上,你的單機延遲是2微秒還是20微秒其實是沒有區別的。一般單機比網路低一個數量級就可以了,比如網路上需要100微秒(很現實的數字),單機控制在10微秒足以保證速度上沒有劣勢。至於公眾報道,有時是為搏人眼球,難免有誇大的成分,不必太當真。
Ⅳ 怎麼才能做高頻交易
你好,高頻交易實現方法主要是先想好交易策略,然後把策略轉化為程序化,然後通過後期的測試做成一套完整的自動化交易系統。
Ⅵ 期貨人工高頻交易具體怎麼操作的
這種一般都是以一分鍾的走勢圖來做了!長期這樣做,不用幾個月你也可以!但這樣做風險很大!
Ⅶ TB怎麼實現高頻交易
高頻交易分為程序化高頻和手工高頻。
程序化高頻是利用計算機編寫的程序,利用計算機開平倉的快速,持倉1秒至數秒就可完成的交易。
手工高頻交易是不同於計算機編程,速度稍慢,持倉1秒至數秒就可以完成交易,有的也數1分鍾至3分鍾。