文章目录
前言
期货行情交易系统包含两个主要模块:交易和行情。扩展模块:云条件单。
根据整个系统的分布式架构设计,可以将行情和交易模块的功能分解成不同的微服务模块,极大的简化了系统的复杂度,更利于项目的协作与推进。
一、交易模块
目标:系统设计为支持不同期货公司客户完成交易功能,同时支持不同平台客户端(PC、Android和IOS)。
交易模块实际是交易中继的实现方式,最早是由文华财经提出的一种技术实现方案。改变传统的客户端直接连接期货公司交易网关的方式,在两者之间创建一个中继服务器负责管理客户端路由,客户端登录中继服务器,中继服务器代替客户端登录期货公司网关,这种方式的改变有两个优点:1.客户端标准化,因为期货公司服务器变动时不需要修改客户端软件;2.使云条件单成为可能,中继服务器替代客户端登录期货公司网关,使得交易连接可以长期保持,不会因为客户端下线而丢失,云条件单触发后才能正常提交给期货公司交易网关。交易模块从业务的角度来看:将不同期货公司客户的交易相关请求通过公开交易API提交给相应的期货公司交易网关,.接收及转发交易网关推送的交易信息给客户; 从抽象的角度来看:.中继服务器实现一组传统意义客户端并管理真正的客户端与期货公司网关之间的路由。
期货交易实际功能包含:登录、上个交易日账单获取与确认、请求用户保证金、持仓、本交易日历史报单记录和历史成交记录、下单(开仓和平仓)、期货公司交易网关主动推送的报单和成交处理、银期转账相关(出入金,查询签约银行卡、本交易日转账记录)、历史交割单查询。
1.用户管理
不同的交易用户可能来源于不同的期货公司,根据期货公司的不同,将用户分组管理,建立相应的虚拟客户端与期货公司建立连接。
2.虚拟客户端
通过虚拟客户端模块实现真实客户端的所有功能,虚拟客户端要支持多用户登录。
不同的期货公司交易网关的系统可能不一样,一般来讲采用以下三种公开交易网关API:上期技术-CTP、恒生-hsfutusdk、易盛信息-API,系统都要实现。实际应用时需为不同期货公司配置选项,系统根据用户的账号归属自动选取。
二、行情模块
1.实时数据采集
通过公开行情API(3种交易API都有对应的行情API,选取一种即可)可以订阅免费实时行情,根据需要筛选字段或者全部入库,可以为程序化提供毫秒级回测,如果没有这方面的业务需要可以直接通过发送到消息队列中去,交给其他服务处理。
需要注意的是:实时行情最小间隔为500毫秒/笔。因此会产生大量的数据写入,选取合适的数据库对于系统相当重要。
2.K线生成
循环处理消息队列来的实时行情数据,提取开盘价、收盘价、最高价及最低价生成K线数据。
根据K线客户端需求,服务端生成的基础K线为:1分钟K线、1小时K线及1月K线。这样其他K线都可以通过原始K线数据在客户端生成。基础K线写入数据库以便为K线服务提供数据。
3.K线服务
K线服务根据客户端的请求,分别提供分钟、小时、日等不同周期的K线数据组,为了加快访问速度,K线服务增加redis服务缓存部分最新数据。
K线客户端每次请求K线数据不能太少也不能太多,太少了显示界面不好看,太多了耗时长,体验感差,应综合考虑选取发送合适数量的K线数据,可根据客户端类别分别设置。
三 、云条件单模块
随着移动交易APP的兴起,受限于移动网络的不稳定性及普通交易客户交易时间的不稳定性,云条件单成为交易系统不可或缺的一部分。
什么是云条件单:交易客户将下单的触发条件设置好,提交到交易服务端,并不直接提交给期货公司网关,而是由服务暂时托管,当条件满足时,再发送订单到期货公司网关。触发条件一般是实时行情大于或者小于设定的价格、也可以定时触发。
总结
通过分析期货交易及行情的功能点,为后面的系统设计选取合适的架构及第三方系统提供依据。