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失效导致自动停止时,系统无法撤销您当前委托中的订单)
WeQuant教程—1.5 实盘运行须知的更多相关文章
- Android Studio系列教程二--基本设置与运行
Android Studio系列教程二--基本设置与运行 2014 年 11 月 28 日 DevTools 本文为个人原创,欢迎转载,但请务必在明显位置注明出处! 上面一篇博客,介绍了Studio的 ...
- iOS 11开发教程(三)运行第一个iOS 11程序
iOS 11开发教程(三)运行第一个iOS 11程序 运行iOS11程序 创建好项目之后,就可以运行这个项目中的程序了.单击运行按钮,如果程序没有任何问题的话,会看到如图1.6和1.7的运行效果. 图 ...
- gradle-rn-app工程运行须知
singwhatiwanna edited this page 16 days ago · 5 revisions Pages 7 Home Demo 工程运行须知 VirtualAPK API 概 ...
- WeQuant教程—1.4 实践教学:比特币量化定投
在wequant.io,为了让读者能直接体验量化系统的魅力,我们用前面的思路,实现了一套完整的量化系统和回测工具,这个系统非常简单,用户只需要把交易意志用策略表达出来,系统就可以自己完成交易效果的回 ...
- WeQuant教程—1.3 利用回测工具降低交易风险
量化系统投入实际使用之前,人们会希望提前测试交易的效果.这个期间往往涉及代码的改动和参数的调整.最常见的做法是将历史数据输入量化系统,让量化系统根据既定的交易逻辑进行操作,观察和分析交易结果,找到问题 ...
- 1、CC2541蓝牙4.0芯片中级教程——基于OSAL操作系统的运行流程了解+定时器和串口例程了解
本文根据一周CC2541笔记汇总得来—— 适合概览和知识快速索引—— 全部链接: 中级教程-OSAL操作系统\OSAL操作系统-实验01 OSAL初探 [插入]SourceInsight-工程建立方法 ...
- 《自拍教程52》Python_adb运行Shell脚本
Android作为一款Linux终端,肯定是支持.sh后缀的Shell脚本的运行的, 有时候测试环境准备或者长时间截取复杂的日志等,开发会给到一些Shell脚本. Shell脚本的执行的优势: 快捷高 ...
- 2021升级版微服务教程5—通过IDEA运行多个项目实例「模拟集群」
2021升级版SpringCloud教程从入门到实战精通「H版&alibaba&链路追踪&日志&事务&锁」 教程全目录「含视频」:https://gitee.c ...
- Java教程——CMD手动编译运行失败原因(高手略过)
(仅对新手,高手略过)在学习Java初期,我们在利用cmd手动编译java程序的时候,会遇到编译成功,但运行却总是提示失败.已经排除了java配置环境的问题,Path和ClassPath以及%JAVA ...
随机推荐
- centos7离线部署Patroni
实验环境Centos7.7.1908 x86_64 这里说明下为什么需要安装gcc readline-devel zlib-devel这三个包,因为编译安装postgres需要用到 一.首先安装gcc ...
- wordpress去掉自定义菜单的外层div
wordpress调用自定义菜单时自动会在外层加一个<div class="menu-nav-container">,如下图所示,nav是后台定义的菜单名称,如果想把这 ...
- Windows10 Docker镜像加速
https://dockerhub.azk8s.cn #Azure 中国镜像 https://reg-mirror.qiniu.com #七牛云加速器 https://registry.docker- ...
- 第6章 初识MyBatis
6.1 什么是MyBatis Mybatis(前身是iBatis)是一个支持普通SQL查询.存储过程以及高级映射的持久层框架.MyBatis框架也被称为ORM(Object/Relational Ma ...
- 使用google autoservice 自动生成java spi 描述文件
spi 是一种服务发现的标准,对于开发中我们通常需要编写 META-INF/services 文件夹中定义的类. google auto 中的autoservice 可以帮助我们生成对应的配置,很方便 ...
- netflix flamescope 方便的不同时间范围的火焰图查看工具
flamescope 是netflix 开源的方便的火焰图查看工具,我们可以选择不同时间范围的数据,方便分析调用链 环境准备 使用docker-compose运行,基于官方的dockerfile 创建 ...
- 链表 | 判断链表B是否为链表A的连续子序列
王道P38T16 代码: bool common_subSequence(LinkList &A,LinkList &B){ LNode *pA,*pB=B->next,*p=A ...
- CTSC 2017 游戏[概率dp 线段树]
小 R 和室友小 B 在寝室里玩游戏.他们一共玩了 $n$ 局游戏,每局游戏的结果要么是小 R 获胜,要么是小 B 获胜. 第 $1$ 局游戏小 R 获胜的概率是 $p_1$,小 B 获胜的概率是 $ ...
- WAMP完整配置教程(启用php extensions、修改端口、允许外网访问、wamp绑定域名)。
作为一名php爱好者,很希望自己的写的代码能够快速的在浏览器页面展现出来,wamp是一款集成很完善.很方便的软件,我刚开始研究的时候,会因为对于wamp的不熟悉,导致修改一点点配置就会在百度查好久,这 ...
- [Beta阶段]第五次Scrum Meeting
Scrum Meeting博客目录 [Beta阶段]第五次Scrum Meeting 基本信息 名称 时间 地点 时长 第五次Scrum Meeting 19/05/10 新主楼F座2楼 50min ...