1、http:/- 1 -中国科技论文在线量化交易平台架构研究 杨晓婷,潘维民 *作者简介:杨晓婷(1992-),女,硕士研究生,计算机应用通信联系人:潘维民(1969-),男,副教授,主要研究方向: 数理逻辑,计算金融学,数据分析,金融风险管理,行业应用软件. E-mail: (北京邮电大学计算机学院,北京 100876)5 摘要:策略交易者目前在国内占比相对于欧美来说非常低。编程技能欠缺、信号评价无从验证、信息分散等问题严重阻碍了策略交易在国内的发展。本文设计并实现了一个可视化的全民策略交易平台框架,提供百姓能够使用的金融量化分析交易平台。在进行了细致的需求分析、详细设计、技术调研和技术选型之
2、后,采用 Node.js 框架、RabbitMQ 通信、Nginx 负载均衡、Redis 缓存等技术,搭建了一个高可用、高性能、可伸缩的量化交易平台10 框架,实现了用户管理、信号定制与展示、实时数据展示、信号回测等功能。该系统可以承受每秒 10 万次并发访问,并且在高并发的基础上保证请求的正确性,完全符合量化交易平台的要求。关键词:计算机应用;量化交易;Node.js中图分类号:TP311.515Research of the Framework of Quantitative Trading PlatformYANG Xiaoting, PAN Weimin(Computer Scienc
3、e School, Beijing University of Post and telecommunication, Beijing 100876)20 Abstract: Compared with Europe and America, the proportion of strategic traders is very low in China now. Problems, such as lack of programming skills, lack of verification for signal evaluation, information dispersion and
4、 so on, severely hinder the development of strategic trade in China.A visualized national strategic trading platform framework is designed and realized in this paper in order to provide a financial quantitative analysis trading platform for the public.After 25 meticulous requirement analysis, detail
5、ed design, technology investigation, research and selection, technologies like Node.js framework, RabbitMQ communication, Nginx load balancing, Redis caches and so on are adopted to build up an elastic quantitative trading platform framework of high-serviceability and high-function, realizing functi
6、ons like user management, signal customization and display, real-time data display, signal detection and so on.100,000 concurrent 30 accesses per second are available for the system. On the basis of high-concurrency, the accuracy of requirements is ensured, being completely in conformity with the re
7、quirements of quantitative trading platforms. Key words: Computer application; Quantitative Trading; Node.js35 0 引言技术进步带来了金融资产交易方式的革命,如今交易过程的每一个步骤,从订单输入到交易场所再到后台清算,都实现了高度自动化。交易技术创新显著减少了由交易中介导致的成本和摩擦,从而能够促进更加高效的风险分摊和风险对冲,提升市场的流动性和价格的有效性,并最终降低企业的资本成本。量化交易包括算法交易、策略交易,是目前国40 际金融市场主流的交易手段,已经在欧美等成熟市场得到了广泛
8、的应用。量化交易平台的建设目标是提供快速策略开发、调试、回测、运行、第三方系统接入以及多种管理功能。具体包括策略研发、策略运行、策略管理、行情资讯、多协议接入和第三方系统接口等功能。同时系统需要兼顾二次开发的功能,保证随着业务应用的不断发http:/- 2 -中国科技论文在线展,系统能够有效进行扩充。45 如何获得一个拥有高速精准的数据、高性能程式交易以及高度的开放性和前瞻性等特点的专业的交易平台,这正是本文尝试解决的问题。1 方法1.1 概述系统中主要存在四种元素:函数、指标、信号和策略,下面分别进行阐述。50 1.1.1 函数(Function)函数是量化交易平台的主要组成部分,是具有独立
9、计算能力的单元。TradeStation 中对于函数的定义是:The most important programming component in the concepts of reusable code and the dissemination of information。1.1.2 指标(Indicators)55 指标有以下几个特征:(1) 是一些函数的实例化。例如,RSI 是一个函数,也是一个指标,而这个指标已经固化了基本的参数,例如,5 天和 10 天。(2) 是数学公式的图像展现,这是 TradeStation 给出的标准定义。在 TradeStation中将指标定义为:A
10、 graphic representation of a mathematical calculation。60 1.1.3 信号(Singals-Studies)在 TradeStation 中的 Studies 通常有两种表现: Paint Bar(将整个 Bar 表集成颜色);Show me(在 Bar 上方或者在下方显示出来,显示的内容是达到某些标准的数据)。Studies 类似于本系统中定义的信号。信号是在多个指标的基础上合成的一个信号,只要达到一定的标准就展示出来。在 TradeStation 中的定义为:Graphic demarcation of a 65 mathmatica
11、llybased criterion。1.1.4 策略(Strategy)策略是整个量化交易的核心,具体来说就是达到买入和卖出的标准达到后,就进行买入卖出,从而得到利润。在 TradeStation 中是可以直接通过三种 Order 来进行买卖的,Market(市价)、Limit(限价)和 Stop(止损)。在中国股市上,只能做到前两种。交易70 软件下单的方式也是非常重要的,其定义为:This is the vehicle that we use to create a mechanical trading plan。大意为我们不能下单,只能进行性能评估。1.2 量化交易平台目标要完成可视化
12、定义策略的目标,需要实现以下功能:可视化定义信号、可视化定义策略。而信号和策略的基础有两个:75 (1) 指标:在指标之上定义信号。(2) 推理:逻辑规则+四则运算进行推理。经过分析可以得到该量化交易平台的以下优缺点:(1) 具有可视化的定义良好的 UI:股民可以定义策略,并对策略进行历史回测,从而达到散户可用的目标。80 (2) 策略推理部分:对比 TradeStation 可以看出,策略推理基本上可以满足交易http:/- 3 -中国科技论文在线计划的需求。(3) 指标计算方面弱化:指标不能进行随意的计算,不像 TradeStation 中那么灵活,从而限制了对于策略的优化过程。也就是策略
13、优化只能在策略的逻辑上和指标参数之上进行优化,而不能随意定义指标和函数。85 1.3 系统架构设计1.3.1 技术架构设计系统整体架构如图 1 所示。其中最上层的 UI 展现层为前端展示页面,主要负责展示股票和信号的相关信息,具体有 K 线图、饼图等表现形式;第二层的业务处理层主要负责实现业务逻辑、与数据服务层进行交互、为 UI 展示层提供信息等功能;底层的数据服务层、90 数据处理层是量化交易的核心,利用 Spark 等大数据技术通过大量计算为量化交易提供理论和数据支持。本文主要对业务处理层进行研究和实现。图 1 系统架构图 Fig. 1 System architecture95 1.3.
14、2 数据库设计系统采用 MySQL 数据库存储数据,分别存储在三台机器上,机器信息如表 1 所示。其中 sst-db-1 与 sst-db-2 为双向 MySQL 热备 1+Heartbeat 热备。表 1 数据库存储Tab. 1 Database structure序号 IP 说明1 192.168.30.80 虚拟 IP2 192.168.30.181sst-db-1 master(slave)DB3 192.168.30.182sst-db-2 slave(master)DB100 访问数据库时,直接访问虚拟 IP,Heartbeat 可以保证 181 不能提供服务时 182 可以接替
15、181 进行服务。当数据库有写入、更新操作时,181 和 182 双向热备,可以保证数据一致。http:/- 4 -中国科技论文在线1.3.3 负载均衡设计负载均衡的设计如图 2 所示,每个服务有两台服务器对外提供一致的服务,例如图中105 的 gate-1 和 gate-2,这两台服务器将请求分发到由数台 appserver 服务器构成的集群,完成所有该类服务。因此,每一类型服务下的 gate 服务器是负载均衡服务器均衡的对象。gate服务器使用 Node.js+express2的框架对外提供服务。负载均衡服务器负责将同一类型服务下的请求均衡的分配到该服务下的两台 gate 服务器。负载均衡
16、用 Nginx3反向代理实现。110图 2 负载均衡架构图Fig. 2 Load balance architecture1.4 系统功能设计平台的核心需求是实现可视化定制信号、可视化定制策略,在此基础上增加买卖功能,115 从而形成一个全民可用的量化交易平台。该平台主要包含以下几个模块:用户模块、实时数据模块、信号模块和订单模块。用户模块的功能主要包含登录、注册、找回密码、完善个人信息等基本操作。其中登录功能支持使用微博、微信、QQ 进行第三方登录,注册功能支持使用手机号和邮箱进行注册。120 实时数据模块主要负责产品行情信息的展示,用户可以选择特定的产品或者指标,也可以设置特定的展示形式。
17、http:/- 5 -中国科技论文在线信号模块的主要功能有创建 K 线信号模型、分类展示 K 线信号列表、统计信号创建信息、订阅信号、回测信号等。K 线信号是从现有产品的行情图上截取样本得到的,称之为信号样本。用户可以采取几个信号样本组成一个 K 线模型信号,K 线模型信号发布后即可125 在信号列表中展示。用户可以在选取时间区间、产品后用该信号对归票进行追踪或者回测,追踪或者回测后展示报告信息。订单模块的主要功能为购买信号或者策略,用户可以选择收费的产品加入购物车,结算后生成订单,订单成功支付之后即可使用相应产品进行量化交易。2 结果130 使用 Node.js 平台、Express 框架搭
18、建了量化交易平台的 Web 应用,使用 AJAX 实现前后端分离,后端接口遵循 RESTful4风格。2.1 鉴权的实现2.1.1 基于 Token 的 RESTful 鉴权传统的鉴权方式是用户向向服务器发送登录请求,登录成功后服务器根据用户信息创135 建 Session 对象,并将 SessionId 写入返回信息,用户接收到 SessionId 之后将其写入Cookie。当用户再次发起请求时,服务器根据用户发送的 Cookie 判断用户是否有效登录。这种方式无法适应当前多种客户端的现状,例如手机或者平板设备并没有 Cookie 机制,因此无法满足本文跨平台的要求 5。量化交易平台采用 T
19、oken 机制实现鉴权,核心原理是:用户向服务器发送登录请求,140 服务器将请求转发到鉴权服务器,鉴权服务器判断登录成功后为用户生成 Token,用户登录期间发送的请求都附上 Token 来表明自己的身份。服务器接收到请求后,询问鉴权服务器 Token 有效性并缓存到本地。用户点击注销登录、在其他设备登录以及长时间不操作都会导致 Token 过期, Token 过期时鉴权服务器会通过 RabbitMQ 向所有服务器广播用户注销的信息,以便服务器清空缓存 6。145 2.1.2 核心代码以下为用户成功登录时为用户生成 Token 并更新用户登录信息的实现。其中 Token 根据用户 Id 和时
20、间戳生成。var tokenMap = map();function loginSuccess(user, ip, now, isAutoLogin, notActivated, callback)150 sstLog.info(“login success: “+user.userNumber);var token = createToken(user.userNumber, isAutoLogin, now); /create a new token for the userfunction createToken(userNumber, isAutoLogin, now)155 var
21、expire = isAutoLogin ? now + config.tokenExpireTime : null;var token = uuid.v4();tokenMap.set(token, lastVisit:now, expire:expire, userId:userNumber);return token;160 以下为用户发送带有 Token 的请求时,鉴权服务器进行认证的实现,以及定期更新 Token信息、发送 Token 失效广播的实现。http:/- 6 -中国科技论文在线/logoutfunction logout(token)if(tokenMap.peek(to
22、ken) /token is alive165 tokenMap.del(token);sendLogoutMSG(token); /send logout messagereturn true;return false;170 /send logout messagefunction sendLogoutMSG(token)sstLog.info(“logout;“,token);sstamqp.publish(sstamqp.exchanges.LOGOUT_EXCHANGE,sstamqp.routingKey.logout,tok175 en);function authenticat
23、eToken(token)return tokenMap.get(token);180 function updateTokens(tokens)for(var i=0;itokens.length;i+)var value = tokenMap.get(tokensi.token);if(value) /token is in token map, update its timevalue.time = tokensi.time;185 tokenMap.set(tokensi.token,value);2.2 实时数据模块的实现190 行情图使用 ChartIQ 实现实现效果如图 3、4
24、所示。用户可以选择产品查看行情,还可以在右侧的筛选框中选择函数、表现形式等。http:/- 7 -中国科技论文在线图 3 行情图产品筛选框Fig. 3 Product selector of stock charts195图 4 行情图展示筛选框Fig. 4 Selector of stock charts2.3 信号模块的实现200 图 5 为 K 线信号模型定义实现效果,图 6 为信号列表实现效果。图 5 K 线信号模型定义图Fig. 5 Definition of K-line patternhttp:/- 8 -中国科技论文在线205 图 6 信号列表图Fig. 5 Lists of
25、singal2.4 与微量网策略对比2.4.1 易用性微量网策略的主要功能是用户购买策略进行策略交易,不提供查看行情和盯盘功能。210 米狗量化在提供买卖策略的同时提供了查看行情和盯盘功能,更大的满足了用户的需求。2.4.2 策略定制微量网策略的用户只能对策略进行查看和购买,并不能创建自己的策略。米狗量化的普通用户不仅可以在行情页面选取 K 线图来创建自己的策略,还可以对选中的策略进行回测,再决定是不是要购买。这一点米狗量化比微量网策略更人性化,用户可以利用回测功215 能检验策略的有效性和收益,从而获得最大的效益。3 结论传统的大智慧、同花顺等量化交易平台需要用户自己编写函数和程序进行策略交
26、易,在国内孤品普遍编程能力不高的情况下,这种操作方式大大提高了量化交易的准入门槛。米狗量化提供了更为简单的策略交易方式,使得普遍编程能力不足的国内股民可以更简单220 高效的进行策略交易。本文给出了量化交易平台的一种实现方式,通过 Node.js 平台,引入 ChartIQ 等表现形式,设计与实现了一个百姓能够使用的金融量化分析交易平台基础架构,从而达到了给股票交易者带来无限价值的目标。相比于传统股票交易平台,本平台的前端展现方式更直接、美观,易于操作。而且用 Node.js 架构实现平台,使得平台具有快速、小巧,易于拓展的225 特性,这在要求高速的股票交易中是一大优势。参考文献 (Refe
27、rences)1 Baron Schwartz, Peter Zaitsev, Vadim Tkachenko. 高性能 MySQL(第 3 版)M. 宁海元. 北京:电子工业出版社,2013.2 弗拉纳根. JavaScript 权威指南 (第 5 版)M. 李强. 北京:机械工业出版社,2007.230 3 陶辉. 深入理解 Nginx:模块开发与架构解析(第 2 版)M. 北京:机械工业出版社,2016.4 Leonard Richardson, Mike Amundsen. RESTful Web APIs 中文版M. 赵震一, 李哲. 北京:电子工业出版社,2014.http:/- 9 -中国科技论文在线5 柳丽娜. 浅淡 Session 机制与 Cookie 机制J. 电脑编程技巧与维护, 2008,15:28-29.6 Hseyin Babal. Token-Based Authentication With AngularJS & NodeJSOL. 2014-12-11. 235 http:/