zoukankan      html  css  js  c++  java
  • WeQuant教程—1.5 实盘运行须知

    为了保证实盘交易程序能够正常稳定地运行,同时保护您在使用时账户资金的安全,我们设计了一些规则和机制。了解这些机制有助于您更快上手实盘交易。

    启动前检查机制

    在实盘交易程序启动前,系统会执行一次检查,出现以下异常时实盘不可启动:

    • 若当前实盘所对应的API key或策略已被删除,则当前实盘不能启动;
    • 同一个API key对应的实盘交易程序同时最多只能有一个在运行,若当前实盘所配置的API key已被其他运行中实盘占用,则该实盘不能启动;
    • 为保证账户资金安全,只有运行过回测的策略才能运行实盘,您可以参考回测结果来决定是否运行该策略的实盘。

    运行保护机制

    运行中(或着正在执行启动前检查)的实盘,不能更改当前实盘的策略&API key配置,且当前配置的策略&API key被锁定,无法进行编辑或删除操作,直到实盘停止运行时解锁。

    异常停止机制

    当实盘交易程序在运行过程中遇到以下异常情况时,默认会报错并自动停止运行:

    • 在启动实盘时,若检测到策略代码本身有语法、格式等方面的错误,系统会报错并启动失败;
    • 当实盘程序运行过程中遇到运行时错误,系统会报错并停止实盘;
    • 当实盘运行过程中检测到API key失效时,系统会报错并停止实盘;
    • 当实盘程序运行过程中获取到的行情推送延迟过高时,为了防止延迟导致错过合适的交易时间(延迟超过frequency周期时甚至会触发错误的交易信号)导致用户损失,系统会报错并自动停止实盘程序;
    • 为了简化运算场景、避免计算异常,实盘程序每次执行handle_data函数时都会检测账户资金情况,若含有有冻结资产、含有借贷、含有非策略指定交易品种持仓时,系统都会报错并自动停止实盘程序;
    • 实盘程序运行过程中,在每一次新的frequency周期到来之前都会先取消当前frequency周期内发起但未完成的订单委托,以免出现重复下单的情况,若发生订单取消超时的情况(基本不会遇到),系统会报错并停止实盘程序。

    以上这种严格的异常停止机制能够在最大程度上保证实盘运行的准确性和安全性,但也在一定程度上丧失了连续性和容错能力。所以我们额外提供了实盘运行异常时的自动重启和错误恢复功能,从而实现实盘程序持续长久托管运行,您可以在新建/设置实盘交易时自行选择是否开启(默认不开启)。以下是两个功能的介绍:

    自动重启功能

    用户开启自动重启选项以后,若实盘运行过程中因出现异常而自动停止,则系统会在实盘停止24小时内不断尝试重启,直到该实盘启动成功正常运行为止。重启作为一个新的实盘运行实例,与启动实盘策略逻辑相同(从下一个frequency周期开始运行,输出日志有重启提示,并推送启动通知),目前不保留中间状态。下次停止时如果自动重启选项开启,则重新计时,相同操作。用户点击停止则不会触发重启。(注:这个功能不能完全保证实盘策略执行的连续性,如果用户实盘是在frequency周期的末尾临界时间结束并退出,跨frequency周期重启时,由于是等待下一个frequency周期到达,则会出现跳frequency周期的执行,因此,这个功能不是万能的。所以有了下边个功能设计。)

    错误恢复功能

    用户开启错误恢复选项以后,则实盘在运行过程中出现异常并不会立刻停止运行, 而是会保留现有的运行时上下文,等待下一个frequency周期到达后(如果行情推送没有按时到达,则记为一次恢复失败,继续等待下一个frequency周期),执行新的handle_data()函数(上一个handle_data函数已经执行完毕,或已经被Kill)。(这里需要注意潜在运行风险,如果用户依赖历史运行状态,例如通过user_data来计算趋势,则在跳过上一个frequency周期,直接运行下一个frequency周期的handle_data函数时候,可能会使趋势的判断不准确,造成策略异常。)错误恢复时,会对现有的订单记录、持仓记录进行合并,缺失的分析指标基础数据会进行插值,输出错误恢复日志,并附带错误恢复计数。每一次错误恢复,错误计数加1,连续5次错误恢复就错误恢复计数为5,第六次错误恢复不进行恢复,直接退出。如果错误恢复成功,则错误计数清零。

    停止保护机制

    无论是您手动停止实盘,还是实盘运行中出错自动停止,系统都会在停止时撤销您当前委托中的订单,以免造成损失。(当您的实盘程序是因API key失效导致自动停止时,系统无法撤销您当前委托中的订单)

  • 相关阅读:
    C#使用SSDB管理增量日志并提供查询
    请假系统特例规则详细设计
    2014年国内最热门的.NET开源平台
    MQTT--入门
    转MQTT--Python进行发布、订阅测试
    Python修改文件权限
    Python Windows文件操作
    python random 学习
    Python---copy()、deepcopy()与赋值的区别
    使用Git Bash从Git上下载代码到本地以及上传代码到码云Git
  • 原文地址:https://www.cnblogs.com/bitquant/p/11560322.html
Copyright © 2011-2022 走看看