用Java构建股指期货交易系统
用Java構(gòu)建股指期貨交易系統(tǒng)
?
Liu Hang (dalihang@hotmail.com)
?
未經(jīng)作者許可,不得用來任何商業(yè)用途,轉(zhuǎn)載請注明出處和作者
概要
?
本文主要介紹怎樣使用Java相關技術構(gòu)建一個股指期貨交易系統(tǒng)(金融期貨)。主要內(nèi)容包括股指期貨交易系統(tǒng)簡介,系統(tǒng)業(yè)務架構(gòu),系統(tǒng)規(guī)劃要求和采用的技術架構(gòu)及使用Java技術的優(yōu)點。其中重點介紹使用Java相關技術實現(xiàn)的系統(tǒng)架構(gòu),關鍵技術包括 – JMS, SOA/Web Service, Appliction Server Cluster等。
?
?
1???????? 股指期貨交易系統(tǒng)簡介
?
在本文中所提到的股指期貨、期權交易系統(tǒng),均指券商端的期貨、期權交易系統(tǒng)。期貨客戶通過該交易系統(tǒng)連接到交易所撮合成交平臺。系統(tǒng)提供客戶下單,行情信息,資金結(jié)算和風險控制等功能。
?
和股票交易系統(tǒng)類似,股指期貨交易系統(tǒng)提供在線下單,行情查詢等功能。和股票交易系統(tǒng)相比,期貨、期權交易在業(yè)務上要求更復雜的風險控制和資金結(jié)算等功能。在技術架構(gòu)上,由于交易的標的物是指數(shù)或期權、貴金屬、全球市場等,市場行情數(shù)據(jù)變化更頻繁、相比于股票市場,風險更大。對系統(tǒng)的實時性、穩(wěn)定性要求更高。
?
在現(xiàn)代期貨、期權交易中,有相當多的投資者進行快速、頻繁的交易,追求短期交易機會。對券商的交易系統(tǒng)要求能提供一定程度的程序化交易功能和靈活的交易方式。面對激烈的商業(yè)競爭,券商應該能夠提供多樣化的交易方式、快速推出新的交易模式以吸引更多的投資者。
?
在整個金融期貨交易系統(tǒng)的規(guī)劃中,應當考慮到以下幾點 –
?
1)? 交易系統(tǒng)應該提供一個統(tǒng)一的交易平臺,以支持多種產(chǎ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)的核心功能,包括訂單處理,交易管理、行情服務、風險管理、基礎數(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)化)等。在技術架構(gòu)章節(jié),涉及的客戶端為獨立客戶端。
?
- 統(tǒng)一網(wǎng)關(交易、行情)
?
核心服務通過統(tǒng)一的交易和行情網(wǎng)關連接到本地交易所和全球市場。
?
???????????
3???????? 技術方案規(guī)劃
?
基于核心交易系統(tǒng)的性質(zhì),在技術方案的規(guī)劃時,需考慮以下因素 –
?
- 高性能要求 (Performance)
?
相比于其他管理信息系統(tǒng),期貨交易系統(tǒng)要求更高的性能,包括行情數(shù)據(jù)的實時刷新,交易訂單處理等。
?
- 高并發(fā)性要求 (Scaliability)
?
股指期貨交易系統(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)能夠快速反映和支持這種變革。在技術選型時,必須考慮到技術方案能夠滿足這種要求。
?
綜上所述,使用的技術方案要能夠解決上面的要求。目前,在期貨、股票交易系統(tǒng)中,所采用的技術主要有兩種 –? C/C++ 和 Java. 國內(nèi)業(yè)界較多的采用C/C++實現(xiàn)核心交易系統(tǒng),本文主要闡述使用Java技術來實現(xiàn)整個交易核心和客戶端。
?
相比較C/C++, Java技術在滿足交易系統(tǒng)要求時,有如下特征 –
?
- 性能要求 (Performance)
?
與C/C++技術相比,使用Java構(gòu)建核心交易系統(tǒng),性能問題可能是首要的考慮點。但隨著Java和優(yōu)化技術的發(fā)展,Java的運行性能比早期有了大幅提高,已廣泛用于服務器程序和實時應用。在另一方面,性能問題總是和具體要求相關聯(lián),只要滿足系統(tǒng)的性能指標,使用Java應該是一個可行的選項。在筆者的項目實踐中,Java用來構(gòu)建實時交易系統(tǒng),配合合理的技術架構(gòu),完全能滿足系統(tǒng)的性能要求。
?
?
- 并發(fā)性要求 (Scaliability)
?
使用Java相關技術和中間件如WebSphere, WebLogic等,構(gòu)建一個高并發(fā)性的應用系統(tǒng)有著相當成熟的行業(yè)實踐,和快速實現(xiàn)的能力。
?
?
- 穩(wěn)定性要求 (Availability)
?
相比較于C技術,借助于Java中間件軟件,實現(xiàn)服務器應用的Load balance 和 Fail-over是一項相當便捷和成熟的技術。
?
?
- 與其他系統(tǒng)集成
?
Java/J2EE是一個開放的技術標準,有著廣泛的行業(yè)和開發(fā)社區(qū)支持,能夠較快并易于和其他系統(tǒng)集成。
?
?
- 支持快速開發(fā)和業(yè)務創(chuàng)新
?
相比于C/C++,Java的快速開發(fā)能力顯而易見。由于大量成熟的開源框架、基礎組件的出現(xiàn),在常見的企業(yè)系統(tǒng)開發(fā)中, 使得Java的開發(fā)效率遠遠高于使用C/C++技術,能夠較快速的實現(xiàn)新的業(yè)務功能。
?
?
綜上所述,Java技術能夠全面滿足期貨交易系統(tǒng)的要求,由于借助于中間件技術解決Load balance, Fail-over等關鍵性問題,使得開發(fā)者更關注于業(yè)務的實現(xiàn), 大大縮短了整個系統(tǒng)的開發(fā)時間和人力成本。同時Java語言的開發(fā)效率也使得新業(yè)務的創(chuàng)新能夠在系統(tǒng)上得以快速實現(xiàn)。這些因素使得采用Java構(gòu)建期貨交易系統(tǒng)是一個可行和較好的選擇。
?
?
4???????? 技術架構(gòu)
?
本章節(jié)主要介紹股指期貨的技術架構(gòu), 從總體技術框架、運行物理環(huán)境等方面舉個介紹。
?
4.1??????? 總體技術框架
?
?
?
?
- 客戶端
?
客戶端有兩類應用程序,一類是基于Swing的GUI Application 如可下載的交易客戶端,數(shù)據(jù)維護終端等,另一類是web based Application如web頁面交易應用等。
?
對GUI Applcition, 系統(tǒng)設計GUI framework幫助所有的GUI application開發(fā)。像對應于Web Applciation,可以采用主流的Web MVC framework.
?
對應Internet客戶端Application, 采用web service技術和服務器進行交互。對應訂單消息、市場行情采用Message系統(tǒng)。
?
- 服務器端
?
服務器端的主要業(yè)務服務,采用Web Service方式發(fā)布,以供客戶端調(diào)用。市場行情服務接受來自市場的信息 (Message Driven bean),進行解析后發(fā)送給客戶端。
?
具體的業(yè)務組件可使用Spring? Ioc等框架技術。
?
- 消息網(wǎng)關
?
使用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),技術相當成熟,利用基于服務、組件和成熟的開源框架和中間件服務器,能夠快速構(gòu)建大型的期貨交易系統(tǒng),并易于擴充和維護。
總結(jié)
以上是生活随笔為你收集整理的用Java构建股指期货交易系统的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一名大学毕业生的心酸求职历程全记录
- 下一篇: 修改IE为默认浏览器