CN112116471A - 一种证券算法交易过程中的实时算法交易总线系统 - Google Patents
一种证券算法交易过程中的实时算法交易总线系统 Download PDFInfo
- Publication number
- CN112116471A CN112116471A CN202010912976.1A CN202010912976A CN112116471A CN 112116471 A CN112116471 A CN 112116471A CN 202010912976 A CN202010912976 A CN 202010912976A CN 112116471 A CN112116471 A CN 112116471A
- Authority
- CN
- China
- Prior art keywords
- task
- module
- information
- algorithm
- request
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/06—Asset management; Financial planning or analysis
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/12—Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/133—Protocols for remote procedure calls [RPC]
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Finance (AREA)
- Accounting & Taxation (AREA)
- Development Economics (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Signal Processing (AREA)
- Economics (AREA)
- Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Technology Law (AREA)
- Strategic Management (AREA)
- Marketing (AREA)
- Medical Informatics (AREA)
- Operations Research (AREA)
- Human Resources & Organizations (AREA)
- Game Theory and Decision Science (AREA)
- Entrepreneurship & Innovation (AREA)
- General Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Health & Medical Sciences (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
本发明公开了一种证券算法交易过程中的实时算法交易总线系统,系统包括证券算法交易数据处理接口模块、证券交易数据算法总线模块,证券算法交易数据处理接口模块分别与证券交易数据算法总线模块信连接等;本发明具有规范稳定的算法投资交易接口,丰富的算法投资交易功能,可以快速、稳定地对接扩展更多的三方算法,可全方位满足大部分机构客户的交易执行需求,可帮助机构和高端个人投资者显著降低冲击成本,减少异常交易的发生,能够帮助券商快速搭建起自身的投资交易系统,可以连接深圳、上海实时行情或者轻量行情,快速接入券商对台系统,解决了现有国内各投资交易系统供应商的技术壁垒之下难以形成能够适应多环境,部署不够灵活的问题。
Description
技术领域
本发明涉及证券算法交易领域,更为具体地,涉及一种证券算法交易过程中的实时算法交易总线系统及方法。
背景技术
起源于20世纪90年代的欧美证券市场,借助计算机技术的飞速发展和整体计算机成本的大幅降低,算法交易(AlgorithmicTrading)即通过计算机程序化的方式来决定交易执行的时机、价格和数量等的交易执行方式得到迅速普及。它不但可以帮助交易员避免非理性因素造成的失误,更可以结合历史数据以及实时市场行情进行精确下单,自动判断最佳交易时机和点位,将大单分拆为小单,降低冲击成本,大幅提升交易执行效率,并能轻松管理多证券的篮子交易。
近些年国内证券市场不断发展,对投资交易系统,尤其是算法交易系统依赖程度越来越重。由于国内金融市场起步较晚,交易技术相对落后,海外市场的投资交易系统和算法交易无法适应国内证券市场。并且在国内各投资交易系统供应商的技术壁垒之下难以形成能够适应多环境,灵活部署,支持不同券商、不同算法,提供稳定而全面的交易接口的一个实时算法总线系统。
发明内容
本发明的目的在于克服现有技术的不足,提供一种证券算法交易过程中的实时算法交易总线系统及方法,具有规范稳定的算法投资交易接口,丰富的算法投资交易功能,可以快速、稳定地对接扩展更多的三方算法;降低了开发维护的难度,可以快速的可兼容多种PB及资管系统,支持多种比例下单模式、批量委托交易执行功能,对于中等及以上规模的金融投资机构有极高的便捷性、可靠性、经济适用性,可全方位满足大部分机构客户的交易执行需求;帮助机构和高端个人投资者显著降低冲击成本,大幅减少异常交易的发生;同时也有助于提升国内交易所的流动性,有效地减少经纪公司开发整套投资交易系统的周期,同时又能够提供更多的券商的自由空间,可以让券商专注于开发自身投资交易界面或者资管系统,帮助券商快速搭建起自身的投资交易系统。
本发明的目的是通过以下技术方案来实现的:
一种证券算法交易过程中的实时算法交易总线系统,包括:
多个证券算法交易数据处理接口模块、证券交易数据算法总线模块,多个证券算法交易数据处理接口模块通过通信网络分别与证券交易数据算法总线模块建立实时通信连接;
所述证券算法交易数据处理接口模块用于接收或发送数据,并将数据送至证券交易数据算法总线模块;和/或所述证券算法交易数据处理接口模块从所述证券交易数据算法总线模块获取数据并处理数据。
进一步地,所述证券算法交易数据处理接口模块包括证券算法交易任务接口创建模块、外部算法服务接口模块和经济公司柜台委托接口模块;
所述证券算法交易任务接口创建模块,用于资金账号登录和接收外部系统创建证券交易任务请求;外部系统通过证券算法交易任务接口创建模块获取证券交易任务数据,证券交易数据算法总线模块通过证券算法交易任务接口创建模块向外部系统推送算法交易数据;
所述外部算法服务接口模块,用于发送证券交易数据算法总线模块需要通过外部算法进行处理的证券交易任务数据,以及接收外部算法对该数据进行处理的结果,并将该结果发送给证券交易数据算法总线模块;
所述经济公司柜台委托接口模块,用于把具体的委托请求发送给对应的经纪公司的柜台系统,并接收外部柜台系统返回的委托成功信息,以及查询委托成交数据,以及接收外部柜台系统推送的委托成交数据。
进一步地,所述证券算法交易任务接口创建模块,拥有资金账号登录、创建任务、操作任务、查询任务相关信息、推送任务状态信息、推送委托详细数据接口、行情订阅以及与这些接口相关的函数组成的接口集合,用于提供给外部系统调用,并将外部系统创建的任务请求、查询请求转发至证券交易数据算法总线模块,将证券交易数据算法总线模块的任务信息和委托信息推送到外部系统。
进一步地,所述外部算法服务接口模块包括ALGO模块;ALGO模块由基类ALGO模块和继承基类ALGO模块的ALGO子模块组成,每个ALGO子模块都通过国际通用的FIX金融交换协议与外部算法建立连接,每个ALGO子模块都通过FIX协议的配置规则维护与外部算法的双向连接和/或单向连接;基类ALGO模块用于管理不同的ALGO模块,将证券交易数据算法总线模块创建的不同的算法任务转发到对应的ALGO子模块中,每个ALGO子模块都能够将接受到的算法任务转换成母单,通过FIX协议串发送到外部算法服务上,并且能够接收到外部算法发过来的母单确认消息、和/或母单拒绝消息、和/或母单完成消息、和/或母单过期消息,以及接收每一笔母单的子单委托请求,并将子单委托请求FIX消息串转换成委托请求转发至证券交易数据算法总线模块,同时转发来自证券交易数据算法总线模块的委托错误、成交信息给外部算法。
进一步地,所述经济公司柜台委托接口模块包括BROKER模块;BROKER模块包括不同类型的BROKER子模块,每个子模块对应一个券商,每个BROKER子模块通过前置机/跳板机与券商的内部柜台系统连接,BROKER子模块能够接受证券交易数据算法总线模块的委托请求,并转换成经纪公司能够识别的委托请求信息发送给经济公司的柜台系统,并且能够接收到经济公司柜台系统推送的委托数据,能够查询经济公司的委托信息和成交信息,并将该信息转发到证券交易数据算法总线模块。
进一步地,证券交易数据算法总线模块包括任务管理子模块、委托处理子模块、行情管理子模块和绩效统计子模块;所述任务管理子模块,用于管理证券算法交易的任务请求、状态、进度、持久化;所述委托处理子模块,用于管理证券算法交易的委托请求、状态、成交、持久化;所述行情管理子模块,用于订阅、接收、查询证券列表与证券行情;所述绩效统计子模块,用于统计指令、任务、委托的绩效数据。
进一步地,所述任务管理子模块包括任务创建模块、任务进度统计模块、任务数据推送模块、路由模块、第一账号数据管理中心模块和第一持久化模块;
所述任务创建模块,用于将BUSAPI模块发送的创建算法交易任务请求创建成一个实时运行的任务,并将算法任务请求发送给ALGO模块;
所述任务进度统计模块,用于统计算法任务的运行进度功能,并根据任务的进度修改任务的状态;
所述任务数据推送模块,用于将算法交易过程中创建、统计的任务信息存储到任务缓存队列,并利用多线程定时给BUSAPI模块发送算法任务相关信息;
所述路由模块,用于接受ALGO模块的委托请求信息,并将该信息转发至委托处理子模块,或接受委托处理子模块推送的委托成交信息,并将该信息转发至ALGO模块;
所述第一账号数据管理中心模块,用于初始化账号信息,接受委托处理子模块推送的委托信息、成交信息、账号信息,以及用于维护账号的登录状态和缓存当前账号的持仓、资金、委托信息、成交信息;
所述持久化模块,用于将任务信息持久化到Redis中,并在重启或异常重启后恢复重启前的任务数据快照。
进一步地,所述的委托处理子模块包括委托创建模块、委托请求队列模块、委托查询主推控制模块、第二账号数据管理中心模块、第二持久化模块;
所述委托创建模块,用于接受任务管理子模块路由的委托请求信息,根据委托请求信息生成不同类型的委托交易,包括股票交易,信用交易,沪港通,深港通,期货,期权中的一种或多种;并将生成的委托信息放入委托请求队列中;
所述委托请求队列模块,用于管理委托请求信息,对委托频率合规和委托量合规检查后,由该队列将委托请求依次发送到BROKER模块;
所述委托查询主推控制模块,用于定时轮训向BROKER模块查询委托以及成交信息,查询委托成交信息的模式包括全量查询、增量查询、全市场查询、分市场查询、启动时查询,通过配置能够开启不同经纪公司是否启用相应的查询模式,并接收BROKER模块发送的委托成交信息,存放在第二账号数据管理中心模块;
第二账号数据管理中心,用于登录、初始化账号信息,接受委托查询主推的委托信息、成交信息、账号信息,维护账号的登录状态,缓存当前账号的信息、委托信息、成交信息。同时向任务管理模块推送委托和成交信息;
第二持久化模块,用于将委托请求、委托信息、委托成交信息持久化到Redis中,并通过定时任务将Redis中的数据同步到MySQL服务中,并在重启或异常重启后恢复重启前的委托数据快照。
进一步地,行情管理子模块,用于根据权限配置订阅交易所发布的实时市场行情,将行情数据转发到任务管理子模块、委托处理子模块、行情管理子模块和绩效统计子模块中的任一个或多个。
进一步地,所述绩效统计子模块,用于统计交易过程中的指令、任务的绩效统计工作,并设置有查询接口,用于提供给其他模块查询使用绩效。
进一步地,BUSAPI模块作为委托管理子模块的Client与委托管理子模块建立连接,用于外部投资交易系统通过BUSAPI模块发起账号的登录,查询资金与持仓信息,并绑定接收委托管理子模块推送的委托成交信息和账号登录信息;
BUSAPI模块作为任务管理子模块的Client与任务管理子模块建立连接,用于外部投资交易系统可以通过BUSAPI模块发起任务的创建、账号初始化、任务数据的查询,同时BUSAPI模块通过该连接绑定接收任务管理子模块推送的任务执行信息;
任务管理子模块与ALGO模块互连,任务管理子模块和ALGO模块互为Service和Client,任务管理子模块请求创建算法母单,推送委托成交信息给ALGO模块;任务管理子模块接收ALGO模块推送的母单状态信息,并由任务管理子模块匹配到相应的任务,用于计算任务的状态;
任务管理子模块作为委托管理子模块的Client与委托管理子模块建立连接,用于资金账号初始化,转发ALGO模块的子单委托到委托管理子模块,接收委托管理子模块的委托成交信息并转发给ALGO模块。
进一步地,所述多个证券算法交易数据处理接口模块通过RPC协议通信网络分别与证券交易数据算法总线模块建立实时通信连接;所述多个证券算法交易数据处理接口模块通过以太网与外部系统建立通信连接。
进一步地,至少以一台服务器构成实时证券算法交易数据处理接口模块,每一台服务器至少与一个外部系统通信连接。
进一步地,所述操作任务包括暂停任务、继续任务、撤销任务中的一种或多种。
进一步地,ALGO子模块包括迅投智能算法接口模块,和/或第三方机构的算法服务对接模块;第三方机构的算法服务对接模块包括金纳算法接口模块、中信建投算法接口模块、中信cats算法接口模块、华润算法接口模块、华创算法接口模块、主动算法接口模块中的任意一种或多种。
一种基于上述任一所述的证券算法交易过程中的实时算法交易总线系统的方法,包括算法总线账号登录步骤:
S1,外部投资交易系统通过调用BUSAPI资金账号登录接口进行账号的登录,BUSAPI模块首先绑定接收委托处理子模块推送的委托成交信息,账号登录状态信息的函数,尝试连接委托处理子模块,如果连接失败转S2,如果连接成功转至S3;
S2,连接失败,则将失败信息通过回调通知外部投资交易系统;
S3,连接成功,则将账号登录请求信息转发给委托处理子模块;
S4,委托处理子模块接收到资金账号登录请求,首先校验资金账号,校验失败转S5;校验成功将该请求转发至BROKER模块,通过BROKER模块到券商柜台系统进行登录,登陆成功转至S6;
S5,校验资金账号失败后,将校验失败错误通过回调,通知BUSAPI模块,BUSAPI模块通过回调通知外部投资交易系统;
S6,委托处理子模块登陆成功之后,通过BROKER模块到柜台查询资金账号的信息,包括资金信息、持仓信息、委托成交信息,以及针对其他账号类型的信息,包括信用账号,额外查询负债合约信息和质押券信息,登录成功之后通过回调通知BUSAPI模块;
S7,BUSAPI模块接收到账号的登陆成功回调信息,并将该信息通过回调转发给外部投资交易系统;
一种基于上述任一所述的证券算法交易过程中的实时算法交易总线系统的方法,包括算法总线任务创建步骤:
SS1,外部投资交易系统通过调用BUSAPI模块提供创建任务Client接口,让BUSAPI与任务管理子模块创建连接并建立WatchClient,绑定用于接收任务管理子模块推送的任务状态信息,如果创建不成功转S2,如果成功转S3;
SS2,创建连接失败,BUSAPI模块通过回调通知外部投资交易系统,创建任务失败信息;
SS3,外部投资交易系统调用BUSAPI模块提供的创建任务接口,BUSAPI模块进行对创建任务请求的参数校验,如果校验不通过转SS4,校验通过转SS5;
SS4,BUSAPI模块通过回调通知外部投资交易系统检验参数失败,停止创建任务;
SS5,校验成功后,BUSAPI模块生成标识任务的CommandId,并把该Id写入创建任务请求信息中,同时将创建任务请求信息转发至任务管理子模块,最后将该Id写到Redis中,记录当前Id生成的偏移;BUSAPI模块将带有CommandId的任务请求信息,发送至任务管理子模块,同时从创建任务请求信息中取得账号信息,向任务管理子模块初始化账号;
SS6,任务管理子模块接收到初始化账号的请求,通过与委托管理子模块建立的Client初始化账号信息,并初始化账号数据管理中心;
SS7,任务管理子模块接收到创建任务的请求之后,开始创建任务,向账号数据管理中心订阅该账号的委托成交信息,创建完成任务之后,通过消息事件推送,将任务创建成功的信息推送给BUSAPI模块并缓存任务的状态信息,定时写到Redis中;
SS8,创建成功任务之后,任务管理子模块将创建任务请求信息转发给ALGO模块;
SS9,ALGO模块接收到创建任务的请求之后,把任务请求信息中的转换成母单,将母单请求信息通过FIX金融交换协议发送给不同的三方算法,并缓存创建任务请求相关信息,定时写到Redis中;
SS10,三方算法模块接收到母单请求信息之后,确认母单信息完成且有效,给ALGO模块发送母单确认信息,否则会给ALGO模块发送母单拒绝信息;
SS11,ALGO模块接收到母单确认或者拒绝消息之后,将母单中的状态转换成对应任务的状态和产生的确认拒绝信息发送给任务管理子模块,任务管理子模块接收到ALGO推送的任务状态信息,更新任务状态,并继续向BUSAPI推送任务的状态信息,BUSAPI收到任务的状态信息之后,继续给外部投资交易系统推送任务的状态信息。
一种基于上述任一所述的证券算法交易过程中的实时算法交易总线系统的方法,包括步骤:
算法总线子单委托步骤:
(S1),ALGO模块接收三方算法服务发送的子单FIX消息,ALGO模块将子单FIX消息根据所属任务的信息组成委托请求信息,发送给任务管理子模块;
(S2),任务管理子模块接收到委托请求,验证子单请求参数是否合规,或者对应的任务是否是委托状态,如果不合规则通过回调通知ALGO模块委托失败,转(S3),合规转(S4);
(S3),ALGO模块接收到任务管理子模块的失败回调信息,产生拒绝委托的FIX消息发送给三方算法服务;
(S4),任务管理子模块缓存下该委托信息,并计算冻结量,产生请求编号写入委托请求信息中,发送给委托管理子模块,并注册回调函数,等待报单成功或者失败的回调信息;
(S5),委托管理子模块接收到委托请求,根据委托请求中的账号类型,选择不同的处理逻辑,检查委托频率、委托量是否合规,如果不合规,则通过回调通知所述任务管理子模块,转(S6);如果合规,则缓存下委托请求信息,并将委托请求信息进入报单队列,等待报单转(S7);
(S6),任务管理子模块接收到委托管理子模块的失败回调信息之后,通过调用接收ALGO模块的子单请求时注册的回调函数,通知ALGO模块报单失败;
(S7),报单队列将委托发送到BROKER接口模块,并注册回调函数,接收BROKER接口模块转发柜台的报单成功或者失败消息,从而通过回调通知到下游各个模块,最终通知到三方算法服务;
(S8),BROKER接口模块接收到报单信息之后,将委托请求信息转换成券商柜台能识别的信息格式,转发至券商柜台系统,并注册回调函数,等待委托成功返回的委托成功或者失败信息;
(S9),BROKER接口模块接收到报单成功或者失败消息,将该消息转发至委托管理子模块,委托管理子模块通过返回的成功或者失败信息匹配报单信息,组成回调消息发送给任务管理子模块;
(S10),任务管理子模块接收到回调信息之后,如果是失败消息,则释放之前报单的冻结量,如果成功则不释放,并将该成功或者失败消息通过回调通知ALGO模块;
(S11),ALGO模块接受到委托成功或者失败信息,转换成FIX消息串发送给三方算法服务。
一种基于上述任一所述的证券算法交易过程中的实时算法交易总线系统的方法,包括算法总线委托成交信息处理步骤:
A1,BROKER模块接收到券商柜台推送的报单委托成交信息,或者通过查询某个账号下的委托成交信息,将该信息转发给委托管理子模块进行处理;
A2,委托管理子模块接收到委托成交信息,通过查询缓存的委托请求信息组成委托成交详细信息,并缓存到账号数据管理中心,通过账号数据管理中心推送给订阅了委托成交数据的任务管理子模块;
A3,任务管理接收到委托成交信息,通过该信息中的任务编号找到任务信息,更新任务中的冻结量,计算任务的状态,再将该信息填入任务详细信息中,通过任务详细数据信息定时器,定时推送给BUSAPI模块转A4,同时将委托成交该信息通过绑定的订阅函数推送给ALGO接口模块转A5;
A4,BUSAPI模块接收到任务管理子模块推送的任务详细数据,推送给外部投资交易系统;
A5,ALGO接收到委托成交详细数据,将该数据转换成FIX消息串发送给三方算法服务;
A6,ALGO接收三方算法发送的母单已完成消息,将该消息转换成任务的状态发送给任务管理子模块;
A7,任务管理子模块根据任务下这只股票的交易状态计算任务的状态当任务下所有股票交易都完成,则任务完成,并向BUSAPI推送当前任务的详细信息;
A8,BUSAPI接收到任务详细信息,将该信息推送给外部投资交易系统。
一种基于上述任一所述的证券算法交易过程中的实时算法交易总线系统的方法,包括算法总线任务暂停、重启、撤销处理步骤:
步骤1,外部投资交易系统通过调用BUSAPI提供的接口向BUSAPI发送操作任务请求,并发送给任务管理子模块;
步骤2,任务管理子模块接收到操作任务请求检查当前任务状态是否能够操作任务,如果不能操作任务转步骤3,如果能够操作任务转步骤4;
步骤3,通过回调通知BUSAPI模块操作任务失败,BUSAPI模块同样以回调通知外部投资交易系统操作任务失败;
步骤4,任务管理子模块首先把任务设置成等待中,然后将任务操作请求发送给ALGO模块;
步骤5,ALGO模块接收到任务操作请求,根据任务操作请求中指定要暂停、重启、撤销的某一直票的算法交易产生请求操作母单的FIX消息串,发送给三方算法服务;
步骤6,ALGO模块接收到三方算法服务的操作母单确认消息,并将该消息通转换成任务的状态通过推送的方式推送给任务管理子模块,如果操作是暂停、重启,则转换后的状态是已暂停、已重启转步骤7,如果是撤销转步骤9;
步骤7,任务管理子模块接收到ALGO模块推送的任务状态更新该任务状态,并通过推送的方式将该任务的详细信息推送给BUSAPI;
步骤8,BUSAPI接收到推送的任务信息之后,将该任务信息推送给外部投资交易系统;
步骤9,ALGO模块接收三方算法服务发送的撤销子单的请求,并将该请求匹配母单和任务,组成撤委托消息发送给任务管理子模块;
步骤10,任务管理子模块接收到ALGO发来的撤委托请求,验证是否合规,如果不合规转步骤11,合规转步骤12;
步骤11,任务管理子模块通过回调方式通知ALGO模块撤委托失败,ALGO接收到撤委托失败消息,将该消息组成FIX消息串发送给三方算法服务;
步骤12,任务管理子模块将撤委托请求发送给委托管理子模块,并注册回调函数,等待报撤单成功或者失败的回调信息;
步骤13,委托管理子模块接收到撤委托请求,检查缓存中是否有该笔委托的委托号,如果不存在则拒绝报单,存在则接受撤单,并进入撤单队列;
步骤14,撤单队列执行撤委托请求,将该请求发送给BROKER模块;
步骤15,BROKER模块接收到撤委托请求之后,将其转换成经纪公司柜台可识别的消息格式,发送给经纪公司柜台;
步骤16,撤单成功或者失败消息与算法总线委托成交信息处理步骤一致;
步骤17,当外部算法接收到所有的子单撤销成功消息时发送母单已撤销消息,ALGO模块接收到已撤销消息,将该消息转换成任务的状态发送给任务管理子模块;
步骤18,任务管理子模块根据任务下这只股票的交易状态计算任务的状态,并向BUSAI推送当前任务的详细信息;
步骤19,BUSAPI接收到任务详细信息,将该信息推送给外部投资交易系统。
进一步地,在步骤1中,操作任务请求包括暂停、重启、撤单请求;在步骤18中,当任务下所有股票交易都为完成状态或者撤销,则任务撤销。
本发明的有益效果是:
(1)本发明具有规范稳定的算法投资交易接口,丰富的算法投资交易功能,可以进行交易策略定制、选取、参数配置,以及快速便捷的多账户、多标的交易功能,同时通过国际标准的FIX协议作为与三方算法服务的借口,可以快速、稳定地对接扩展更多的三方算法。以RPC协议作为算法总线中各个模块的连接方式可以最大限度屏蔽底层网络协议,最大限度的降低开发维护的难度。可以快速的可兼容多种PB及资管系统,支持多种比例下单模式、批量委托交易执行功能,对于中等及以上规模的金融投资机构有极高的便捷性、可靠性、经济适用性,可全方位满足大部分机构客户的交易执行需求。
(2)相比于传统的手动订单执行方式,本发明还可以帮助机构和高端个人投资者显著降低冲击成本,大幅减少异常交易的发生;同时也有助于提升国内交易所的流动性。
(3)本发明以证券交易的算法交易基本流程为基础,集成分丰富的接口,只需要搭配投资交易的下单界面、三方算法服务以及柜台系统即可组成一套完整的投资交易系统,可以有效地减少经纪公司开发整套投资交易系统的周期,同时又能够提供更多的券商的自由空间,可以让券商专注于开发自身投资交易界面,或者资管系统,帮助券商快速搭建起自身的投资交易系统。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为算法总线系统框架图;
图2为算法总线网络拓扑图;
图3本发明中测试前的算法总线系统状态图;
图4本发明中测试运行中的算法总线系统状态图;
图5本发明中执行后期的算法系总线统状态图;
图6本发明中测试结束后的算法总线系统状态图;
图7本发明中整个测试过程中算法总线相关进程均正常的算法系统状态图。
具体实施方式
下面结合附图进一步详细描述本发明的技术方案,但本发明的保护范围不局限于以下所述。本说明书中公开的所有特征,或隐含公开的所有方法或过程中的步骤,除了互相排斥的特征和/或步骤以外,均可以以任何方式组合。
如图1~7所示,一种证券算法交易过程中的实时算法交易总线系统,包括:
多个证券算法交易数据处理接口模块、证券交易数据算法总线模块,多个证券算法交易数据处理接口模块通过通信网络分别与证券交易数据算法总线模块建立实时通信连接;
所述证券算法交易数据处理接口模块用于接收或发送数据,并将数据送至证券交易数据算法总线模块;和/或所述证券算法交易数据处理接口模块从所述证券交易数据算法总线模块获取数据并处理数据。
进一步地,所述证券算法交易数据处理接口模块包括证券算法交易任务接口创建模块、外部算法服务接口模块和经济公司柜台委托接口模块;
所述证券算法交易任务接口创建模块,用于资金账号登录和接收外部系统创建证券交易任务请求;外部系统通过证券算法交易任务接口创建模块获取证券交易任务数据,证券交易数据算法总线模块通过证券算法交易任务接口创建模块向外部系统推送算法交易数据;
所述外部算法服务接口模块,用于发送证券交易数据算法总线模块需要通过外部算法进行处理的证券交易任务数据,以及接收外部算法对该数据进行处理的结果,并将该结果发送给证券交易数据算法总线模块;
所述经济公司柜台委托接口模块,用于把具体的委托请求发送给对应的经纪公司的柜台系统,并接收外部柜台系统返回的委托成功信息,以及查询委托成交数据,以及接收外部柜台系统推送的委托成交数据。
进一步地,所述证券算法交易任务接口创建模块,拥有资金账号登录、创建任务、操作任务、查询任务相关信息、推送任务状态信息、推送委托详细数据接口、行情订阅以及与这些接口相关的函数组成的接口集合,用于提供给外部系统调用,并将外部系统创建的任务请求、查询请求转发至证券交易数据算法总线模块,将证券交易数据算法总线模块的任务信息和委托信息推送到外部系统。
进一步地,所述外部算法服务接口模块包括ALGO模块;ALGO模块由基类ALGO模块和继承基类ALGO模块的ALGO子模块组成,每个ALGO子模块都通过国际通用的FIX金融交换协议与外部算法建立连接,每个ALGO子模块都通过FIX协议的配置规则维护与外部算法的双向连接和/或单向连接;基类ALGO模块用于管理不同的ALGO模块,将证券交易数据算法总线模块创建的不同的算法任务转发到对应的ALGO子模块中,每个ALGO子模块都能够将接受到的算法任务转换成母单,通过FIX协议串发送到外部算法服务上,并且能够接收到外部算法发过来的母单确认消息、和/或母单拒绝消息、和/或母单完成消息、和/或母单过期消息,以及接收每一笔母单的子单委托请求,并将子单委托请求FIX消息串转换成委托请求转发至证券交易数据算法总线模块,同时转发来自证券交易数据算法总线模块的委托错误、成交信息给外部算法。
进一步地,所述经济公司柜台委托接口模块包括BROKER模块;BROKER模块包括不同类型的BROKER子模块,每个子模块对应一个券商,每个BROKER子模块通过前置机/跳板机与券商的内部柜台系统连接,BROKER子模块能够接受证券交易数据算法总线模块的委托请求,并转换成经纪公司能够识别的委托请求信息发送给经济公司的柜台系统,并且能够接收到经济公司柜台系统推送的委托数据,能够查询经济公司的委托信息和成交信息,并将该信息转发到证券交易数据算法总线模块。
进一步地,证券交易数据算法总线模块包括任务管理子模块、委托处理子模块、行情管理子模块和绩效统计子模块;所述任务管理子模块,用于管理证券算法交易的任务请求、状态、进度、持久化;所述委托处理子模块,用于管理证券算法交易的委托请求、状态、成交、持久化;所述行情管理子模块,用于订阅、接收、查询证券列表与证券行情;所述绩效统计子模块,用于统计指令、任务、委托的绩效数据。
进一步地,所述任务管理子模块包括任务创建模块、任务进度统计模块、任务数据推送模块、路由模块、第一账号数据管理中心模块和第一持久化模块;
所述任务创建模块,用于将BUSAPI模块发送的创建算法交易任务请求创建成一个实时运行的任务,并将算法任务请求发送给ALGO模块;
所述任务进度统计模块,用于统计算法任务的运行进度功能,并根据任务的进度修改任务的状态;
所述任务数据推送模块,用于将算法交易过程中创建、统计的任务信息存储到任务缓存队列,并利用多线程定时给BUSAPI模块发送算法任务相关信息;
所述路由模块,用于接受ALGO模块的委托请求信息,并将该信息转发至委托处理子模块,或接受委托处理子模块推送的委托成交信息,并将该信息转发至ALGO模块;
所述第一账号数据管理中心模块,用于初始化账号信息,接受委托处理子模块推送的委托信息、成交信息、账号信息,以及用于维护账号的登录状态和缓存当前账号的持仓、资金、委托信息、成交信息;
所述持久化模块,用于将任务信息持久化到Redis中,并在重启或异常重启后恢复重启前的任务数据快照。
进一步地,所述的委托处理子模块包括委托创建模块、委托请求队列模块、委托查询主推控制模块、第二账号数据管理中心模块、第二持久化模块;
所述委托创建模块,用于接受任务管理子模块路由的委托请求信息,根据委托请求信息生成不同类型的委托交易,包括股票交易,信用交易,沪港通,深港通,期货,期权中的一种或多种;并将生成的委托信息放入委托请求队列中;
所述委托请求队列模块,用于管理委托请求信息,对委托频率合规和委托量合规检查后,由该队列将委托请求依次发送到BROKER模块;
所述委托查询主推控制模块,用于定时轮训向BROKER模块查询委托以及成交信息,查询委托成交信息的模式包括全量查询、增量查询、全市场查询、分市场查询、启动时查询,通过配置能够开启不同经纪公司是否启用相应的查询模式,并接收BROKER模块发送的委托成交信息,存放在第二账号数据管理中心模块;
第二账号数据管理中心,用于登录、初始化账号信息,接受委托查询主推的委托信息、成交信息、账号信息,维护账号的登录状态,缓存当前账号的信息、委托信息、成交信息。同时向任务管理模块推送委托和成交信息;
第二持久化模块,用于将委托请求、委托信息、委托成交信息持久化到Redis中,并通过定时任务将Redis中的数据同步到MySQL服务中,并在重启或异常重启后恢复重启前的委托数据快照。
进一步地,行情管理子模块,用于根据权限配置订阅交易所发布的实时市场行情,将行情数据转发到任务管理子模块、委托处理子模块、行情管理子模块和绩效统计子模块中的任一个或多个。
进一步地,所述绩效统计子模块,用于统计交易过程中的指令、任务的绩效统计工作,并设置有查询接口,用于提供给其他模块查询使用绩效。
进一步地,BUSAPI模块作为委托管理子模块的Client与委托管理子模块建立连接,用于外部投资交易系统通过BUSAPI模块发起账号的登录,查询资金与持仓信息,并绑定接收委托管理子模块推送的委托成交信息和账号登录信息;
BUSAPI模块作为任务管理子模块的Client与任务管理子模块建立连接,用于外部投资交易系统可以通过BUSAPI模块发起任务的创建、账号初始化、任务数据的查询,同时BUSAPI模块通过该连接绑定接收任务管理子模块推送的任务执行信息;
任务管理子模块与ALGO模块互连,任务管理子模块和ALGO模块互为Service和Client,任务管理子模块请求创建算法母单,推送委托成交信息给ALGO模块;任务管理子模块接收ALGO模块推送的母单状态信息,并由任务管理子模块匹配到相应的任务,用于计算任务的状态;
任务管理子模块作为委托管理子模块的Client与委托管理子模块建立连接,用于资金账号初始化,转发ALGO模块的子单委托到委托管理子模块,接收委托管理子模块的委托成交信息并转发给ALGO模块。
进一步地,所述多个证券算法交易数据处理接口模块通过RPC协议通信网络分别与证券交易数据算法总线模块建立实时通信连接;所述多个证券算法交易数据处理接口模块通过以太网与外部系统建立通信连接。
进一步地,至少以一台服务器构成实时证券算法交易数据处理接口模块,每一台服务器至少与一个外部系统通信连接。
进一步地,所述操作任务包括暂停任务、继续任务、撤销任务中的一种或多种。
进一步地,ALGO子模块包括迅投智能算法接口模块,和/或第三方机构的算法服务对接模块;第三方机构的算法服务对接模块包括金纳算法接口模块、中信建投算法接口模块、中信cats算法接口模块、华润算法接口模块、华创算法接口模块、主动算法接口模块中的任意一种或多种。
一种基于上述任一所述的证券算法交易过程中的实时算法交易总线系统的方法,包括算法总线账号登录步骤:
S1,外部投资交易系统通过调用BUSAPI资金账号登录接口进行账号的登录,BUSAPI模块首先绑定接收委托处理子模块推送的委托成交信息,账号登录状态信息的函数,尝试连接委托处理子模块,如果连接失败转S2,如果连接成功转至S3;
S2,连接失败,则将失败信息通过回调通知外部投资交易系统;
S3,连接成功,则将账号登录请求信息转发给委托处理子模块;
S4,委托处理子模块接收到资金账号登录请求,首先校验资金账号,校验失败转S5;校验成功将该请求转发至BROKER模块,通过BROKER模块到券商柜台系统进行登录,登陆成功转至S6;
S5,校验资金账号失败后,将校验失败错误通过回调,通知BUSAPI模块,BUSAPI模块通过回调通知外部投资交易系统;
S6,委托处理子模块登陆成功之后,通过BROKER模块到柜台查询资金账号的信息,包括资金信息、持仓信息、委托成交信息,以及针对其他账号类型的信息,包括信用账号,额外查询负债合约信息和质押券信息,登录成功之后通过回调通知BUSAPI模块;
S7,BUSAPI模块接收到账号的登陆成功回调信息,并将该信息通过回调转发给外部投资交易系统;
一种基于上述任一所述的证券算法交易过程中的实时算法交易总线系统的方法,包括算法总线任务创建步骤:
SS1,外部投资交易系统通过调用BUSAPI模块提供创建任务Client接口,让BUSAPI与任务管理子模块创建连接并建立WatchClient,绑定用于接收任务管理子模块推送的任务状态信息,如果创建不成功转S2,如果成功转S3;
SS2,创建连接失败,BUSAPI模块通过回调通知外部投资交易系统,创建任务失败信息;
SS3,外部投资交易系统调用BUSAPI模块提供的创建任务接口,BUSAPI模块进行对创建任务请求的参数校验,如果校验不通过转SS4,校验通过转SS5;
SS4,BUSAPI模块通过回调通知外部投资交易系统检验参数失败,停止创建任务;
SS5,校验成功后,BUSAPI模块生成标识任务的CommandId,并把该Id写入创建任务请求信息中,同时将创建任务请求信息转发至任务管理子模块,最后将该Id写到Redis中,记录当前Id生成的偏移;BUSAPI模块将带有CommandId的任务请求信息,发送至任务管理子模块,同时从创建任务请求信息中取得账号信息,向任务管理子模块初始化账号;
SS6,任务管理子模块接收到初始化账号的请求,通过与委托管理子模块建立的Client初始化账号信息,并初始化账号数据管理中心;
SS7,任务管理子模块接收到创建任务的请求之后,开始创建任务,向账号数据管理中心订阅该账号的委托成交信息,创建完成任务之后,通过消息事件推送,将任务创建成功的信息推送给BUSAPI模块并缓存任务的状态信息,定时写到Redis中;
SS8,创建成功任务之后,任务管理子模块将创建任务请求信息转发给ALGO模块;
SS9,ALGO模块接收到创建任务的请求之后,把任务请求信息中的转换成母单,将母单请求信息通过FIX金融交换协议发送给不同的三方算法,并缓存创建任务请求相关信息,定时写到Redis中;
SS10,三方算法模块接收到母单请求信息之后,确认母单信息完成且有效,给ALGO模块发送母单确认信息,否则会给ALGO模块发送母单拒绝信息;
SS11,ALGO模块接收到母单确认或者拒绝消息之后,将母单中的状态转换成对应任务的状态和产生的确认拒绝信息发送给任务管理子模块,任务管理子模块接收到ALGO推送的任务状态信息,更新任务状态,并继续向BUSAPI推送任务的状态信息,BUSAPI收到任务的状态信息之后,继续给外部投资交易系统推送任务的状态信息。
一种基于上述任一所述的证券算法交易过程中的实时算法交易总线系统的方法,包括步骤:
算法总线子单委托步骤:
(S1),ALGO模块接收三方算法服务发送的子单FIX消息,ALGO模块将子单FIX消息根据所属任务的信息组成委托请求信息,发送给任务管理子模块;
(S2),任务管理子模块接收到委托请求,验证子单请求参数是否合规,或者对应的任务是否是委托状态,如果不合规则通过回调通知ALGO模块委托失败,转(S3),合规转(S4);
(S3),ALGO模块接收到任务管理子模块的失败回调信息,产生拒绝委托的FIX消息发送给三方算法服务;
(S4),任务管理子模块缓存下该委托信息,并计算冻结量,产生请求编号写入委托请求信息中,发送给委托管理子模块,并注册回调函数,等待报单成功或者失败的回调信息;
(S5),委托管理子模块接收到委托请求,根据委托请求中的账号类型,选择不同的处理逻辑,检查委托频率、委托量是否合规,如果不合规,则通过回调通知所述任务管理子模块,转(S6);如果合规,则缓存下委托请求信息,并将委托请求信息进入报单队列,等待报单转(S7);
(S6),任务管理子模块接收到委托管理子模块的失败回调信息之后,通过调用接收ALGO模块的子单请求时注册的回调函数,通知ALGO模块报单失败;
(S7),报单队列将委托发送到BROKER接口模块,并注册回调函数,接收BROKER接口模块转发柜台的报单成功或者失败消息,从而通过回调通知到下游各个模块,最终通知到三方算法服务;
(S8),BROKER接口模块接收到报单信息之后,将委托请求信息转换成券商柜台能识别的信息格式,转发至券商柜台系统,并注册回调函数,等待委托成功返回的委托成功或者失败信息;
(S9),BROKER接口模块接收到报单成功或者失败消息,将该消息转发至委托管理子模块,委托管理子模块通过返回的成功或者失败信息匹配报单信息,组成回调消息发送给任务管理子模块;
(S10),任务管理子模块接收到回调信息之后,如果是失败消息,则释放之前报单的冻结量,如果成功则不释放,并将该成功或者失败消息通过回调通知ALGO模块;
(S11),ALGO模块接受到委托成功或者失败信息,转换成FIX消息串发送给三方算法服务。
一种基于上述任一所述的证券算法交易过程中的实时算法交易总线系统的方法,包括算法总线委托成交信息处理步骤:
A1,BROKER模块接收到券商柜台推送的报单委托成交信息,或者通过查询某个账号下的委托成交信息,将该信息转发给委托管理子模块进行处理;
A2,委托管理子模块接收到委托成交信息,通过查询缓存的委托请求信息组成委托成交详细信息,并缓存到账号数据管理中心,通过账号数据管理中心推送给订阅了委托成交数据的任务管理子模块;
A3,任务管理接收到委托成交信息,通过该信息中的任务编号找到任务信息,更新任务中的冻结量,计算任务的状态,再将该信息填入任务详细信息中,通过任务详细数据信息定时器,定时推送给BUSAPI模块转A4,同时将委托成交该信息通过绑定的订阅函数推送给ALGO接口模块转A5;
A4,BUSAPI模块接收到任务管理子模块推送的任务详细数据,推送给外部投资交易系统;
A5,ALGO接收到委托成交详细数据,将该数据转换成FIX消息串发送给三方算法服务;
A6,ALGO接收三方算法发送的母单已完成消息,将该消息转换成任务的状态发送给任务管理子模块;
A7,任务管理子模块根据任务下这只股票的交易状态计算任务的状态当任务下所有股票交易都完成,则任务完成,并向BUSAPI推送当前任务的详细信息;
A8,BUSAPI接收到任务详细信息,将该信息推送给外部投资交易系统。
一种基于上述任一所述的证券算法交易过程中的实时算法交易总线系统的方法,包括算法总线任务暂停、重启、撤销处理步骤:
步骤1,外部投资交易系统通过调用BUSAPI提供的接口向BUSAPI发送操作任务请求,并发送给任务管理子模块;
步骤2,任务管理子模块接收到操作任务请求检查当前任务状态是否能够操作任务,如果不能操作任务转步骤3,如果能够操作任务转步骤4;
步骤3,通过回调通知BUSAPI模块操作任务失败,BUSAPI模块同样以回调通知外部投资交易系统操作任务失败;
步骤4,任务管理子模块首先把任务设置成等待中,然后将任务操作请求发送给ALGO模块;
步骤5,ALGO模块接收到任务操作请求,根据任务操作请求中指定要暂停、重启、撤销的某一直票的算法交易产生请求操作母单的FIX消息串,发送给三方算法服务;
步骤6,ALGO模块接收到三方算法服务的操作母单确认消息,并将该消息通转换成任务的状态通过推送的方式推送给任务管理子模块,如果操作是暂停、重启,则转换后的状态是已暂停、已重启转步骤7,如果是撤销转步骤9;
步骤7,任务管理子模块接收到ALGO模块推送的任务状态更新该任务状态,并通过推送的方式将该任务的详细信息推送给BUSAPI;
步骤8,BUSAPI接收到推送的任务信息之后,将该任务信息推送给外部投资交易系统;
步骤9,ALGO模块接收三方算法服务发送的撤销子单的请求,并将该请求匹配母单和任务,组成撤委托消息发送给任务管理子模块;
步骤10,任务管理子模块接收到ALGO发来的撤委托请求,验证是否合规,如果不合规转步骤11,合规转步骤12;
步骤11,任务管理子模块通过回调方式通知ALGO模块撤委托失败,ALGO接收到撤委托失败消息,将该消息组成FIX消息串发送给三方算法服务;
步骤12,任务管理子模块将撤委托请求发送给委托管理子模块,并注册回调函数,等待报撤单成功或者失败的回调信息;
步骤13,委托管理子模块接收到撤委托请求,检查缓存中是否有该笔委托的委托号,如果不存在则拒绝报单,存在则接受撤单,并进入撤单队列;
步骤14,撤单队列执行撤委托请求,将该请求发送给BROKER模块;
步骤15,BROKER模块接收到撤委托请求之后,将其转换成经纪公司柜台可识别的消息格式,发送给经纪公司柜台;
步骤16,撤单成功或者失败消息与算法总线委托成交信息处理步骤一致;
步骤17,当外部算法接收到所有的子单撤销成功消息时发送母单已撤销消息,ALGO模块接收到已撤销消息,将该消息转换成任务的状态发送给任务管理子模块;
步骤18,任务管理子模块根据任务下这只股票的交易状态计算任务的状态,并向BUSAI推送当前任务的详细信息;
步骤19,BUSAPI接收到任务详细信息,将该信息推送给外部投资交易系统。
进一步地,在步骤1中,操作任务请求包括暂停、重启、撤单请求;在步骤18中,当任务下所有股票交易都为完成状态或者撤销,则任务撤销。
本发明实施例的工作过程:
作为本发明较佳的实施例中,算法系统可以采用Lua架构,采用超高压缩数据通讯传输。
如图1~3,一种证券算法交易过程中的实时算法交易总线系统,包含第三方系统接入,算法总线,算法服务(包括算法接口),以及券商柜台,第三方系统、外部算法、券商柜台可以通过虚拟IP与算法总线系统通讯连接。可选的,算法服务可以设有智能算法对接通道模块,智能统一接入总线模块,智能盯盘中心模块,高速任务中心模块,综合交易服务模块等。
算法总线账号登录逻辑
S1,外部投资交易系统通过调用BUSAPI资金账号登录接口进行账号的登录,BUSAPI模块首先绑定接收委托处理子模块推送的委托成交信息,账号登录状态信息的函数,尝试连接委托处理子模块,如果连接失败转S2,如果连接成功转至S3;
S2,连接失败,则将失败信息通过回调通知外部投资交易系统;
S3,连接成功,则将账号登录请求信息转发给委托处理子模块;
S4,委托处理子模块接收到资金账号登录请求,首先校验资金账号,校验失败转S5;校验成功将该请求转发至BROKER模块,通过BROKER模块到券商柜台系统进行登录,登陆成功转至S6;
S5,校验资金账号失败后,将校验失败错误通过回调,通知BUSAPI模块,BUSAPI模块通过回调通知外部投资交易系统;
S6,委托处理子模块登陆成功之后,通过BROKER模块到柜台查询资金账号的信息,包括资金信息、持仓信息、委托成交信息,以及针对其他账号类型的信息,包括信用账号,额外查询负债合约信息和质押券信息,登录成功之后通过回调通知BUSAPI模块;
S7,BUSAPI模块接收到账号的登陆成功回调信息,并将该信息通过回调转发给外部投资交易系统。
算法总线任务创建逻辑
SS1,外部投资交易系统通过调用BUSAPI模块提供创建任务Client接口,让BUSAPI与任务管理子模块创建连接并建立WatchClient,绑定用于接收任务管理子模块推送的任务状态信息,如果创建不成功转S2,如果成功转S3;
SS2,创建连接失败,BUSAPI模块通过回调通知外部投资交易系统,创建任务失败信息;
SS3,外部投资交易系统调用BUSAPI模块提供的创建任务接口,BUSAPI模块进行对创建任务请求的参数校验,如果校验不通过转S4,校验通过转S5;
SS4,BUSAPI模块通过回调通知外部投资交易系统检验参数失败,停止创建任务;
SS5,校验成功后,BUSAPI模块生成标识任务的CommandId,并把该Id写入创建任务请求信息中,同时将创建任务请求信息转发至任务管理子模块,最后将该Id写到Redis中,记录当前Id生成的偏移;BUSAPI模块将带有CommandId的任务请求信息,发送至任务管理子模块,同时从创建任务请求信息中取得账号信息,向任务管理子模块初始化账号;
SS6,任务管理子模块接收到初始化账号的请求,通过与委托管理子模块建立的Client初始化账号信息,并初始化账号数据管理中心;
SS7,任务管理子模块接收到创建任务的请求之后,开始创建任务,向账号数据管理中心订阅该账号的委托成交信息,创建完成任务之后,通过消息事件推送,将任务创建成功的信息推送给BUSAPI模块并缓存任务的状态信息,定时写到Redis中;
SS8,创建成功任务之后,任务管理子模块将创建任务请求信息转发给ALGO模块;
SS9,ALGO模块接收到创建任务的请求之后,把任务请求信息中的转换成母单,将母单请求信息通过FIX金融交换协议发送给不同的三方算法,并缓存创建任务请求相关信息,定时写到Redis中;
SS10,三方算法模块接收到母单请求信息之后,确认母单信息完成且有效,给ALGO模块发送母单确认信息,否则会给ALGO模块发送母单拒绝信息;
SS11,ALGO模块接收到母单确认或者拒绝消息之后,将母单中的状态转换成对应任务的状态和产生的确认拒绝信息发送给任务管理子模块,任务管理子模块接收到ALGO推送的任务状态信息,更新任务状态,并继续向BUSAPI推送任务的状态信息,BUSAPI收到任务的状态信息之后,继续给外部投资交易系统推送任务的状态信息。
算法总线子单委托逻辑
(S1),ALGO模块接收三方算法服务发送的子单FIX消息,ALGO模块将子单FIX消息根据所属任务的信息组成委托请求信息,发送给任务管理子模块;
(S2),任务管理子模块接收到委托请求,验证子单请求参数是否合规,或者对应的任务是否是委托状态,如果不合规则通过回调通知ALGO模块委托失败,转(S3),合规转(S4);
(S3),ALGO模块接收到任务管理子模块的失败回调信息,产生拒绝委托的FIX消息发送给三方算法服务;
(S4),任务管理子模块缓存下该委托信息,并计算冻结量,产生请求编号写入委托请求信息中,发送给委托管理子模块,并注册回调函数,等待报单成功或者失败的回调信息;
(S5),委托管理子模块接收到委托请求,根据委托请求中的账号类型,选择不同的处理逻辑,检查委托频率是否合规、检查委托量是否合规,如果不合规,则通过回调通知任务管理子模块,转(S6),合规则缓存下委托请求信息,并将委托请求信息进入报单队列,等待报单转(S7);
(S6),任务管理子模块接收到委托管理子模块的失败回调信息之后,通过调用接收ALGO模块的子单请求时注册的回调函数,通知ALGO模块报单失败;
(S7),报单队列将委托发送到BROKER接口模块,并注册回调函数,接收BROKER接口模块转发柜台的报单成功或者失败消息,从而通过回调通知到下游各个模块,最终通知到三方算法服务;
(S8),BROKER接口模块接收到报单信息之后,将委托请求信息转换成券商柜台能识别的信息格式,转发至券商柜台系统,并注册回调函数,等待委托成功返回的委托成功或者失败信息;
(S9),BROKER接口模块接收到报单成功或者失败消息,将该消息转发至委托管理子模块,委托管理子模块通过返回的成功或者失败信息匹配报单信息,组成回调消息发送给任务管理子模块;
(S10),任务管理子模块接收到回调信息之后,如果是失败消息,则释放之前报单的冻结量,如果成功则不释放,并将该成功或者失败消息通过回调通知ALGO模块;
(S11),ALGO模块接受到委托成功或者失败信息,转换成FIX消息串发送给三方算法服务。
算法总线委托成交信息处理逻辑
A1,BROKER模块接收到券商柜台推送的报单委托成交信息,或者通过查询某个账号下的委托成交信息,将该信息转发给委托管理子模块进行处理;
A2,委托管理子模块接收到委托成交信息,通过查询缓存的委托请求信息组成委托成交详细信息,并缓存到账号数据管理中心,通过账号数据管理中心推送给订阅了委托成交数据的任务管理子模块;
A3,任务管理接收到委托成交信息,通过该信息中的任务编号找到任务信息,更新任务中的冻结量,计算任务的状态,再将该信息填入任务详细信息中,通过任务详细数据信息定时器,定时推送给BUSAPI模块转A4,同时将委托成交该信息通过绑定的订阅函数推送给ALGO接口模块转A5;
A4,BUSAPI模块接收到任务管理子模块推送的任务详细数据,推送给外部投资交易系统;
A5,ALGO接收到委托成交详细数据,将该数据转换成FIX消息串发送给三方算法服务;
A6,ALGO接收三方算法发送的母单已完成消息,将该消息转换成任务的状态发送给任务管理子模块;
A7,任务管理子模块根据任务下这只股票的交易状态计算任务的状态当任务下所有股票交易都完成,则任务完成,并向BUSAPI推送当前任务的详细信息;
A8,BUSAPI接收到任务详细信息,将该信息推送给外部投资交易系统。
算法总线任务暂停、重启、撤销处理逻辑
步骤1,外部投资交易系统通过调用BUSAPI提供的接口向BUSAPI发送操作任务请求,并发送给任务管理子模块;
步骤2,任务管理子模块接收到操作任务请求检查当前任务状态是否能够操作任务,如果不能操作任务转步骤3,如果能够操作任务转步骤4;
步骤3,通过回调通知BUSAPI模块操作任务失败,BUSAPI模块同样以回调通知外部投资交易系统操作任务失败;
步骤4,任务管理子模块首先把任务设置成等待中,然后将任务操作请求发送给ALGO模块;
步骤5,ALGO模块接收到任务操作请求,根据任务操作请求中指定要暂停、重启、撤销的某一直票的算法交易产生请求操作母单的FIX消息串,发送给三方算法服务;
步骤6,ALGO模块接收到三方算法服务的操作母单确认消息,并将该消息通转换成任务的状态通过推送的方式推送给任务管理子模块,如果操作是暂停、重启,则转换后的状态是已暂停、已重启转步骤7,如果是撤销转步骤9;
步骤7,任务管理子模块接收到ALGO模块推送的任务状态更新该任务状态,并通过推送的方式将该任务的详细信息推送给BUSAPI;
步骤8,BUSAPI接收到推送的任务信息之后,将该任务信息推送给外部投资交易系统;
步骤9,ALGO模块接收三方算法服务发送的撤销子单的请求,并将该请求匹配母单和任务,组成撤委托消息发送给任务管理子模块;
步骤10,任务管理子模块接收到ALGO发来的撤委托请求,验证是否合规,如果不合规转步骤11,合规转步骤12;
步骤11,任务管理子模块通过回调方式通知ALGO模块撤委托失败,ALGO接收到撤委托失败消息,将该消息组成FIX消息串发送给三方算法服务;
步骤12,任务管理子模块将撤委托请求发送给委托管理子模块,并注册回调函数,等待报撤单成功或者失败的回调信息;
步骤13,委托管理子模块接收到撤委托请求,检查缓存中是否有该笔委托的委托号,如果不存在则拒绝报单,存在则接受撤单,并进入撤单队列;
步骤14,撤单队列执行撤委托请求,将该请求发送给BROKER模块;
步骤15,BROKER模块接收到撤委托请求之后,将其转换成经纪公司柜台可识别的消息格式,发送给经纪公司柜台;
步骤16,撤单成功或者失败消息与算法总线委托成交信息处理步骤一致;
步骤17,当外部算法接收到所有的子单撤销成功消息时发送母单已撤销消息,ALGO模块接收到已撤销消息,将该消息转换成任务的状态发送给任务管理子模块;
步骤18,任务管理子模块根据任务下这只股票的交易状态计算任务的状态,并向BUSAI推送当前任务的详细信息;
步骤19,BUSAPI接收到任务详细信息,将该信息推送给外部投资交易系统。
在步骤1中,操作任务请求包括暂停、重启、撤单请求;在步骤18中,当任务下所有股票交易都为完成状态或者撤销,则任务撤销。
实时通信时延在毫秒级或者微秒级。
本发明具有规范稳定的算法投资交易接口,丰富的算法投资交易功能,可以进行交易策略定制、选取、参数配置、以及快速便捷的多账户、多标的交易功能,同时通过国际标准的FIX协议作为与三方算法服务的借口,可以快速、稳定的对接扩展更多的三方算法。以RPC协议作为算法总线中各个模块的连接方式可以最大限度屏蔽底层网络协议,最大限度的降低开发维护的难度,可以快速的可兼容等多种PB和资管系统,例如迅投QMT系统等,支持多种比例下单模式、批量委托交易执行功能,对于中等及以上规模的金融投资机构有极高的便捷性、可靠性、经济适用性,可全方位满足大部分机构客户的交易执行需求。
相比于传统的手动订单执行方式,本发明还可以帮助机构和高端个人投资者显著降低冲击成本,大幅减少异常交易的发生;同时也有助于提升国内交易所的流动性。
本发明集成丰富的接口,只需要搭配投资交易的下单界面、三方算法服务以及柜台系统即可组成一套完整的投资交易系统,可以有效地减少经纪公司开发整套投资交易系统的周期,同时又能够提供更多的券商的自由空间,可以让券商专注于开发自身投资交易界面,或者资管系统,帮助券商快速搭建起自身的投资交易系统。
为了保障数据的安全性和业务的连续性,该灾备方案基于统一存储(内存数据库Redis+物理数据库Mysql)复制技术,搭配稳定的keepalived服务+监控服务实现以下目标:
1.主备服务器redis数据库实时同步;
2.主备服务器mysql数据库实时同步;
3.算法总线服务在出现故障后能够自动切换到备机;
4.灾备切换后能自动恢复所有任务、委托、成交,不影响连续交易。
Lua量化架构嵌入应用程序中,为应用程序提供灵活的扩展和定制功能,实现了如下特性:
1.轻量级:它用标准C语言编写并以源代码形式开放,编译后仅仅一百余K,可以很方便的嵌入别的程序里;
2.可扩展:Lua提供了非常易于使用的扩展接口和机制:由宿主语言(通常是C或C++)提供这些功能,Lua可以使用它们,就像是本来就内置的功能一样;
3.易维护:Lua脚本不仅仅作为扩展脚本,也可以作为普通的配置文件,代替XML,ini等文件格式,并且更容易理解和维护;
4.易适配:Lua由标准C编写而成,代码简洁优美,几乎在所有操作系统和平台上都可以编译,运行。
高压缩数据通讯传输,通过BSON的使用,实现了如下特性:
1.更快的遍历速度;
2.操作更简易;
3.增加了额外的数据类型。
实施例具体测试报告
下面将结合在国内主流券商的具体测试实例,对本发明技术方案进行清楚、完整地验证。
测试内容及数据
1.概述
本测试报告中及后续提及的专用术语和缩略语如下:
总线:迅投算法总线系统
算法:迅投算法交易系统
任务:外部系统通过接口下达到算法总线的算法交易指令
母单:算法总线将通过外部系统通过接口下达的指的的部分或全部数量下达给算法的指令
子单/委托:算法对母单进行拆分产生的交易所委托
策略:算法的执行策略,如TWAP、VWAP等
2.测试环境
本次算法总线的压力测试环境部署在一台Linux虚拟机,其中参与测试的外部算法使用的是迅投智能算法服务,交易撮合柜台使用的是迅投模拟柜台,智能算法和模拟柜台分别部署在另外两台Linux虚拟机上。
硬件配置:
操作系统:SUSELinuxEnterpriseServer11(x64)-sp3
CPU:8核
内存:16G
相关软件:
算法总线发单器、讯投智能算法服务执行拆单、讯投模拟柜台模拟撮合
其它:
深圳/上海实时行情
主要性能指标:
最大每秒委托数量
最大并发母单数量
最大母单同时开始运行数量
3.测试内容
算法总线主要处理算法服务器中母单产生的委托,所以主要对算法总线委托处理能力进行测试。通过委托平均响应时间衡量委托处理情况优劣。实盘不同场景下相同数量母单产生的委托数量是不一样的,测试时记录不同场景下不同数量母单的委托处理情况,这样既可以测试出总线委托处理能力,又可以测试出不同场景下总线可以处理的母单数量。两个测试场景如下:
并发母单:母单运行开始时间分散,同时运行在算法服务器内进行委托报送。实盘情况下母单由不同客户创建运行开始时间是分散的,但是会同时在一起运行,总线大多数时间都在应对这种场景的母单并发,简称这种场景为“并发母单”。
母单同时开始运行:母单运行开始时间相同,开始运行的一瞬间。实盘情况下这种场景一般发生在创建组合任务时。相同数量母单,母单同时开始运行时委托报送量远高于母单同时运行委托报送量,因此母单能同时开始运行的数量会相对少,但是实盘组合任务母单数量也较少。
4.测试方法
并发母单场景:每次测试增加母单同时运行的数量,用CreateSubOrderTime.py统计委托处理情况并记录。委托平均响应时间大于100ms时,委托处理情况不合格,分析测试记录得到最大并发母单数量。补充说明如下:
(1)测试时长没有特殊限制,同时运行10min统计即可,也可适当延长测试时长。
(2)由于是一开始运行时是“母单同时开始运行”场景,CreateSubOrderTime.py脚本不统计一开始运行时的委托处理情况(不统计开始的2min)。
母单同时开始运行场景:与并发母单同理,每次测试增加母单同时开始运行的数量,用CreateSubOrderTime.py统计委托处理情况并记录。委托平均响应时间大于100ms时,委托处理情况不合格,分析测试记录得到最大母单同时开始运行数量。补充说明如下:
(1)此场景每个母单的委托数量设为100即可,因为委托数量增大之后,后面的报单为并发母单场景。
委托处理能力:根据两个场景的委托处理情况,委托平均响应时间大于100ms时即为不合格,得到最大每秒委托数量。
5.测试记录
本次测试测试记录如下:
主要性能指标:
最大每秒委托数量621笔/s
最大并发母单数量19000个
最大母单同时开始运行数量2100个
针对算法总线系统的母单并发情况下的吞吐量和处理容量的测试,汇总结果如下:
母单数量 | 委托平均响应时间 | 每秒委托数量范围(个 |
18000 | 60.91 | 1~658 |
19000 | 352.58 | 1~913 |
20000 | 421.95 | 11~759 |
针对算法总线系统的母单同时运行情况下的吞吐量和处理容量的测试,汇总结果如下:
测试结论
母单同时运行2100时,测试前如图3;测试运行中如图4;执行后期如图5;测试结束后如图6;整个测试过程中算法相关进程均正常如图7;
最大每秒委托数量为621个/s,委托处理能力较佳。系统在硬件配置水平较低的情况下,对于并发母单场景与母单同时开始运行场景,就分别具有同时处理19000与2100个母单的能力。
从服务器资源来看,在后续实盘运行在性能较好的物理机上,算法系统的并发处理能力还可以有进一步的提升;综上,本发明算法交易总线系统测试结果良好。
本发明功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
Claims (21)
1.一种证券算法交易过程中的实时算法交易总线系统,其特征在于,包括:
多个证券算法交易数据处理接口模块、证券交易数据算法总线模块,多个证券算法交易数据处理接口模块通过通信网络分别与证券交易数据算法总线模块建立实时通信连接;
所述证券算法交易数据处理接口模块用于接收或发送数据,并将数据送至证券交易数据算法总线模块;和/或所述证券算法交易数据处理接口模块从所述证券交易数据算法总线模块获取数据并处理数据。
2.根据权利要求1所述的证券算法交易过程中的实时算法交易总线系统,其特征在于,所述证券算法交易数据处理接口模块包括证券算法交易任务接口创建模块、外部算法服务接口模块和经济公司柜台委托接口模块;
所述证券算法交易任务接口创建模块,用于资金账号登录和接收外部系统创建证券交易任务请求;外部系统通过证券算法交易任务接口创建模块获取证券交易任务数据,证券交易数据算法总线模块通过证券算法交易任务接口创建模块向外部系统推送算法交易数据;
所述外部算法服务接口模块,用于发送证券交易数据算法总线模块需要通过外部算法进行处理的证券交易任务数据,以及接收外部算法对该数据进行处理的结果,并将该结果发送给证券交易数据算法总线模块;
所述经济公司柜台委托接口模块,用于把具体的委托请求发送给对应的经纪公司的柜台系统,并接收外部柜台系统返回的委托成功信息,以及查询委托成交数据,以及接收外部柜台系统推送的委托成交数据。
3.根据权利要求2所述的证券算法交易过程中的实时算法交易总线系统,其特征在于,
所述证券算法交易任务接口创建模块,拥有资金账号登录、创建任务、操作任务、查询任务相关信息、推送任务状态信息、推送委托详细数据接口、行情订阅以及与这些接口相关的函数组成的接口集合,用于提供给外部系统调用,并将外部系统创建的任务请求、查询请求转发至证券交易数据算法总线模块,将证券交易数据算法总线模块的任务信息和委托信息推送到外部系统。
4.根据权利要求2或3所述的证券算法交易过程中的实时算法交易总线系统,其特征在于,所述外部算法服务接口模块包括ALGO模块;ALGO模块由基类ALGO模块和继承基类ALGO模块的ALGO子模块组成,每个ALGO子模块都通过国际通用的FIX金融交换协议与外部算法建立连接,每个ALGO子模块都通过FIX协议的配置规则维护与外部算法的双向连接和/或单向连接;基类ALGO模块用于管理不同的ALGO模块,将证券交易数据算法总线模块创建的不同的算法任务转发到对应的ALGO子模块中,每个ALGO子模块都能够将接受到的算法任务转换成母单,通过FIX协议串发送到外部算法服务上,并且能够接收到外部算法发过来的母单确认消息、和/或母单拒绝消息、和/或母单完成消息、和/或母单过期消息,以及接收每一笔母单的子单委托请求,并将子单委托请求FIX消息串转换成委托请求转发至证券交易数据算法总线模块,同时转发来自证券交易数据算法总线模块的委托错误、成交信息给外部算法。
5.根据权利要求4所述的证券算法交易过程中的实时算法交易总线系统,其特征在于,所述经济公司柜台委托接口模块包括BROKER模块;BROKER模块包括不同类型的BROKER子模块,每个子模块对应一个券商,每个BROKER子模块通过前置机/跳板机与券商的内部柜台系统连接,BROKER子模块能够接受证券交易数据算法总线模块的委托请求,并转换成经纪公司能够识别的委托请求信息发送给经济公司的柜台系统,并且能够接收到经济公司柜台系统推送的委托数据,能够查询经济公司的委托信息和成交信息,并将该信息转发到证券交易数据算法总线模块。
6.根据权利要求1~5任一所述的证券算法交易过程中的实时算法交易总线系统,其特征在于,证券交易数据算法总线模块包括任务管理子模块、委托处理子模块、行情管理子模块和绩效统计子模块;所述任务管理子模块,用于管理证券算法交易的任务请求、状态、进度、持久化;所述委托处理子模块,用于管理证券算法交易的委托请求、状态、成交、持久化;所述行情管理子模块,用于订阅、接收、查询证券列表与证券行情;所述绩效统计子模块,用于统计指令、任务、委托的绩效数据。
7.根据权利要求6所述的证券算法交易过程中的实时算法交易总线系统,其特征在于,
所述任务管理子模块包括任务创建模块、任务进度统计模块、任务数据推送模块、路由模块、第一账号数据管理中心模块和第一持久化模块;
所述任务创建模块,用于将BUSAPI模块发送的创建算法交易任务请求创建成一个实时运行的任务,并将算法任务请求发送给ALGO模块;
所述任务进度统计模块,用于统计算法任务的运行进度功能,并根据任务的进度修改任务的状态;
所述任务数据推送模块,用于将算法交易过程中创建、统计的任务信息存储到任务缓存队列,并利用多线程定时给BUSAPI模块发送算法任务相关信息;
所述路由模块,用于接受ALGO模块的委托请求信息,并将该信息转发至委托处理子模块,或接受委托处理子模块推送的委托成交信息,并将该信息转发至ALGO模块;
所述第一账号数据管理中心模块,用于初始化账号信息,接受委托处理子模块推送的委托信息、成交信息、账号信息,以及用于维护账号的登录状态和缓存当前账号的持仓、资金、委托信息、成交信息;
所述持久化模块,用于将任务信息持久化到Redis中,并在重启或异常重启后恢复重启前的任务数据快照。
8.根据权利要求6所述的证券算法交易过程中的实时算法交易总线系统,其特征在于,
所述的委托处理子模块包括委托创建模块、委托请求队列模块、委托查询主推控制模块、第二账号数据管理中心模块、第二持久化模块;
所述委托创建模块,用于接受任务管理子模块路由的委托请求信息,根据委托请求信息生成不同类型的委托交易,包括股票交易,信用交易,沪港通,深港通,期货,期权中的一种或多种;并将生成的委托信息放入委托请求队列中;
所述委托请求队列模块,用于管理委托请求信息,对委托频率合规和委托量合规检查后,由该队列将委托请求依次发送到BROKER模块;
所述委托查询主推控制模块,用于定时轮训向BROKER模块查询委托以及成交信息,查询委托成交信息的模式包括全量查询、增量查询、全市场查询、分市场查询、启动时查询,通过配置能够开启不同经纪公司是否启用相应的查询模式,并接收BROKER模块发送的委托成交信息,存放在第二账号数据管理中心模块;
第二账号数据管理中心,用于登录、初始化账号信息,接受委托查询主推的委托信息、成交信息、账号信息,维护账号的登录状态,缓存当前账号的信息、委托信息、成交信息。同时向任务管理模块推送委托和成交信息;
第二持久化模块,用于将委托请求、委托信息、委托成交信息持久化到Redis中,并通过定时任务将Redis中的数据同步到MySQL服务中,并在重启或异常重启后恢复重启前的委托数据快照。
9.根据权利要求6所述的证券算法交易过程中的实时算法交易总线系统,其特征在于,行情管理子模块,用于根据权限配置订阅交易所发布的实时市场行情,将行情数据转发到任务管理子模块、委托处理子模块、行情管理子模块和绩效统计子模块中的任一个或多个。
10.根据权利要求6所述的证券算法交易过程中的实时算法交易总线系统,其特征在于,所述绩效统计子模块,用于统计交易过程中的指令、任务的绩效统计工作,并设置有查询接口,用于提供给其他模块查询使用绩效。
11.根据权利要求5所述的证券算法交易过程中的实时算法交易总线系统,其特征在于,
BUSAPI模块作为委托管理子模块的Client与委托管理子模块建立连接,用于外部投资交易系统通过BUSAPI模块发起账号的登录,查询资金与持仓信息,并绑定接收委托管理子模块推送的委托成交信息和账号登录信息;
BUSAPI模块作为任务管理子模块的Client与任务管理子模块建立连接,用于外部投资交易系统可以通过BUSAPI模块发起任务的创建、账号初始化、任务数据的查询,同时BUSAPI模块通过该连接绑定接收任务管理子模块推送的任务执行信息;
任务管理子模块与ALGO模块互连,任务管理子模块和ALGO模块互为Service和Client,任务管理子模块请求创建算法母单,推送委托成交信息给ALGO模块;任务管理子模块接收ALGO模块推送的母单状态信息,并由任务管理子模块匹配到相应的任务,用于计算任务的状态;
任务管理子模块作为委托管理子模块的Client与委托管理子模块建立连接,用于资金账号初始化,转发ALGO模块的子单委托到委托管理子模块,接收委托管理子模块的委托成交信息并转发给ALGO模块。
12.根据权利要求1所述的证券算法交易过程中的实时算法交易总线系统,其特征在于,所述多个证券算法交易数据处理接口模块通过RPC协议通信网络分别与证券交易数据算法总线模块建立实时通信连接;所述多个证券算法交易数据处理接口模块通过以太网与外部系统建立通信连接。
13.根据权利要求1所述的证券算法交易过程中的实时算法交易总线系统,其特征在于,至少以一台服务器构成实时证券算法交易数据处理接口模块,每一台服务器至少与一个外部系统通信连接。
14.根据权利要求3所述的证券算法交易过程中的实时算法交易总线系统,其特征在于,所述操作任务包括暂停任务、继续任务、撤销任务中的一种或多种。
15.根据权利要求4所述的证券算法交易过程中的实时算法交易总线系统,其特征在于,ALGO子模块包括迅投智能算法接口模块,和/或第三方机构的算法服务对接模块;第三方机构的算法服务对接模块包括金纳算法接口模块、中信建投算法接口模块、中信cats算法接口模块、华润算法接口模块、华创算法接口模块、主动算法接口模块中的任意一种或多种。
16.一种基于上述任一所述的证券算法交易过程中的实时算法交易总线系统的方法,其特征在于,包括算法总线账号登录步骤:
S1,外部投资交易系统通过调用BUSAPI资金账号登录接口进行账号的登录,BUSAPI模块首先绑定接收委托处理子模块推送的委托成交信息,账号登录状态信息的函数,尝试连接委托处理子模块,如果连接失败转S2,如果连接成功转至S3;
S2,连接失败,则将失败信息通过回调通知外部投资交易系统;
S3,连接成功,则将账号登录请求信息转发给委托处理子模块;
S4,委托处理子模块接收到资金账号登录请求,首先校验资金账号,校验失败转S5;校验成功将该请求转发至BROKER模块,通过BROKER模块到券商柜台系统进行登录,登陆成功转至S6;
S5,校验资金账号失败后,将校验失败错误通过回调,通知BUSAPI模块,BUSAPI模块通过回调通知外部投资交易系统;
S6,委托处理子模块登陆成功之后,通过BROKER模块到柜台查询资金账号的信息,包括资金信息、持仓信息、委托成交信息,以及针对其他账号类型的信息,包括信用账号,额外查询负债合约信息和质押券信息,登录成功之后通过回调通知BUSAPI模块;
S7,BUSAPI模块接收到账号的登陆成功回调信息,并将该信息通过回调转发给外部投资交易系统。
17.一种基于上述任一所述的证券算法交易过程中的实时算法交易总线系统的方法,其特征在于,包括算法总线任务创建步骤:
SS1,外部投资交易系统通过调用BUSAPI模块提供创建任务Client接口,让BUSAPI与任务管理子模块创建连接并建立WatchClient,绑定用于接收任务管理子模块推送的任务状态信息,如果创建不成功转S2,如果成功转S3;
SS2,创建连接失败,BUSAPI模块通过回调通知外部投资交易系统,创建任务失败信息;
SS3,外部投资交易系统调用BUSAPI模块提供的创建任务接口,BUSAPI模块进行对创建任务请求的参数校验,如果校验不通过转SS4,校验通过转SS5;
SS4,BUSAPI模块通过回调通知外部投资交易系统检验参数失败,停止创建任务;
SS5,校验成功后,BUSAPI模块生成标识任务的CommandId,并把该Id写入创建任务请求信息中,同时将创建任务请求信息转发至任务管理子模块,最后将该Id写到Redis中,记录当前Id生成的偏移;BUSAPI模块将带有CommandId的任务请求信息,发送至任务管理子模块,同时从创建任务请求信息中取得账号信息,向任务管理子模块初始化账号;
SS6,任务管理子模块接收到初始化账号的请求,通过与委托管理子模块建立的Client初始化账号信息,并初始化账号数据管理中心;
SS7,任务管理子模块接收到创建任务的请求之后,开始创建任务,向账号数据管理中心订阅该账号的委托成交信息,创建完成任务之后,通过消息事件推送,将任务创建成功的信息推送给BUSAPI模块并缓存任务的状态信息,定时写到Redis中;
SS8,创建成功任务之后,任务管理子模块将创建任务请求信息转发给ALGO模块;
SS9,ALGO模块接收到创建任务的请求之后,把任务请求信息中的转换成母单,将母单请求信息通过FIX金融交换协议发送给不同的三方算法,并缓存创建任务请求相关信息,定时写到Redis中;
SS10,三方算法模块接收到母单请求信息之后,确认母单信息完成且有效,给ALGO模块发送母单确认信息,否则会给ALGO模块发送母单拒绝信息;
SS11,ALGO模块接收到母单确认或者拒绝消息之后,将母单中的状态转换成对应任务的状态和产生的确认拒绝信息发送给任务管理子模块,任务管理子模块接收到ALGO推送的任务状态信息,更新任务状态,并继续向BUSAPI推送任务的状态信息,BUSAPI收到任务的状态信息之后,继续给外部投资交易系统推送任务的状态信息。
18.一种基于上述任一所述的证券算法交易过程中的实时算法交易总线系统的方法,其特征在于,包括步骤:
算法总线子单委托步骤:
(S1),ALGO模块接收三方算法服务发送的子单FIX消息,ALGO模块将子单FIX消息根据所属任务的信息组成委托请求信息,发送给任务管理子模块;
(S2),任务管理子模块接收到委托请求,验证子单请求参数是否合规,或者对应的任务是否是委托状态,如果不合规则通过回调通知ALGO模块委托失败,转(S3),合规转(S4);
(S3),ALGO模块接收到任务管理子模块的失败回调信息,产生拒绝委托的FIX消息发送给三方算法服务;
(S4),任务管理子模块缓存下该委托信息,并计算冻结量,产生请求编号写入委托请求信息中,发送给委托管理子模块,并注册回调函数,等待报单成功或者失败的回调信息;
(S5),委托管理子模块接收到委托请求,根据委托请求中的账号类型,选择不同的处理逻辑,检查委托频率、委托量是否合规,如果不合规,则通过回调通知所述任务管理子模块,转(S6);如果合规,则缓存下委托请求信息,并将委托请求信息进入报单队列,等待报单转(S7);
(S6),任务管理子模块接收到委托管理子模块的失败回调信息之后,通过调用接收ALGO模块的子单请求时注册的回调函数,通知ALGO模块报单失败;
(S7),报单队列将委托发送到BROKER接口模块,并注册回调函数,接收BROKER接口模块转发柜台的报单成功或者失败消息,从而通过回调通知到下游各个模块,最终通知到三方算法服务;
(S8),BROKER接口模块接收到报单信息之后,将委托请求信息转换成券商柜台能识别的信息格式,转发至券商柜台系统,并注册回调函数,等待委托成功返回的委托成功或者失败信息;
(S9),BROKER接口模块接收到报单成功或者失败消息,将该消息转发至委托管理子模块,委托管理子模块通过返回的成功或者失败信息匹配报单信息,组成回调消息发送给任务管理子模块;
(S10),任务管理子模块接收到回调信息之后,如果是失败消息,则释放之前报单的冻结量,如果成功则不释放,并将该成功或者失败消息通过回调通知ALGO模块;
(S11),ALGO模块接受到委托成功或者失败信息,转换成FIX消息串发送给三方算法服务。
19.一种基于上述任一所述的证券算法交易过程中的实时算法交易总线系统的方法,其特征在于,包括算法总线委托成交信息处理步骤:
A1,BROKER模块接收到券商柜台推送的报单委托成交信息,或者通过查询某个账号下的委托成交信息,将该信息转发给委托管理子模块进行处理;
A2,委托管理子模块接收到委托成交信息,通过查询缓存的委托请求信息组成委托成交详细信息,并缓存到账号数据管理中心,通过账号数据管理中心推送给订阅了委托成交数据的任务管理子模块;
A3,任务管理接收到委托成交信息,通过该信息中的任务编号找到任务信息,更新任务中的冻结量,计算任务的状态,再将该信息填入任务详细信息中,通过任务详细数据信息定时器,定时推送给BUSAPI模块转A4,同时将委托成交该信息通过绑定的订阅函数推送给ALGO接口模块转A5;
A4,BUSAPI模块接收到任务管理子模块推送的任务详细数据,推送给外部投资交易系统;
A5,ALGO接收到委托成交详细数据,将该数据转换成FIX消息串发送给三方算法服务;
A6,ALGO接收三方算法发送的母单已完成消息,将该消息转换成任务的状态发送给任务管理子模块;
A7,任务管理子模块根据任务下这只股票的交易状态计算任务的状态当任务下所有股票交易都完成,则任务完成,并向BUSAPI推送当前任务的详细信息;
A8,BUSAPI接收到任务详细信息,将该信息推送给外部投资交易系统。
20.一种基于上述任一所述的证券算法交易过程中的实时算法交易总线系统的方法,其特征在于,包括算法总线任务暂停、重启、撤销处理步骤:
步骤1,外部投资交易系统通过调用BUSAPI提供的接口向BUSAPI发送操作任务请求,并发送给任务管理子模块;
步骤2,任务管理子模块接收到操作任务请求检查当前任务状态是否能够操作任务,如果不能操作任务转步骤3,如果能够操作任务转步骤4;
步骤3,通过回调通知BUSAPI模块操作任务失败,BUSAPI模块同样以回调通知外部投资交易系统操作任务失败;
步骤4,任务管理子模块首先把任务设置成等待中,然后将任务操作请求发送给ALGO模块;
步骤5,ALGO模块接收到任务操作请求,根据任务操作请求中指定要暂停、重启、撤销的某一直票的算法交易产生请求操作母单的FIX消息串,发送给三方算法服务;
步骤6,ALGO模块接收到三方算法服务的操作母单确认消息,并将该消息通转换成任务的状态通过推送的方式推送给任务管理子模块,如果操作是暂停、重启,则转换后的状态是已暂停、已重启转步骤7,如果是撤销转步骤9;
步骤7,任务管理子模块接收到ALGO模块推送的任务状态更新该任务状态,并通过推送的方式将该任务的详细信息推送给BUSAPI;
步骤8,BUSAPI接收到推送的任务信息之后,将该任务信息推送给外部投资交易系统;
步骤9,ALGO模块接收三方算法服务发送的撤销子单的请求,并将该请求匹配母单和任务,组成撤委托消息发送给任务管理子模块;
步骤10,任务管理子模块接收到ALGO发来的撤委托请求,验证是否合规,如果不合规转步骤11,合规转步骤12;
步骤11,任务管理子模块通过回调方式通知ALGO模块撤委托失败,ALGO接收到撤委托失败消息,将该消息组成FIX消息串发送给三方算法服务;
步骤12,任务管理子模块将撤委托请求发送给委托管理子模块,并注册回调函数,等待报撤单成功或者失败的回调信息;
步骤13,委托管理子模块接收到撤委托请求,检查缓存中是否有该笔委托的委托号,如果不存在则拒绝报单,存在则接受撤单,并进入撤单队列;
步骤14,撤单队列执行撤委托请求,将该请求发送给BROKER模块;
步骤15,BROKER模块接收到撤委托请求之后,将其转换成经纪公司柜台可识别的消息格式,发送给经纪公司柜台;
步骤16,撤单成功或者失败消息与算法总线委托成交信息处理步骤一致;
步骤17,当外部算法接收到所有的子单撤销成功消息时发送母单已撤销消息,ALGO模块接收到已撤销消息,将该消息转换成任务的状态发送给任务管理子模块;
步骤18,任务管理子模块根据任务下这只股票的交易状态计算任务的状态,并向BUSAI推送当前任务的详细信息;
步骤19,BUSAPI接收到任务详细信息,将该信息推送给外部投资交易系统。
21.根据权利要求20所述的一种基于上述任一证券算法交易过程中的实时算法交易总线系统的方法,其特征在于,在步骤1中,操作任务请求包括暂停、重启、撤单请求;在步骤18中,当任务下所有股票交易都为完成状态或者撤销,则任务撤销。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010912976.1A CN112116471B (zh) | 2020-09-02 | 2020-09-02 | 一种证券算法交易过程中的实时算法交易总线系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010912976.1A CN112116471B (zh) | 2020-09-02 | 2020-09-02 | 一种证券算法交易过程中的实时算法交易总线系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112116471A true CN112116471A (zh) | 2020-12-22 |
CN112116471B CN112116471B (zh) | 2021-09-28 |
Family
ID=73805202
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010912976.1A Active CN112116471B (zh) | 2020-09-02 | 2020-09-02 | 一种证券算法交易过程中的实时算法交易总线系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112116471B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113409142A (zh) * | 2021-06-15 | 2021-09-17 | 深圳市丽海弘金科技有限公司 | 证券交易方法、装置、系统与计算机可读存储介质 |
CN115168438A (zh) * | 2022-09-07 | 2022-10-11 | 中国中金财富证券有限公司 | 成交回报数据整合方法及相关装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2001033396A2 (en) * | 1999-10-29 | 2001-05-10 | Jacob Wohlstadter | Method of exchanging securities |
US20020099645A1 (en) * | 2000-12-22 | 2002-07-25 | Brijesh Agarwal | Method and system for computer-implemented trading of new issue debt securities |
CN101911106A (zh) * | 2007-10-24 | 2010-12-08 | Uat股份有限公司 | 为交易买卖盘执行分配职责的系统和方法 |
CN110175921A (zh) * | 2019-05-29 | 2019-08-27 | 北京睿智融科控股股份有限公司 | 一种基于历史统计加实盘数据的交易平台及交易算法 |
CN111161060A (zh) * | 2019-11-28 | 2020-05-15 | 北京睿智融科控股股份有限公司 | 一种投研交易综合平台 |
-
2020
- 2020-09-02 CN CN202010912976.1A patent/CN112116471B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2001033396A2 (en) * | 1999-10-29 | 2001-05-10 | Jacob Wohlstadter | Method of exchanging securities |
US20020099645A1 (en) * | 2000-12-22 | 2002-07-25 | Brijesh Agarwal | Method and system for computer-implemented trading of new issue debt securities |
CN101911106A (zh) * | 2007-10-24 | 2010-12-08 | Uat股份有限公司 | 为交易买卖盘执行分配职责的系统和方法 |
CN110175921A (zh) * | 2019-05-29 | 2019-08-27 | 北京睿智融科控股股份有限公司 | 一种基于历史统计加实盘数据的交易平台及交易算法 |
CN111161060A (zh) * | 2019-11-28 | 2020-05-15 | 北京睿智融科控股股份有限公司 | 一种投研交易综合平台 |
Non-Patent Citations (1)
Title |
---|
陈杰: "私募投研销一体化系统的设计与实现", 《中国优秀硕士学位论文全文数据库》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113409142A (zh) * | 2021-06-15 | 2021-09-17 | 深圳市丽海弘金科技有限公司 | 证券交易方法、装置、系统与计算机可读存储介质 |
CN115168438A (zh) * | 2022-09-07 | 2022-10-11 | 中国中金财富证券有限公司 | 成交回报数据整合方法及相关装置 |
Also Published As
Publication number | Publication date |
---|---|
CN112116471B (zh) | 2021-09-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3371701B1 (en) | Clustered fault tolerance systems and methods using load-based failover | |
US8909977B2 (en) | Failover system and method | |
US9798639B2 (en) | Failover system and method replicating client message to backup server from primary server | |
CN112116471B (zh) | 一种证券算法交易过程中的实时算法交易总线系统 | |
CN110175921A (zh) | 一种基于历史统计加实盘数据的交易平台及交易算法 | |
CN112446786A (zh) | 一种异常交易处理方法、装置、电子设备和可读存储介质 | |
CN110413687B (zh) | 基于节点互证校验的分布式事务故障处理方法及相关设备 | |
CN112596801B (zh) | 事务处理方法、装置、设备、存储介质、数据库 | |
CN111680080A (zh) | 数据处理方法及数据处理系统 | |
US11522966B2 (en) | Methods, devices and systems for non-disruptive upgrades to a replicated state machine in a distributed computing environment | |
CN114595071A (zh) | 一种券商核心交易数据同步系统及方法 | |
CN115271694A (zh) | 订单支付方法及系统 | |
CN112035525B (zh) | 快递国际业务的账单核销方法、装置、设备和存储介质 | |
CN114612204A (zh) | 对账方法及装置 | |
US7587623B2 (en) | Systems and methods for recovering a trading system | |
US20140165067A1 (en) | Task Concurrency Limiter | |
US11809412B2 (en) | Systems and methods of distributed processing | |
US20230032268A1 (en) | Systems and methods of distributed processing | |
CA3214795A1 (en) | Actor model payment processing engine | |
CN116051108A (zh) | 支付处理方法、装置、设备及存储介质 | |
EP1746507B1 (en) | System and method for recovering a trading system | |
CN117608617A (zh) | 一种多对接系统的数据同步处理的方法 | |
CN117675185A (zh) | 基于事务消息的密码协议事务管理方法、介质及装置 | |
CN114490678A (zh) | 异常账务数据的处理方法、装置、设备及介质 | |
CN117057792A (zh) | 缴费方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |