量化交易-彻悟科技

量化交易-彻悟科技


20201218-量化交易平台3.0详细设计文档

<h1><center>量化交易平台3.0详细设计文档_v1.0</center></h1> <h2>修订记录</h2> <table> <thead> <tr> <th style="text-align: center;">版本号</th> <th style="text-align: center;">修订人</th> <th style="text-align: left;"><div style="width: 85px;">修订日期</div></th> <th style="text-align: left;"><div style="width: 380px;">修订内容</div></th> </tr> </thead> <tbody> <tr> <td style="text-align: center;">V1.0</td> <td style="text-align: center;">Challenger</td> <td style="text-align: left;">2020-12-18</td> <td style="text-align: left;">init</td> </tr> <tr> <td style="text-align: center;">V1.0</td> <td style="text-align: center;">Challenger</td> <td style="text-align: left;">2020-12-24</td> <td style="text-align: left;">1. 完善二方接口<br/>2. 拆分交易引擎接口为交易驱动器和交易订单管理<br/>3. 添加数据库表及字段详细说明</td> </tr> <tr> <td style="text-align: center;">V1.0</td> <td style="text-align: center;">Challenger</td> <td style="text-align: left;">2020-12-25</td> <td style="text-align: left;">1. 完善数据库设计<br/>2. 添加关键类类图设计</td> </tr> <tr> <td style="text-align: center;">V1.0</td> <td style="text-align: center;">Challenger</td> <td style="text-align: left;">2021-01-04</td> <td style="text-align: left;">1. 模型预测结果保存逻辑移至交易引擎<br/>2. 消息驱动器增加过滤参数逻辑<br/>3. 完善交易消息说明文档</td> </tr> <tr> <td style="text-align: center;">V1.0</td> <td style="text-align: center;">Challenger</td> <td style="text-align: left;">2021-01-06</td> <td style="text-align: left;">1. 更新交易引擎数据库ER设计图<br/>2. 交互消息添加全局字段:IP地址、毫秒时间戳、事务ID<br/></td> </tr> <tr> <td style="text-align: center;">V1.0</td> <td style="text-align: center;">Challenger</td> <td style="text-align: left;">2021-01-14</td> <td style="text-align: left;">1. 更新交易引擎数据库ER设计图<br/>2. 修改消息驱动器关键类图设计<br/>3. 添加消息交互接口(风控审核结果、修改产品参数、启停定时器)<br/></td> </tr> </tbody> </table> <p>[TOC]</p> <h2><span style='color:red'><strong>待定问题</strong></span></h2> <ol> <li><span style='color:red'>V3上线过渡方式设计;</span></li> <li><span style='color:red'>交易业务参数与策略参数分界划分,规则引擎提供修改参数消息策略包;</span></li> <li>规则引擎操作、交易引擎-配置管理界面交互设计? <img src="https://www.showdoc.com.cn/server/api/attachment/visitfile/sign/bf427aa4f91fde83d090c0428c79a20b" alt="" /></li> <li>“操作”的多参数,多参数与操作绑定,还是支持不定长参数的通用“操作”?<span style='color:red'>【按不定长动态参数的逻辑设计。】</span></li> <li>事件处理线程中获取策略计算所需指标,因为指标值来源有:指标平台、行情服务、业务数据等源,<span style='color:red'>【采用《方案三》执行场景前多线程获取所有二三方数据指标的方式,场景和接口绑定】</span> 方案一、可用将指标分类,按类别请求接口; 方案二、按单一指标定义,即外部指标定义时即指定获取接口; 方案三、用指标族,每一批指标一个接口,凡有此指标族的指标出现,一律先行获取</li> <li>模型标识需要确认格式,inday_amd_1.0</li> </ol> <h2>1.引言</h2> <h3>1.1 编写目的</h3> <p>  为了解决规则引擎自上而下适应业务模型,从合作方、应用、产品、场景、策略、规则、操作配置方式采用自上而下的配置方式。交易引擎目前有日间劳鱼、日内捞鱼、固定网络、人工操作等使用场景。   目前的规则引擎和交易操作合并一起做量化交易业务,系统边界不清晰,架构耦合较深,需要对规则引擎进行V3版本重构设计。交易操作由规则引擎配置实现一部分,另一部分交易引擎通过HardCode实现。还存在为了赶工期的临时实现,导致系统操作及历史问题排查困难,并且新需求开发效率低下、扩展及维护成本高。考虑到开发效率、系统解耦、系统维护、需求横向扩展、系统可持续支撑业务,将规则引擎与交易引擎进行系统边界划分,由交易引擎主导整个业务体系的运转,规则引擎做为决策工具提供支持。   交易引擎使用客户产品为业务主属性,通过交易配置管理配置实现量化交易业务与规则引擎场景关联,由交易引擎-交易驱动器产生事件。这样系统边界清晰,系统之间耦合减少,各系统通过同步接口及异步消息队列实现信息交互。以需要反馈结果的采用同步接口、不需要返回结果的采用异步接口为原则。引擎负责交易模型(日间模型、日内模型、选股模型等)配置及执行,交易引擎负责平台配置管理、交易事件生成及交易操作实现。   本版本设计尽可能不对交易引擎-交易及订单管理子模块进行修改,初始版本以兼容交易及订单管理模块为主。   本文档给出详细设计说明,包括最终实现的功能需求、技术架构方案、业务时序图、数据库模型设计、相关页面设计。   产品研发过程以本文档为基础,技术代码依照本文档方案执行。如过程中涉及需求、架构、方案设计调整都需要更新到本文档中。</p> <h3>1.2 范围</h3> <p><strong>范围说明:</strong></p> <ol> <li>规则引擎改造;</li> <li>交易引擎-交易驱动器;</li> <li>交易引擎-交易配置管理;</li> <li>交易引擎-交易及订单管理;</li> </ol> <h3>1.3 术语</h3> <table> <thead> <tr> <th style="text-align: center;">术语</th> <th style="text-align: center;">术语定义</th> </tr> </thead> <tbody> <tr> <td style="text-align: center;">二方</td> <td style="text-align: center;">本系统模块之外的所属本企业的内部系统模块,如:规则引擎、指标平台...</td> </tr> <tr> <td style="text-align: center;">三方</td> <td style="text-align: center;">除本企业内部所有系统之外的外部服务商,如:IB、FMP、英为财情...</td> </tr> <tr> <td style="text-align: center;">量化交易平台</td> <td style="text-align: center;">澈悟量化交易平台</td> </tr> <tr> <td style="text-align: center;">规则引擎</td> <td style="text-align: center;">提供业务策略配置及决策的工具平台  </td> </tr> <tr> <td style="text-align: center;">交易引擎</td> <td style="text-align: center;">量化交易业务的交易主模块,包括(交易配置管理、交易驱动器、交易及订单管理)  </td> </tr> </tbody> </table> <h3>1.4 参考资料</h3> <p>《重构:改善既有代码的设计》</p> <h2>2.整体设计</h2> <h3>2.1 整体架构图</h3> <h4>业务逻辑架构图</h4> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitfile/sign/11eb98533fb0213ae5ed00775ec01753" alt="" /></p> <h4>领域模型设计图</h4> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitfile/sign/8c534781737c0dc72482ff57e80c11d7" alt="" /></p> <h4>运维部署架构图</h4> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitfile/sign/64fe35dda953b5e7158e9652f0d25d1d" alt="" /></p> <h4>技术架构图</h4> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitfile/sign/2f5a29828555d17aeb5344bb3e98ca39?showdoc=.jpg" alt="" /></p> <h3>2.2 关键子功能模块</h3> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitfile/sign/f571d1ff92037984877efe582b472f7d" alt="" /></p> <h3>2.3 关键业务时序图</h3> <p>TODO</p> <h2>3. 接口设计</h2> <h3>3.1 三方接口</h3> <p>暂无</p> <h3>3.2 二方接口</h3> <h4>3.2.1 规则引擎接口</h4> <ol> <li>通用外部事件接收接口;示例:执行模型场景结果、获取捞鱼策略业务操作结果; <a href="https://www.showdoc.com.cn/p/281810caf8a57b204c4aba85063f377f">https://www.showdoc.com.cn/p/281810caf8a57b204c4aba85063f377f</a></li> </ol> <h4>3.2.2 交易引擎-交易及订单管理接口</h4> <ol> <li>交易下单消息说明: <a href="https://www.showdoc.com.cn/p/3b9306625091dfc6a2e35793f88642e0">https://www.showdoc.com.cn/p/3b9306625091dfc6a2e35793f88642e0</a></li> <li>交易指标查询接口: <a href="https://www.showdoc.com.cn/p/810a269812de2b5ea7f655075b450e6f">https://www.showdoc.com.cn/p/810a269812de2b5ea7f655075b450e6f</a></li> </ol> <h4>3.2.3 交易引擎-交易驱动器接口</h4> <ol> <li>数据清洗完成通知消息说明: <a href="https://www.showdoc.com.cn/p/cdc3f749ccc65e2dca391c328079abc0">https://www.showdoc.com.cn/p/cdc3f749ccc65e2dca391c328079abc0</a></li> <li>模型预测结果消息说明: <a href="https://www.showdoc.com.cn/p/6aa12de62fb84ea5992aed18666974da">https://www.showdoc.com.cn/p/6aa12de62fb84ea5992aed18666974da</a></li> <li>交易风控结果消息说明: <a href="https://www.showdoc.com.cn/p/add8308c34ba497a8240460e5dae4d18">https://www.showdoc.com.cn/p/add8308c34ba497a8240460e5dae4d18</a></li> <li>交易下单消息说明: <a href="https://www.showdoc.com.cn/p/b80e129938f117ba40e802afb2871e91">https://www.showdoc.com.cn/p/b80e129938f117ba40e802afb2871e91</a></li> <li>交易订单成交回报消息说明: <a href="https://www.showdoc.com.cn/p/3f453cfd487848bda24f025971145bbe">https://www.showdoc.com.cn/p/3f453cfd487848bda24f025971145bbe</a></li> <li>交易下单结果消息说明: <a href="https://www.showdoc.com.cn/p/76895b846dc9e2d04943dee759eefaf8">https://www.showdoc.com.cn/p/76895b846dc9e2d04943dee759eefaf8</a></li> <li>修改产品参数消息说明: <a href="https://www.showdoc.com.cn/p/d9bf16c7e7890b19df13d92853588e2f">https://www.showdoc.com.cn/p/d9bf16c7e7890b19df13d92853588e2f</a></li> <li>定时器启停操作消息说明: <a href="https://www.showdoc.com.cn/p/ab3725ffb17f095a88073c5bb69ca506">https://www.showdoc.com.cn/p/ab3725ffb17f095a88073c5bb69ca506</a></li> </ol> <h2>4. 子模块设计</h2> <h3>4.1 规则引擎模块</h3> <h4>4.1.1 模块需求说明</h4> <h5>需求列表:</h5> <ol> <li>通用外部事件接收接口;</li> <li>事件参数支持动态扩展;</li> <li>每策略一个事件处理线程执行;</li> <li>事件处理线程采用先取指标再计算的方法;</li> <li>根据策略类型决定是否并行执行策略内规则;</li> <li>规则执行结束输出“操作”(发送模型结果消息操作消息、发送交易下单操作消息)多参数;</li> <li>四则运算规则、函数规则添加保留小数位数功能,取整小数位数为0;</li> <li>日志标准化,时间到毫秒以内;</li> </ol> <h4>4.1.2 业务架构设计图</h4> <h5>业务逻辑架构图:</h5> <p><strong>暂无</strong></p> <h5>领域模型设计图:</h5> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitfile/sign/6fc3db55d2f5c80fe91be444aea8884a" alt="" /></p> <h5>规则引擎配置树</h5> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitfile/sign/c2da30233e6cc77a3116a0a12cad4403" alt="" /></p> <h4>4.1.3 关键业务时序图</h4> <p><strong>暂无</strong></p> <h4>4.1.4 程序设计</h4> <p>TODO</p> <h4>4.1.5 数据库结构设计</h4> <h5>数据库结果及ER关系图</h5> <p><strong>暂无</strong></p> <h4>4.1.6 页面交互及UI设计</h4> <h5>交易下单操作函数页面</h5> <h5>规则结果保存操作函数页面</h5> <h5>规则结果消息发布操作函数页面</h5> <hr /> <h3>4.2 交易引擎模块</h3> <h4>4.2.1 模块需求说明</h4> <h5>需求列表:</h5> <ol> <li>交易驱动器支持动态配置关联及参数;</li> <li>交易管理后台支持交易引擎与规则引擎关联配置、交易引擎与规则引擎参数动态配置;</li> <li>交易订单管理适配新队列逻辑;</li> </ol> <h4>4.2.2 业务逻辑架构图</h4> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitfile/sign/9d50b0dd7c6d39ac7ab686036eda1d18" alt="" /></p> <h4>4.2.3 关键业务时序图</h4> <h5>日内捞鱼</h5> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitfile/sign/f236e25b13702839306ed60d18cd499b" alt="" /></p> <h5>固定网格</h5> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitfile/sign/be10387a46c22e3cffd94f8251116b9f" alt="" /></p> <h4>4.2.4 程序设计</h4> <h5>消息处理流程</h5> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitfile/sign/f2763024ccb6a668daa35dc612833f32" alt="" /></p> <h5>定时器处理流程</h5> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitfile/sign/e77a4de9580925fd240a0f7a65d84346" alt="" /></p> <h5>关键类类图</h5> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitfile/sign/9d4aae6304938483f7d0ba2cd2c26571" alt="" /></p> <h4>4.2.5 数据库结构设计</h4> <h5>数据库结果及ER关系图</h5> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitfile/sign/ad39c10ffba139c4adfe523caf68b35c" alt="" /></p> <h4>4.2.6 页面交互及UI设计</h4> <h5>交易策略参数配置页面</h5> <h5>交易场景关联配置页面</h5> <hr /> <h2>5. 上线计划及过渡方式-TODO</h2> <h3></h3> <hr /> <h2>6. 性能</h2> <h3>性能指标需求</h3> <h4>延迟、qps、tps</h4> <hr /> <h2>7. 安全</h2> <h3>接口安全</h3> <ol> <li>交易接口添加接口验签;</li> </ol> <h3>操作安全</h3> <ol> <li> <h2>接口交易</h2> <h2>8. 可维护性</h2> <h3>交易策略参数调整</h3> <h3>线上问题排查</h3> </li> </ol> <hr /> <h2>9. 可靠性</h2> <h3>规则引擎 999</h3> <h3>交易引擎 999</h3>

页面列表

ITEM_HTML