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

vnpy特点及和其他系统区别

vnpy特点:

1,将多个金融市场交易与数据接口,进行标准化定义与封装
2,基于事件引擎的量化交易平台,参考国外流行的事件驱动交易系统,自建Python高性能事件驱动引擎
3,整合交易接口,基本覆盖了国内外常规交易品种(证券、期货、期权、外汇、CFD)
4,提供完整的CTA策略交易模块和界面
5,风控体系

和其他系统区别

1,vnpy交易核心,pyalgotrade测试是核心,
2,时间快,常规22ms,c++改写5ms,其他tc等500ms
3,侧重于对接实盘,覆盖证券期货

安装环境

pycharm安装,启动图形界面等

事件引擎

事件:有类型和内容的消息。
订阅:关心某类型的消息,指定其监听函数。
事件通知:有消息到达,逐一对登记的监听函数进行调用,发送消息。

基础对象
1、Queue,先进先出的消息队列
Put():把需要推送的事件,放进队列。
Get():提取最前一个事件。

2、Handlers,事件注册表
Type:事件的类型
Dict:内容体,数据字典
Handler List:监听函数清单
Register():添加监听函数

3、Thread,事件推送线程
逐一提取事件,根据类型找出Handler list
对List的监听函数,逐一调用推送

vnpy:理解为管道,核心事件引擎,事件引擎调用相关模块,mongo作为存储

事件类型

系统相关
EVENT_TIMER = 'eTimer' # 计时器事件,每隔1秒发送一次
EVENT_LOG = 'eLog' # 日志事件,全局通用
Gateway相关
EVENT_TICK = 'eTick.' # TICK行情事件,可后接具体的vtSymbol
EVENT_TRADE = 'eTrade.' # 成交回报事件
EVENT_ORDER = 'eOrder.' # 报单回报事件
EVENT_POSITION = 'ePosition.' # 持仓回报事件
EVENT_ACCOUNT = 'eAccount.' # 账户回报事件
EVENT_CONTRACT = 'eContract.' # 合约基础信息回报事件
EVENT_ERROR = 'eError.' # 错误回报事件
CTA模块相关
EVENT_CTA_LOG = 'eCtaLog' # CTA相关的日志事件
EVENT_CTA_STRATEGY = 'eCtaStrategy.' # CTA策略状态变化事件
行情记录模块相关
EVENT_DATARECORDER_LOG = 'eDataRecorderLog' # 行情记录日志更新事件

行情/交易接口执行流程

如下图:

看第一条路径:1-2-3-4-5-6
CTAENGIND调用mainengine的sendorder,mainEngine转给gateway,gateway直接调用封装的接口。接口python会调用具体的dll文件。
注意:这里没经过eventEngine,系统大部分操作都会经过eventEngine,进行处理
这里整个过程是同步的,一股脑执行的。
个人倾向于将其看做传送带,传送带上外面看起来放的是event,本event本质上是函数调用,所以eventEngine其实是一个个函数调用的传送带,或者函调调用list

上面的逻辑做了简化,阅读代码时可以发现,完整调用链(执行逻辑)如下
(回测状态)策略的Sender->CtaTemplate.sendOrder(父类)->ctaEngine.sendOrder ->BacktestingEngine.sendOrder->vtEngine.sendOrder -> CtpGateway.sendOrder

第二条路径:a-b-c-d
这个是撮合引擎撮合后,反馈的成交信息,dll反馈给封装的python接口,python将信息存入eventEngine
这个操作是一起操作。事件完结了,但是事情只干了一半,交给eventEngine了

第三条路径:1*-2*-3*
这个是eventEngin里面有个轮训函数(遍历函数),函数会调用event的方法部分。
发起调用其实是eventengine,但是执行的函数内容是ctaEngine的(其实是strategy的)

主引擎MAINENGINE

负责实例化相关引擎
实例化策略引擎(CtaEngine)
实例化事件引擎(EventEngine)
实例化数据引擎(DataEngine)
。。。

提供gateway的通用方法封装
添加gateway,连接/断开
订阅/取消,委托/撤单
查询账号/持仓

提供dataEngine的方法封装
查询合约/所有合约
查询委托/活跃委托
提供对数据库的方法封装
清空数据/保存数据

CTA引擎

策略容器
加载/初始化/启动/停止
策略参数与运行监控
持久化策略数据
定时触发器
风控
gateway接口封装
委托/撤单/全撤
本地停止单
行情订阅
数据支持
合约数据
tick/Bar数据

DATAENGINE数据引擎

看做一个字典或javamap结构就行了,没有实际逻辑

学习笔记_vnpy实战培训day03相关推荐

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

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

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

    基于VNPY编写策略 策略运行逻辑 讲解策略在vnpy中的运行逻辑,包括tick级别.分钟级别.混合等 bar内运算:tick运算,高频,cta,r-break,也是ticket.止损也是bar内 b ...

  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. Adobe FrameMaker 2019中文版
  2. 测试分析设计工程方法
  3. java 枚举类型enum
  4. iOS:通过URL构件UIImage
  5. D - 邂逅明下 HDU - 2897(有点水平的巴什博奕)
  6. 震惊整个世界的新发现,科学界的大骗局
  7. 图像分类任务中的tricks总结
  8. 从块结构谈表的存储参数与性能之间的关系
  9. 数据分箱4——卡方最优分箱 ChiMerge算法使用(有监督)
  10. 第六步_安装SSH服务
  11. jmeter接口压力测试详解
  12. ASO关键词覆盖怎么做?要做到多少?怎么提升aso关键词覆盖率
  13. 【100%通过率】华为OD机试真题 Java 实现【处理器问题/ 高性能AI处理器】【2022.11 Q4 新题】
  14. C语言数组练习-摘苹果
  15. Coinversation 的选择!一文了解 Polkadot 生态中的智能合约
  16. 瓴羊DAAS闪耀云栖大会,发布数字化时代最优解
  17. 用dom4j解析xml错误-Content is not allowed in prolog前言中不允许有内容
  18. GDAL Python读取.pbf文件
  19. 【精通特征工程】学习笔记(二)
  20. MIPI解决方案 ICN6202:MIPI DSI转LVDS转换芯片

热门文章

  1. 计算机网络————P2 标准化工作及相关组织
  2. 计算机网络的分层结构、协议、服务和接口
  3. unity相机围绕模型转_围绕我们的业务模型和风险进行安全测试
  4. linux扩展磁盘空间命令_在Linux上监视磁盘空间– SQL Server DBA的有用命令
  5. sql 逻辑运算符_SQL Like逻辑运算符介绍和概述
  6. Fiddler笔记一移动端连接
  7. 7-1 查找整数 (10 分)
  8. python实现目录中制定内容查找
  9. 2991:2011 求2011^n的后四位。
  10. Android填坑系列:Android JSONObject 中对key-value为null的特殊处理