高頻交易系統(tǒng)資訊技術(shù)探討系列 (2)[系統(tǒng)交易]
?
?
?
4. 演算法設(shè)計(jì)
?
HFT系統(tǒng)無止境的追求執(zhí)行效率,就軟體面,效率決定于「演算法的設(shè)計(jì)方式」、「選擇的發(fā)展語言」,甚至連使用的「作業(yè)系統(tǒng)」都有關(guān)系。
?
先從演算法的設(shè)計(jì)談起,以HFT系統(tǒng)中常常必須處理的排序與搜尋來說(過去學(xué)習(xí)資料結(jié)構(gòu)時(shí),光是排序、搜尋就有許多不同的演算法,「旅行者問題」、「背包問題」折磨多少學(xué)者的腦細(xì)胞),不同演算法的效率不同。
?
評估演算法效率的指標(biāo),包括時(shí)間複雜度(執(zhí)行過程的耗時(shí))、空間複雜度(執(zhí)行過程的記憶體耗用)與正確性(對于大空間的搜尋,不見得可以即時(shí)得到全域最佳解,只能力求接近)等。
?
交易過程的許多步驟,都涉及搜尋的工作,一般的搜尋策略包括線性搜尋與二元搜尋,複雜空間的搜尋策略則可以寫一整本書,很多AI的演算法都用于空間搜尋。
?
舉例來說,我目前有一個(gè)研究,研究的目的是驗(yàn)證短期Pattern的持續(xù)性;研究中運(yùn)用日內(nèi)資料(臺指期貨秒K資料),動態(tài)搜尋過去一段時(shí)間(例如5天)的最佳策略組合(解空間包括20馀種技術(shù)指標(biāo)組合、指標(biāo)的參數(shù)組合,與指標(biāo)間的邏輯運(yùn)算組合),再外推一段時(shí)間(例如1天)以驗(yàn)證策略效果。實(shí)證過程使用前滾式移動視窗測試。(來源 m.kzuj.com.cn )
?
實(shí)證系統(tǒng)用C#編碼,同時(shí)動用數(shù)十臺電腦平行處理,演算法則用基因演算法代替窮舉法(注:我們曾用模擬退火法,效果比窮舉法好很多,但還是不及基因演算法。模擬退火法與基因演算法等AI領(lǐng)域方法,都是用來解決搜尋問題的方法)。
?
5. 軟體開發(fā)平臺選擇
?
其次是使用的語言,要作HFT,可以選擇使用C++或C#、Java(注:C#簡單的說就是微軟的Java),C#與Java將C作了簡化,好處是編碼較C++容易(開發(fā)時(shí)間較短),代價(jià)是無法像C++那麼「接近硬體」,C++可以用指標(biāo)(Pointer)對記憶體作較佳控制,也可以方便管理記憶體(動態(tài)釋放用不到的記憶體,所謂Garbage Collection),在HFT競速過程中會是比較好的選擇。
?
那麼BASIC家族的語言效率如何?寫這篇文章同時(shí),作了一個(gè)簡單測試,在同樣的演算法、同樣的硬體條件、同樣編譯成執(zhí)行檔,情形下 VB. Net的速度比VC# .Net的速度慢約1倍。VBA就更不用提了。
?
6. 訊息傳遞方式
?
最后提到HFT系統(tǒng)不同子系統(tǒng)間的訊息傳遞(Message)。訊息傳遞系由事件(Event)驅(qū)動,例如「取得市場報(bào)價(jià)」子系統(tǒng)收到來自于市場的報(bào)價(jià)后,播送訊息(Publication),其他單元?jiǎng)t接收訊息(Subscription),此過程稱為「播送接收傳訊」(Pub-sub Messaging)。在一個(gè)HFT系統(tǒng)中有眾多的子系統(tǒng),彼此間依據(jù)時(shí)序作複雜的訊息傳遞。(來源 m.kzuj.com.cn )
?
訊息傳遞有兩種方式,一種是使用TCP/IP socket,此法建立傳送與接收者間的專用通道,當(dāng)子系統(tǒng)的傳訊複雜時(shí)可能影響效率;另一種選擇是多方播送方式(Multicast),送迅子系統(tǒng)儘管將訊息丟出去,由收訊子系統(tǒng)負(fù)責(zé)接受,由于不是專用通道,可靠性較低,但效率較好。
有思路,想編寫各種指標(biāo)公式,程序化交易模型,選股公式,預(yù)警公式的朋友
可聯(lián)系技術(shù)人員 QQ: 511411198 進(jìn)行 有償 編寫!(不貴!點(diǎn)擊查看價(jià)格!)
相關(guān)文章
-
沒有相關(guān)內(nèi)容