基于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相关推荐

  1. 学习笔记_vnpy实战培训day04_作业

    使用第一堂课的作业,存入MongoDB的数据,对demo策略进行回测. load数据到mongo并查看 直接使用现成数据吧 VN.PY附带了两份数据,一个是IF指数1分钟数据,一个是螺纹钢指数1分钟数 ...

  2. 学习笔记_vnpy实战培训day03

    这一节纯干货,讲解了vnpy的项目结构(代码结构),核心功能引擎 建议先看视频,在阅读代码,然后在回来看视频,这样理解的更为透出,否则仅仅看视频很难有深入的理解. vnpy特点及和其他系统区别 vnp ...

  3. 学习笔记_vnpy实战培训day02

    这节课主要讲了numpy,pandas,tushare,talib,matlabplot用法,如果有基础的化不用听了 能看懂如下样例代码就行了 numpy ####numpy数据结构#### v = ...

  4. 学习笔记_vnpy实战培训day01

    正期望值系统 期望=仓位*盈利概率*盈利点数-仓位*亏损慨率*止损点数-交易手续费 高频交易: 仓位低,盈利概率高,盈利点数小,交易手续费高 CTA交易: 动态仓位,盈利概率低,盈利点数高 亏损概率高 ...

  5. Hadoop学习笔记(8) ——实战 做个倒排索引

    Hadoop学习笔记(8) --实战 做个倒排索引 倒排索引是文档检索系统中最常用数据结构.根据单词反过来查在文档中出现的频率,而不是根据文档来,所以称倒排索引(Inverted Index).结构如 ...

  6. Redis学习笔记(实战篇)(自用)

    Redis学习笔记(实战篇)(自用) 本文根据黑马程序员的课程资料与百度搜索的资料共同整理所得,仅用于学习使用,如有侵权,请联系删除 文章目录 Redis学习笔记(实战篇)(自用) 1.基于Sessi ...

  7. 《文哥的学习笔记——推荐系统实战》笔记

    发现了大神的学习笔记文哥的学习笔记.简单记录下知识点. 第一篇 1.评测指标:满意度,准确度,覆盖率,多样性,新颖性,惊喜度,信任度,实时性,健壮性,商业目标. 第二篇: 1.基于邻域的方法包括基于用 ...

  8. 【TensorFlow-windows】学习笔记三——实战准备

    前言 因为学习TensorFlow的内容较多,如果只看API会很无聊,可以结合实例去学习.但是在构建基本的模型之前,需要学一些准备知识:数据读取.预处理.优化器.损失函数 国际惯例,参考网址: Ten ...

  9. Word学习笔记-项目实战

    学习资源来自: 1.公众号:Wordlm123,[办公必备]-[Word高手秘籍] 2.网易云课堂:Word2016五步搞定标准化试卷 https://study.163.com/course/cou ...

最新文章

  1. 微软BI 之SSAS 系列 - 在 SQL Server 2012 下查看 SSAS 分析服务的模型以及几个模型的简单介绍...
  2. python 验证码识别示例(二) 复杂验证码识别
  3. 世界很大,先从这几个公众号看起!
  4. seata-golang 接入指南
  5. QT绘制散点图(2)
  6. 绕过 WAF:绕过一些 WAF 设备的 Burp 插件
  7. python 处理python编码的基本过程
  8. 怎么点亮段码屏_iPad屏幕坏点亮点怎么看 自查iPad屏幕坏点亮点方法【详解】
  9. SpringMVC集成Thymeleaf
  10. IOS开发之日期时间格式化字符说明
  11. 微软2月修复99个漏洞,含1个 0day
  12. 矩阵分解之奇异值分解
  13. 线性混合效应模型Linear Mixed-Effects Models的部分折叠Gibbs采样
  14. SSD原理解读-从入门到精通
  15. Linux常见系统故障排除
  16. vmstate内存事件详解
  17. 锦鲤信小呆翻车!一手好牌打得稀烂背后:靠运气赚来的,终究会凭实力亏掉...
  18. Unity学习笔记:个人学习项目《疯狂天才埃德加》纠错文档
  19. ppi协议源码 c语言,西门子PPI通讯协议
  20. 汽车名词解释-底盘与悬挂参数

热门文章

  1. ubuntu挂载共享文件
  2. Linux磁盘、内存、CPU、进程
  3. Qt4_创建菜单和工具栏
  4. 索引sql server_SQL Server报告– SQL Server索引利用率
  5. 对警报线程池的警报线程_检测和警报SQL Server代理丢失的作业
  6. sql azure 语法_Azure Kubernetes服务(AKS)–管理SQL Server数据库文件
  7. 在Azure Data StudioSQL笔记本中使用Python脚本加密密码
  8. mysql屏蔽_MySQL中的企业数据屏蔽
  9. 使用Java对sftp带有中文路径的文件夹进行下载,乱码打不开文件夹
  10. 有可能导致HttpQueryInfo 执行时出现12150 错误的一个原因