在实盘交易程序启动前,系统会执行一次检查,出现如下异常时实盘不可启动:安全
运行中(或着正在执行启动前检查)的实盘,不能更改当前实盘的策略&API key配置,且当前配置的策略&API key被锁定,没法进行编辑或删除操做,直到实盘中止运行时解锁。函数
当实盘交易程序在运行过程当中遇到如下异常状况时,默认会报错并自动中止运行:设计
以上这种严格的异常中止机制可以在最大程度上保证明盘运行的准确性和安全性,但也在必定程度上丧失了连续性和容错能力。因此咱们额外提供了实盘运行异常时的自动重启和错误恢复功能,从而实现实盘程序持续长久托管运行,您能够在新建/设置实盘交易时自行选择是否开启(默认不开启)。如下是两个功能的介绍:日志
用户开启自动重启选项之后,若实盘运行过程当中因出现异常而自动中止,则系统会在实盘中止24小时内不断尝试重启,直到该实盘启动成功正常运行为止。重启做为一个新的实盘运行实例,与启动实盘策略逻辑相同(从下一个frequency周期开始运行,输出日志有重启提示,并推送启动通知),目前不保留中间状态。下次中止时若是自动重启选项开启,则从新计时,相同操做。用户点击中止则不会触发重启。(注:这个功能不能彻底保证明盘策略执行的连续性,若是用户实盘是在frequency周期的末尾临界时间结束并退出,跨frequency周期重启时,因为是等待下一个frequency周期到达,则会出现跳frequency周期的执行,所以,这个功能不是万能的。因此有了下边个功能设计。)基础
用户开启错误恢复选项之后,则实盘在运行过程当中出现异常并不会马上中止运行, 而是会保留现有的运行时上下文,等待下一个frequency周期到达后(若是行情推送没有按时到达,则记为一次恢复失败,继续等待下一个frequency周期),执行新的handle_data()函数(上一个handle_data函数已经执行完毕,或已经被Kill)。(这里须要注意潜在运行风险,若是用户依赖历史运行状态,例如经过user_data来计算趋势,则在跳过上一个frequency周期,直接运行下一个frequency周期的handle_data函数时候,可能会使趋势的判断不许确,形成策略异常。)错误恢复时,会对现有的订单记录、持仓记录进行合并,缺失的分析指标基础数据会进行插值,输出错误恢复日志,并附带错误恢复计数。每一次错误恢复,错误计数加1,连续5次错误恢复就错误恢复计数为5,第六次错误恢复不进行恢复,直接退出。若是错误恢复成功,则错误计数清零。配置
不管是您手动中止实盘,仍是实盘运行中出错自动中止,系统都会在中止时撤销您当前委托中的订单,以避免形成损失。(当您的实盘程序是因API key失效致使自动中止时,系统没法撤销您当前委托中的订单)语法