学习笔记_vnpy实战培训day04
基于VNPY编写策略
策略运行逻辑 讲解策略在vnpy中的运行逻辑,包括tick级别、分钟级别、混合等
- bar内运算:tick运算,高频,cta,r-break,也是ticket.止损也是bar内
- bar外运算:
- onorder:看做每笔
- ontrade:交易结束有,单一标的和onorder一样
- 套利双合约情况下,会有差异,onorder一条,ontrade两条
策略模板 讲解策略模板,如何扩展策略模板实现自己的想法。
模板=基类,包括:
- 参数
- 变量
- 外部容器调用函数
- 公用的函数
具体策略继承模板,在其基础上扩展自己的逻辑
模板-策略-实现(参数差异)
策略初始化 讲解策略的初始化要注意哪些,有那些手段
策略(实例)加载/启动
- 人工操作:vn.trader->算法->CTA策略->加载策略,启动策略
- 无人值守:
- mainEngine.ctaEngine.loadSetting() # 加载cta的配置
- mainEngine.ctaEngine.initStrategy(u‘S22_DEMO’) # 初始化策略实例,如果多个,则需要逐一初始化多个
初始化顺序:
- CtaTemplate.init()
- Strategy.init()
- Strategy.Init()
初始化的内容:
- 初始化各类参数
- 加载前置数据,推送到OnTick或者OnBar
- 加载上一状态的持久化数据(从本地JSON文件加载或 catEngine.loadPosition()
运行数据持久化 如何应对各种运行风险,数据如何持久化和重载
- 策略运行的风险
- 程序异常(代码报错/gateway异常/Python环境崩溃)
- 成交不一致
- 人为干预
- 数据持久化
- 保存至本地Json文件(策略实例名.json)
- 保存内容:持仓数量、开仓价格、止损价格等必要数据
- 保存至MongoDB。ctaEngine. savePosition()
- 其他数据
- Bar数据(传统的k线/自定义的Renko Bar/RangeBar等)
- 特殊的策略配置(policy,网格)
策略风控 如何针对单一策略,单一实例进行风控,如何与账号风控共同协作
- 单一策略:
- 仓位控制:
- 增加最大仓位数量
- 开仓前检查剩余可开仓数
- 动态根据配置参数/ATR/VAR等更新最大开仓数
- 止损
- 固定止损
- 跟随止损
- 资金风控
- 资金最大使用仓位
- 资金止损线
策略状态监控 讲解状态监控的原理,如何扩展自己的策略状态
- 状态包括
- 仓位:合约/今仓/昨仓
- 动态参数:最大仓位/ATR
- 连续亏损次数
- 添加状态
- VarList.append(变量名)
- 变量须是策略内部的变量名
- 更新变量的频率
- onBar
- onOrder
- onTimer
- Self.putEvent()
日内策略逻辑 针对日内策略,给出实现的逻辑建议
- 经典的日内策略
- R-Breaker
- Dual-Thrust
- 策略初始化
- 获取日线级别数据,计算各个阈值
- 重新初始化当日tick数据(任意时点初始化)
- 开盘时刻
- 波动较大,可自定义openWindow来进行特殊处理
- 收盘时刻
- 自定义closeWindow,撤销开仓单,强制平仓
隔日策略逻辑 针对隔日策略,给出实现的逻辑建议,如何避开假期?
- 一般是15分钟周期以上,持仓超过1天
- 期货合约换月风险
- 配置中,预先设置策略合约的开启、结束日期
- 到达日期后,进行合约更换,平近期合约,开远期合约
- 更新止损位、开仓价等
- 期货假期保证金/波动风险
- 预先配置假期、仓位降低比例
- 到达日期时,执行仓位降低
- 假期结束后,调整仓位比例
- 股票复权风险
- 可参考ricequant的策略模板:
- before_Trading()
- after_Trading()
- scheduler.run_daily()
回测策略
回测数据准备 本地、云端和外部供应商的数据选取,tick数据,分钟数据
- Tick数据回测
- 保证是日期和时间连续
- 单一合约,主力合约?
- 文件tick:先循环日期,寻找对应合约文件后加载;先日盘,再到夜盘
- 数据库:分批提取,分批灌送
- 标准套利合约tick:先生成套利tick,再推送
- 分钟以上级别数据回测
- 通过供应商接口获取并导出csv
- 回测程序导入csv,分批灌送
- 注意分钟数据的datatime:是bar开始时间/结束时间?
回测原理 讲解回测原理
- 撮合方式
- 下一根Bar/下一个Tick
- crossLimitOrder() 撮合限价单
- crossStopOrder() 撮合停止单
- onBar()/onTick() 推送到策略
回测陷阱 如何理解回测中的陷阱
- 采用主力合约回测时,跨月产生的利润/亏损,是不真实的。
- 若资金规模大,要考虑下单时的成交量是否满足。
回测优化 介绍若干中回测优化的手段与实例
- 策略中,使用资金比例来实时计算仓位,
- 回测引擎需支持实时计算realtimeCalculate()
- getAccountInfo()
- 策略中,需要区别回测和实盘的微妙处理
- 使用self.backtesting:今仓昨仓
- 交易分析
- 导出交易记录exportTradeResult()
- K线回放交易记录
学习笔记_vnpy实战培训day04相关推荐
- 学习笔记_vnpy实战培训day04_作业
使用第一堂课的作业,存入MongoDB的数据,对demo策略进行回测. load数据到mongo并查看 直接使用现成数据吧 VN.PY附带了两份数据,一个是IF指数1分钟数据,一个是螺纹钢指数1分钟数 ...
- 学习笔记_vnpy实战培训day03
这一节纯干货,讲解了vnpy的项目结构(代码结构),核心功能引擎 建议先看视频,在阅读代码,然后在回来看视频,这样理解的更为透出,否则仅仅看视频很难有深入的理解. vnpy特点及和其他系统区别 vnp ...
- 学习笔记_vnpy实战培训day02
这节课主要讲了numpy,pandas,tushare,talib,matlabplot用法,如果有基础的化不用听了 能看懂如下样例代码就行了 numpy ####numpy数据结构#### v = ...
- 学习笔记_vnpy实战培训day01
正期望值系统 期望=仓位*盈利概率*盈利点数-仓位*亏损慨率*止损点数-交易手续费 高频交易: 仓位低,盈利概率高,盈利点数小,交易手续费高 CTA交易: 动态仓位,盈利概率低,盈利点数高 亏损概率高 ...
- Hadoop学习笔记(8) ——实战 做个倒排索引
Hadoop学习笔记(8) --实战 做个倒排索引 倒排索引是文档检索系统中最常用数据结构.根据单词反过来查在文档中出现的频率,而不是根据文档来,所以称倒排索引(Inverted Index).结构如 ...
- Redis学习笔记(实战篇)(自用)
Redis学习笔记(实战篇)(自用) 本文根据黑马程序员的课程资料与百度搜索的资料共同整理所得,仅用于学习使用,如有侵权,请联系删除 文章目录 Redis学习笔记(实战篇)(自用) 1.基于Sessi ...
- 《文哥的学习笔记——推荐系统实战》笔记
发现了大神的学习笔记文哥的学习笔记.简单记录下知识点. 第一篇 1.评测指标:满意度,准确度,覆盖率,多样性,新颖性,惊喜度,信任度,实时性,健壮性,商业目标. 第二篇: 1.基于邻域的方法包括基于用 ...
- 【TensorFlow-windows】学习笔记三——实战准备
前言 因为学习TensorFlow的内容较多,如果只看API会很无聊,可以结合实例去学习.但是在构建基本的模型之前,需要学一些准备知识:数据读取.预处理.优化器.损失函数 国际惯例,参考网址: Ten ...
- Word学习笔记-项目实战
学习资源来自: 1.公众号:Wordlm123,[办公必备]-[Word高手秘籍] 2.网易云课堂:Word2016五步搞定标准化试卷 https://study.163.com/course/cou ...
最新文章
- 微软BI 之SSAS 系列 - 在 SQL Server 2012 下查看 SSAS 分析服务的模型以及几个模型的简单介绍...
- python 验证码识别示例(二) 复杂验证码识别
- 世界很大,先从这几个公众号看起!
- seata-golang 接入指南
- QT绘制散点图(2)
- 绕过 WAF:绕过一些 WAF 设备的 Burp 插件
- python 处理python编码的基本过程
- 怎么点亮段码屏_iPad屏幕坏点亮点怎么看 自查iPad屏幕坏点亮点方法【详解】
- SpringMVC集成Thymeleaf
- IOS开发之日期时间格式化字符说明
- 微软2月修复99个漏洞,含1个 0day
- 矩阵分解之奇异值分解
- 线性混合效应模型Linear Mixed-Effects Models的部分折叠Gibbs采样
- SSD原理解读-从入门到精通
- Linux常见系统故障排除
- vmstate内存事件详解
- 锦鲤信小呆翻车!一手好牌打得稀烂背后:靠运气赚来的,终究会凭实力亏掉...
- Unity学习笔记:个人学习项目《疯狂天才埃德加》纠错文档
- ppi协议源码 c语言,西门子PPI通讯协议
- 汽车名词解释-底盘与悬挂参数
热门文章
- ubuntu挂载共享文件
- Linux磁盘、内存、CPU、进程
- Qt4_创建菜单和工具栏
- 索引sql server_SQL Server报告– SQL Server索引利用率
- 对警报线程池的警报线程_检测和警报SQL Server代理丢失的作业
- sql azure 语法_Azure Kubernetes服务(AKS)–管理SQL Server数据库文件
- 在Azure Data StudioSQL笔记本中使用Python脚本加密密码
- mysql屏蔽_MySQL中的企业数据屏蔽
- 使用Java对sftp带有中文路径的文件夹进行下载,乱码打不开文件夹
- 有可能导致HttpQueryInfo 执行时出现12150 错误的一个原因