用 Java构建股指期货交易系统
原文出處?http://daliliu.iteye.com/blog/610530
用?Java構(gòu)建股指期貨交易系統(tǒng)
Liu Hang (dalihang@hotmail.com?)
?
未經(jīng)作者許可,不得用于任何商業(yè)用途。轉(zhuǎn)載請注明出處和作者
概要
本文主要介紹怎樣使用?Java?相關(guān)技術(shù)構(gòu)建一個股指期貨交易系統(tǒng)(金融期貨)。主要內(nèi)容包括股指期貨交易系統(tǒng)簡介,系統(tǒng)業(yè)務架構(gòu),系統(tǒng)規(guī)劃要求和采用的技術(shù)架構(gòu)及使用?Java?技術(shù)的優(yōu)點。其中重點介紹使用?Java?相關(guān)技術(shù)實現(xiàn)的系統(tǒng)架構(gòu),關(guān)鍵技術(shù)包括?– JMS, SOA/Web Service, Appliction Server Cluster?等。本文為系統(tǒng)的概要描述,不會過多闡述具體設(shè)計。
1?股指期貨交易系統(tǒng)簡介
在本文中所提到的股指期貨、期權(quán)交易系統(tǒng),均指券商端的期貨、期權(quán)交易系統(tǒng)。期貨客戶通過該交易系統(tǒng)連接到交易所撮合成交平臺。系統(tǒng)提供客戶下單,行情信息,資金結(jié)算和風險控制等功能。
和股票交易系統(tǒng)類似,股指期貨交易系統(tǒng)提供在線下單,行情查詢等功能。和股票交易系統(tǒng)相比,期貨、期權(quán)交易在業(yè)務上要求更復雜的風險控制和資金結(jié)算等功能。在技術(shù)架構(gòu)上,由于交易的標的物是指數(shù)或期權(quán)、貴金屬、全球市場等,市場行情數(shù)據(jù)變化更頻繁、相比于股票市場,風險更大。對系統(tǒng)的實時性、穩(wěn)定性要求更高。
在現(xiàn)代期貨、期權(quán)交易中,有相當多的投資者進行快速、頻繁的交易,追求短期交易機會。對券商的交易系統(tǒng)要求能提供一定程度的程序化交易功能和靈活的交易方式。面對激烈的商業(yè)競爭,券商應該能夠提供多樣化的交易方式、快速推出新的交易模式以吸引更多的投資者。
在整個金融期貨交易系統(tǒng)的規(guī)劃中,應當考慮到以下幾點?–
1)?交易系統(tǒng)應該提供一個統(tǒng)一的交易平臺,以支持多種產(chǎn)品交易,包括金融期貨、期權(quán)、本地和全球市場
2)?系統(tǒng)應該支持多種交易渠道,包括可下載的交易客戶端,?WEB?交易、電話委托和客戶代理委托等
3)?系統(tǒng)規(guī)劃應分開企業(yè)核心信息服務和外圍應用系統(tǒng),以支持持續(xù)豐富的外圍應用系統(tǒng)
4)?面對激烈的商業(yè)競爭和業(yè)務變革,要求系統(tǒng)支持快速開發(fā)、部署和持續(xù)的新功能發(fā)布。
2?系統(tǒng)業(yè)務框架
本章節(jié)主要介紹股指期貨交易的業(yè)務框架,從高層次簡介期貨交易系統(tǒng)的功能。
?
整個股指期貨交易系統(tǒng)包括下面幾個大的部分?–
核心服務系統(tǒng)、券商內(nèi)部運行維護系統(tǒng)、交易和行情借口、客戶端交易終端系統(tǒng)等。
- 核心服務系統(tǒng)
提供股指期貨系統(tǒng)的核心功能,包括訂單處理,交易管理、行情服務、風險管理、基礎(chǔ)數(shù)據(jù)服務、?Back Office?服務(Position?結(jié)算等)、數(shù)據(jù)中心(資金結(jié)算等)服務。這些功能以組件或服務的方式提供外部應用系統(tǒng)使用。
- 運行維護系統(tǒng)
運行服務系統(tǒng)為交易系統(tǒng)運行提供所有必要的操作支持,包括?Back Office?操作終端,風險管理?/?監(jiān)控終端、?Data Center?操作終端、?Dealer/?客戶?Agent?交易終端等。?這些系統(tǒng)運行在券商的?LAN?之內(nèi),提供給券商的各類用戶使用。
- 統(tǒng)一交易、行情服務接口
期貨交易系統(tǒng)的核心業(yè)務服務提供給?WLAN?或其他渠道的用戶使用,要通過一個統(tǒng)一的交易和行情服務接口,以面向服務(?SOA?)的方式和其他外部交易終端集成。
- 交易終端
交易終端通過統(tǒng)一交易、行情服務接口和核心系統(tǒng)交互。這些交易終端包括可下載的獨立客戶端、?WEB?頁面客戶端、電話客戶端(通過語言模塊轉(zhuǎn)化)等。在技術(shù)架構(gòu)章節(jié),涉及的客戶端為獨立客戶端。
- 統(tǒng)一網(wǎng)關(guān)(交易、行情)
核心服務通過統(tǒng)一的交易和行情網(wǎng)關(guān)連接到本地交易所和全球市場。
3?技術(shù)方案規(guī)劃
基于核心交易系統(tǒng)的性質(zhì),在技術(shù)方案的規(guī)劃時,需考慮以下因素?–
- 高性能要求?(?Performance?)
相比于其他管理信息系統(tǒng),期貨交易系統(tǒng)要求更高的性能,包括行情數(shù)據(jù)的實時刷新,交易訂單處理等。
- 可擴充性要求?(?Scalability?)
股指期貨交易系統(tǒng)通常支持較多的并發(fā)用戶,且隨著業(yè)務的發(fā)展,交易客戶持續(xù)或快速增長,這要求系統(tǒng)有能力易于擴充以應付系統(tǒng)負載的增長。
- 高穩(wěn)定性要求?(Availability)
系統(tǒng)穩(wěn)定性對于交易系統(tǒng)的重要性不言而喻。系統(tǒng)有能力在整體架構(gòu)上防止單點失敗,能有一定程度上的故障恢復(?Fail-over?)的能力。
- 與其他系統(tǒng)集成
隨著現(xiàn)在金融行業(yè)的快速發(fā)展和業(yè)務創(chuàng)新,交易系統(tǒng)也要求能和多個外部的系統(tǒng)包括第三方系統(tǒng)集成的能力,包括企業(yè)內(nèi)部的客戶管理系統(tǒng)(?CRM?),交易所、銀行等。
- 支持快速開發(fā)和業(yè)務創(chuàng)新
市場競爭也是時間的競爭,必然要求整個交易系統(tǒng)從規(guī)劃、開發(fā)和部署要求能夠在盡可能短的時間完成。另外,金融行業(yè)業(yè)務創(chuàng)新在不斷加快,新的交易方式、測略不斷出現(xiàn),必然要求?IT?系統(tǒng)能夠快速反映和支持這種變革。在技術(shù)選型時,必須考慮到技術(shù)方案能夠滿足這種要求。
綜上所述,使用的技術(shù)方案要能夠解決上面的要求。目前,在期貨、股票交易系統(tǒng)中,所采用的技術(shù)主要有兩種?–?C/C++?和Java.?國內(nèi)業(yè)界較多的采用?C/C++?實現(xiàn)核心交易系統(tǒng),本文主要闡述使用?Java?技術(shù)來實現(xiàn)整個交易核心和客戶端。
相比較?C/C++, Java?技術(shù)在滿足交易系統(tǒng)要求時,有如下特征?–
- 性能要求?(?Performance?)
與?C/C++?技術(shù)相比,使用?Java?構(gòu)建核心交易系統(tǒng),性能問題可能是首要的考慮點。但隨著?Java?和優(yōu)化技術(shù)的發(fā)展,Java?的運行性能比早期有了大幅提高,已廣泛用于服務器程序和實時應用。在另一方面,性能問題總是和具體要求相關(guān)聯(lián),只要滿足系統(tǒng)的性能指標,使用?Java?應該是一個可行的選項。在筆者的項目實踐中,?Java?用來構(gòu)建實時交易系統(tǒng),配合合理的技術(shù)架構(gòu),完全能滿足系統(tǒng)的性能要求。
- 擴充性?(?Scalability?)
使用?Java?相關(guān)技術(shù)和中間件如?WebSphere, WebLogic?等,構(gòu)建一個高并發(fā)性的應用系統(tǒng)有著相當成熟的行業(yè)實踐,和快速實現(xiàn)的能力。
- 穩(wěn)定性要求?(Availability)
相比較于?C?技術(shù),借助于?Java?中間件軟件,實現(xiàn)服務器應用的?Load balance?和?Fail-over?是一項相當便捷和成熟的技術(shù)。
- 與其他系統(tǒng)集成
Java/J2EE?是一個開放的技術(shù)標準,有著廣泛的行業(yè)和開發(fā)社區(qū)支持,能夠較快并易于和其他系統(tǒng)集成。
- 支持快速開發(fā)和業(yè)務創(chuàng)新
相比于?C/C++,Java?的快速開發(fā)能力顯而易見。由于大量成熟的開源框架、基礎(chǔ)組件的出現(xiàn),在常見的企業(yè)系統(tǒng)開發(fā)中,使得?Java?的開發(fā)效率遠遠高于使用?C/C++?技術(shù),能夠較快速的實現(xiàn)新的業(yè)務功能。
綜上所述,?Java?技術(shù)能夠全面滿足期貨交易系統(tǒng)的要求,由于借助于中間件技術(shù)解決?Load balance, Fail-over?等關(guān)鍵性問題,使得開發(fā)者更關(guān)注于業(yè)務的實現(xiàn),?大大縮短了整個系統(tǒng)的開發(fā)時間和人力成本。同時?Java?語言的開發(fā)效率也使得新業(yè)務的創(chuàng)新能夠在系統(tǒng)上得以快速實現(xiàn)。這些因素使得采用?Java?構(gòu)建期貨交易系統(tǒng)是一個可行和較好的選擇。
4?技術(shù)架構(gòu)
本章節(jié)主要介紹股指期貨的技術(shù)架構(gòu),?從總體技術(shù)框架、運行物理環(huán)境等方面舉個介紹。
4.1?總體技術(shù)框架
?
- 客戶端
客戶端有兩類應用程序,一類是基于?Swing?的?GUI Application?如可下載的交易客戶端,數(shù)據(jù)維護終端等,另一類是?web based Application?如?web?頁面交易應用等。
對?GUI Applcition,?系統(tǒng)設(shè)計?GUI framework?幫助所有的?GUI application?開發(fā)。像對應于?Web Applciation,?可以采用主流的?Web MVC framework.
對應?Internet?客戶端?Application,?采用?web service?技術(shù)和服務器進行交互。對應訂單消息、市場行情采用?Message?系統(tǒng)。
- 服務器端
服務器端的主要業(yè)務服務,采用?Web Service?方式發(fā)布,以供客戶端調(diào)用。市場行情服務接受來自市場的信息?(Message Driven bean)?,進行解析后發(fā)送給客戶端。
具體的業(yè)務組件可使用?Spring?Ioc?等框架技術(shù)。
- 消息網(wǎng)關(guān)
使用?Socket?或?API?調(diào)用的方式,接受來自市場的消息。進行處理后發(fā)送給消息中間件。
- 數(shù)據(jù)存儲
數(shù)據(jù)存儲可采用成熟的數(shù)據(jù)存儲框架如?Hibernate?等。
4.2?物理運行環(huán)境
應用程序部署要考慮系統(tǒng)的?Load balance?和?Fail-over?等功能,利用?Application Server?和?Message Middleware?的cluster?功性去確保系統(tǒng)的穩(wěn)定性和可擴充性。
下圖為物流運行環(huán)境示意圖?-
?
5?小結(jié)
用?Java?開發(fā)分布式大型應用系統(tǒng),技術(shù)相當成熟,利用基于服務、組件和成熟的開源框架和中間件服務器,能夠快速構(gòu)建大型的期貨交易系統(tǒng),并易于擴充和維護。
?
后記 -
?
期貨交易系統(tǒng)是一個技術(shù)復雜的關(guān)鍵性系統(tǒng),?本文并沒有對一些具體的技術(shù)進行闡述,而這些正是系統(tǒng)的復雜性所在。比如怎樣實現(xiàn)Swing GUI framework, 怎樣實現(xiàn)Web Service,怎樣實現(xiàn)App Server Cluster 和MQ Cluster以及安全性,和怎么樣使用MQ進行交易狀態(tài)更新等。另外對怎么樣實現(xiàn)交易成交的具體流程,市場行情的broadcast具體實現(xiàn),也沒有詳細闡述。這些屬于具體的設(shè)計,設(shè)計到Java的多個方面,本文不打算具體闡述。有興趣的,可以技術(shù)交流 - dalihang@hotmail.com。
總結(jié)
以上是生活随笔為你收集整理的用 Java构建股指期货交易系统的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机网络 组网设计 论文,网络设计论文
- 下一篇: winxp原版系统iso镜像+大白菜启动