用 Java构建股指期货交易系统
Liu Hang (dalihang@hotmail.com )
未经作者许可,不得用于任何商业用途。转载请注明出处和作者
概要
本文主要介绍怎样使用 Java 相关技术构建一个股指期货交易系统(金融期货)。主要内容包括股指期货交易系统简介,系统业务架构,系统规划要求和采用的技术架构及使用 Java 技术的优点。其中重点介绍使用 Java 相关技术实现的系统架构,关键技术包括 – JMS, SOA/Web Service, Appliction Server Cluster 等。本文为系统的概要描述,不会过多阐述具体设计。
1 股指期货交易系统简介
在本文中所提到的股指期货、期权交易系统,均指券商端的期货、期权交易系统。期货客户通过该交易系统连接到交易所撮合成交平台。系统提供客户下单,行情信息,资金结算和风险控制等功能。
和股票交易系统类似,股指期货交易系统提供在线下单,行情查询等功能。和股票交易系统相比,期货、期权交易在业务上要求更复杂的风险控制和资金结算等功能。在技术架构上,由于交易的标的物是指数或期权、贵金属、全球市场等,市场行情数据变化更频繁、相比于股票市场,风险更大。对系统的实时性、稳定性要求更高。
在现代期货、期权交易中,有相当多的投资者进行快速、频繁的交易,追求短期交易机会。对券商的交易系统要求能提供一定程度的程序化交易功能和灵活的交易方式。面对激烈的商业竞争,券商应该能够提供多样化的交易方式、快速推出新的交易模式以吸引更多的投资者。
在整个金融期货交易系统的规划中,应当考虑到以下几点 –
1) 交易系统应该提供一个统一的交易平台,以支持多种产品交易,包括金融期货、期权、本地和全球市场
2) 系统应该支持多种交易渠道,包括可下载的交易客户端, WEB 交易、电话委托和客户代理委托等
3) 系统规划应分开企业核心信息服务和外围应用系统,以支持持续丰富的外围应用系统
4) 面对激烈的商业竞争和业务变革,要求系统支持快速开发、部署和持续的新功能发布。
2 系统业务框架
本章节主要介绍股指期货交易的业务框架,从高层次简介期货交易系统的功能。
整个股指期货交易系统包括下面几个大的部分 –
核心服务系统、券商内部运行维护系统、交易和行情借口、客户端交易终端系统等。
- 核心服务系统
提供股指期货系统的核心功能,包括订单处理,交易管理、行情服务、风险管理、基础数据服务、 Back Office 服务( Position 结算等)、数据中心(资金结算等)服务。这些功能以组件或服务的方式提供外部应用系统使用。
- 运行维护系统
运行服务系统为交易系统运行提供所有必要的操作支持,包括 Back Office 操作终端,风险管理 / 监控终端、 Data Center 操作终端、 Dealer/ 客户 Agent 交易终端等。 这些系统运行在券商的 LAN 之内,提供给券商的各类用户使用。
- 统一交易、行情服务接口
期货交易系统的核心业务服务提供给 WLAN 或其他渠道的用户使用,要通过一个统一的交易和行情服务接口,以面向服务( SOA )的方式和其他外部交易终端集成。
- 交易终端
交易终端通过统一交易、行情服务接口和核心系统交互。这些交易终端包括可下载的独立客户端、 WEB 页面客户端、电话客户端(通过语言模块转化)等。在技术架构章节,涉及的客户端为独立客户端。
- 统一网关(交易、行情)
核心服务通过统一的交易和行情网关连接到本地交易所和全球市场。
3 技术方案规划
基于核心交易系统的性质,在技术方案的规划时,需考虑以下因素 –
- 高性能要求 ( Performance )
相比于其他管理信息系统,期货交易系统要求更高的性能,包括行情数据的实时刷新,交易订单处理等。
- 可扩充性要求 ( Scalability )
股指期货交易系统通常支持较多的并发用户,且随着业务的发展,交易客户持续或快速增长,这要求系统有能力易于扩充以应付系统负载的增长。
- 高稳定性要求 (Availability)
系统稳定性对于交易系统的重要性不言而喻。系统有能力在整体架构上防止单点失败,能有一定程度上的故障恢复( Fail-over )的能力。
- 与其他系统集成
随着现在金融行业的快速发展和业务创新,交易系统也要求能和多个外部的系统包括第三方系统集成的能力,包括企业内部的客户管理系统( CRM ),交易所、银行等。
- 支持快速开发和业务创新
市场竞争也是时间的竞争,必然要求整个交易系统从规划、开发和部署要求能够在尽可能短的时间完成。另外,金融行业业务创新在不断加快,新的交易方式、测略不断出现,必然要求 IT 系统能够快速反映和支持这种变革。在技术选型时,必须考虑到技术方案能够满足这种要求。
综上所述,使用的技术方案要能够解决上面的要求。目前,在期货、股票交易系统中,所采用的技术主要有两种 – C/C++ 和 Java. 国内业界较多的采用 C/C++ 实现核心交易系统,本文主要阐述使用 Java 技术来实现整个交易核心和客户端。
相比较 C/C++, Java 技术在满足交易系统要求时,有如下特征 –
- 性能要求 ( Performance )
与 C/C++ 技术相比,使用 Java 构建核心交易系统,性能问题可能是首要的考虑点。但随着 Java 和优化技术的发展, Java 的运行性能比早期有了大幅提高,已广泛用于服务器程序和实时应用。在另一方面,性能问题总是和具体要求相关联,只要满足系统的性能指标,使用 Java 应该是一个可行的选项。在笔者的项目实践中, Java 用来构建实时交易系统,配合合理的技术架构,完全能满足系统的性能要求。
- 扩充性 ( Scalability )
使用 Java 相关技术和中间件如 WebSphere, WebLogic 等,构建一个高并发性的应用系统有着相当成熟的行业实践,和快速实现的能力。
- 稳定性要求 (Availability)
相比较于 C 技术,借助于 Java 中间件软件,实现服务器应用的 Load balance 和 Fail-over 是一项相当便捷和成熟的技术。
- 与其他系统集成
Java/J2EE 是一个开放的技术标准,有着广泛的行业和开发社区支持,能够较快并易于和其他系统集成。
- 支持快速开发和业务创新
相比于 C/C++,Java 的快速开发能力显而易见。由于大量成熟的开源框架、基础组件的出现,在常见的企业系统开发中, 使得 Java 的开发效率远远高于使用 C/C++ 技术,能够较快速的实现新的业务功能。
综上所述, Java 技术能够全面满足期货交易系统的要求,由于借助于中间件技术解决 Load balance, Fail-over 等关键性问题,使得开发者更关注于业务的实现, 大大缩短了整个系统的开发时间和人力成本。同时 Java 语言的开发效率也使得新业务的创新能够在系统上得以快速实现。这些因素使得采用 Java 构建期货交易系统是一个可行和较好的选择。
4 技术架构
本章节主要介绍股指期货的技术架构, 从总体技术框架、运行物理环境等方面举个介绍。
4.1 总体技术框架
- 客户端
客户端有两类应用程序,一类是基于 Swing 的 GUI Application 如可下载的交易客户端,数据维护终端等,另一类是 web based Application 如 web 页面交易应用等。
对 GUI Applcition, 系统设计 GUI framework 帮助所有的 GUI application 开发。像对应于 Web Applciation, 可以采用主流的 Web MVC framework.
对应 Internet 客户端 Application, 采用 web service 技术和服务器进行交互。对应订单消息、市场行情采用 Message 系统。
- 服务器端
服务器端的主要业务服务,采用 Web Service 方式发布,以供客户端调用。市场行情服务接受来自市场的信息 (Message Driven bean) ,进行解析后发送给客户端。
具体的业务组件可使用 Spring Ioc 等框架技术。
- 消息网关
使用 Socket 或 API 调用的方式,接受来自市场的消息。进行处理后发送给消息中间件。
- 数据存储
数据存储可采用成熟的数据存储框架如 Hibernate 等。
4.2 物理运行环境
应用程序部署要考虑系统的 Load balance 和 Fail-over 等功能,利用 Application Server 和 Message Middleware 的 cluster 功性去确保系统的稳定性和可扩充性。
下图为物流运行环境示意图 -
5 小结
用 Java 开发分布式大型应用系统,技术相当成熟,利用基于服务、组件和成熟的开源框架和中间件服务器,能够快速构建大型的期货交易系统,并易于扩充和维护。
后记 -
期货交易系统是一个技术复杂的关键性系统, 本文并没有对一些具体的技术进行阐述,而这些正是系统的复杂性所在。比如怎样实现Swing GUI framework, 怎样实现Web Service,怎样实现App Server Cluster 和MQ Cluster以及安全性,和怎么样使用MQ进行交易状态更新等。另外对怎么样实现交易成交的具体流程,市场行情的broadcast具体实现,也没有详细阐述。这些属于具体的设计,设计到Java的多个方面,本文不打算具体阐述。有兴趣的,可以技术交流 - dalihang@hotmail.com 。
相关推荐
这个java接口算是预览版吧,java与ctp api通信用的是Bridj,基于jni,现在还有不少的bridj的代码暴露在调用环节中,以后会慢慢隐藏掉。 选Bridj的原因是比jni省事,比jna效率要快,而且跨平台,理论上把ctp的dll换成...
基于Python的股指期货交易系统.docx基于Python的股指期货交易系统.docx
交易股指期货或者商品期货的仿真系统,由光大期货推出。
香港股指期货交易结算情况介绍收集.pdf
4股指期货交易风险案例汇编.pdf
基于市场情绪平稳度的股指期货日内交易策略源码,基于python实现。
论文研究-现货市场异常波动下股指期货交易限制对市场质量的影响分析.pdf, 通过计算机仿真构建了基于投资者策略的跨市场金融平台,提出了异常波动下交易限制措施对市场...
东吴证券股指期货版支持支持恒生股指期货交易,软件功能强大,方便实用。 东吴证券股指期货版网上交易说明 1 下载安装完成后,在桌面双击东吴证券软件图标,即可运行东吴证券网上交易软件。 2 登陆时无需修改任何...
利用上证50ETF, 上证红利ETF 和深证100ETF 来复制沪深300指数作为现货, 构建沪深300 股指期货的无套利边界,并对IF1005、IF1006 和IF1007三个主力合约进行了套利机会和...
同花顺股指期货闪电版是由西安鑫启航贵金属投资有限公司数十位金融投资专家凭借着多年的实战经验和独到的理论,精心研发的程序化自动交易系统。还拥有基本的行情决策介绍、每日评论、相关新闻资讯之外等等功能 同花...
关于发布《中国金融期货交易所交易规则》及相关细则、办法和沪深300股指期货合约的通知.pdf
恒生股指期货系统PPT课件.pptx
20210513-国信证券-CTA系列专题之一:基于开盘动量效应的股指期货交易策略.pdf
股指期货套利与现货组合模型的构建,丁玉洁,陈绍花,股指期货作为我国首推的一款金融衍生产品,具有回避股市系统风险和增强市场流动性等重要功能,它的推出对广大机构投资者而言意义
为了给炒股新手提供一个练习的平台,用vc2012开发的一款股指期货模拟系统
炒现货黄金白银外汇喊单/原油股指期货交易系统/金牛指标分析软件 简单明了,让分析变得更容易!一款软件四大模块:股票、原油、黄金、白银、外汇 一套软件多种使用!转战投资市场的终极利器!现在优惠进行中。还在等...
目 录 期货套利交易概述 01 02 03 04 股指期货期现套利策略的基本思想 股指期货期现套利策略的Python程序 股指期货期现套利策略的应用 Python量化投资基础教程教学课件第十六章--股指期货期现套利策略全文共50页,...
论文研究-股指期货对冲比率和对冲期限关系的多尺度研究.pdf, 为研究股指期货对冲比率与对冲期限的关系,基于小波分析推导了多尺度最优对冲比率的计算方法,揭示了期货和...
股指期货交易平台.doc
作为中国唯一上市交易的金融期货产品,沪深300股指期货在资本市场价格发现和风险防范过程中扮演重要角色, 科学准确地测度其收益波动对充分实现股指期货避险功能具有重要...