近研究量化交易,看了几个回测的框架,最后盯上 PyAlgoTrade 这个项目。感觉很不错,支持

策略回测和实盘交易,提供全面的技术分析接口,算是python的量化交易框架里比较出色的作品。所以对这个框架进行了一番研究。

程序化交易系统的编程范式:事件驱动的编程

量化交易,一般是采用统计学和数学工具,对资产的各个方面进行定量分析,并制订程序化的交易策略严格执行来获得收益。这里面有两大核心任务,一个是数据分析,一个是程序化交易。

与纯粹的数据分析不同,因为有交易动作的存在,同时,在实盘交易中,还要实时更新价格、成交量等数据。这里面可以很明显的看到系统的结构:

数据分析模块----行情接口和数据源----交易订单管理模块----交易下单API

这几个模块之间还存在状态一致性的维护。因此,交易系统的设计,一般采用事件驱动的设计。比如MetaTrader 4的设计,MQL也是采用事件回调

来计算指标或者进行EA交易。PyAlgoTrade也是基于这个理念开发的。PyAlgoTrade自己封装了一套事件分发机制,具体的实现可以参考:

observer 和

dispatcher 这两个模块

数据结构的取舍

量化交易中的数据以资产价格或者成交量的时间序列为主,这类序列化数据的分析框架有很多。大部分的科学计算框架,比如:Numpy、SciPy、

statsmodels、scikit-learn等等,都支持序列或者Array的分析。在Python的科学计算框架体系中,Numpy是核心,其核心的 ndarray 数据结构

也被广泛使用于其他数据分析框架之中。但是尽管 ndarray 适用于分析领域,在程序化交易中,仍然希望数据结构内的变化依然能有一个对外的通知,

需要一个带有事件支持的数据结构。因此PyAlgoTrade并没有采用 ndarray 或者pandas的 dataframe 作为基础数据结构,而是自行封装了一个 DataSeries

结构,以及针对每个K线或者蜡烛图的 Bar 结构。

与数据分析框架的整合方式

尽管因为需求的原因,需要单独实现一套数据结构,但是要使用主流的分析框架,依然需要使用ndarray这样的数据结构。这里就存在一个数据转换的问题。同时,由于

实盘交易的原因,PyAlgoTrade策略实现上,以复写 onBars 方法(其意义与MQL中的 onTick方法类似)为主,因此也是需要每次更新Tick数据就进行一次计算。

这里就涉及到一个移动窗口问题。PyAlgoTrade也对此做了一定的封装。这里可以参考:

technical.EventWindow 这个类。

而 talibext.indicator 模块中包含了

talib的封装。

PyAlgoTrade框架研究相关推荐

  1. DeepMind用基于AI的元强化学习框架研究多巴胺在学习过程中的作用

    内容来源:ATYUN AI平台 最近,AI已经应用到一系列视频游戏中,如Atari经典的Breakout和Pong.尽管这样的表现令人印象深刻,但人工智能仍然依靠数千小时的游戏时间来达到并超越人类玩家 ...

  2. 新一代深度学习框架研究

    点击上方蓝字关注我们 新一代深度学习框架研究 于璠 华为技术有限公司,广东 深圳 518000    摘要:从人工智能的历史出发,简述深度学习发展历程以及目前的挑战,通过介绍新一代深度学习框架的特点, ...

  3. 基于GIS的省级高速公路路面管理系统框架研究

    基于GIS的省级高速公路路面管理系统框架研究 摘  要  基于GIS的省级高速公路路面管理系统是采用路面管理技术.交通地理信息系统技术和HDM-4模型建立的针对包括沥青路面和水泥混凝土路面在内的高速公 ...

  4. 城市大脑标准体系与评价指标总体框架研究

    来源:城市大脑全球标准研究组 根据城市大脑标准的前期研究和中国指挥与控制学会(CICC)<城市大脑建设规范>标准启动会的专家意见,形成城市大脑标准体系与评价指标总体框架(如图1所示),供各 ...

  5. 记我的CTS框架研究(3)

    现在,基础框架里要做的事做完了,在runTest里根据测试类型找到对应测试接口,我们要做的是CTS测试,所以就回到CTS框架里CompatibilityTest了,附图理解: 6 Compatibil ...

  6. Blockchain -Corda框架研究一 cordapp-example 学习笔记

    Corda是Blockchain企业框架之一. 相关链接:https://docs.corda.net/ 国内:https://cncorda.com/ 这周开始准备学习Corda, 首先先研究一下h ...

  7. (前端版)RuoYi(若依开源框架)研究第一天

    前端版RouYi(开源框架)研究第一天 项目结构 ├── build // 构建相关 ├── bin // 执行脚本 ├── public // 公共文件 │ ├── favicon.ico // f ...

  8. 计算机硬件框架,计算机硬件知识体系的结构框架研究

    摘要:本文从计算机硬件知识体系的特点出发,探讨了计算机硬件知识的教学目标,从整体和实际等方面对如何构建合理的计算机硬件知识体系提出了一些自己的看法. 关键词:计算机硬件 知识体系 结构框架 中图分类号 ...

  9. Prism框架研究(一)

    从今天起开始写一个Prism框架的学习博客,今天是第一篇,所以从最基本的一些概念开始学习这个基于MVVM的框架的学习,首先看一下Prism代表什么,这里引用一下比较官方的英文解释来看一下:Prism ...

  10. DM8168 DVRRDK软件框架研究

    Netra(DM8168)处理器是个多核处理器,每个核之间相互独立却又相互关联,如何高效简洁地利用每个核完成一套系统功能是非常关键的,RDK这套软件平台就是针对这种多核平台设计的一套多通道视频应用方案 ...

最新文章

  1. 到网站进过的服务器 命令,进入服务器的命令
  2. Dubbo注解版配置
  3. 再也不怕别人动电脑了!用Python实时监控
  4. Windows Terminal 完全配置教程(主题以及启动设置)
  5. 图计算简介和Pregel简介
  6. 外贸找客户软件:G-EXTRACTOR V.20
  7. Android系统中如何得到各种格式的文件正文(office文件,PDF,邮件,html,zip等)
  8. ajax使用post函数(通过远程 HTTP POST 请求载入信息)
  9. iOS之券商唯品会接入总结
  10. c语言visit函数作用,[求助]二叉树遍历的程序里面的visit函数如何实现
  11. ROS2机器人实验报告提示02➡沼泽⬅
  12. A Generalized Deep Learning Approach for Evaluating Secondary Pulmonary Tuberculosis...论文总结
  13. 表弟准备买房,让我帮他分析分析哪个小区最合适,我直接用python下载了本地所有房源信息做成了可视化图
  14. VScode中npm install报错
  15. deepin linux 桌面环境,Linux Deepin 新桌面环境的目标
  16. 如何做一个好的PPT演讲
  17. 学习CC2541开发笔记
  18. swing仿qq写的群聊软件
  19. 【泛微ecology】表单建模批量操作发起指定流程,对选中的行引入流程明细表单
  20. Kafka 配置指南

热门文章

  1. ST-LINK V2.1 制作(含源码及其原理图)(type-c接口)可以配合robomaster 开发板下载口或者直接用杜邦线连接下载,支持串口调试
  2. Spring源码学习笔记:经典设计模式之工厂模式
  3. python卡方拟合性检验_卡方分布、卡方独立性检验和拟合性检验理论及其python实现...
  4. 用连续自然数之和来表达整数
  5. 多线程和高并发的区别
  6. 古人为什么除了本名还要取字号?取字号根据什么规矩呢?
  7. 算法导论学习笔记12_动态规划
  8. 知网HTML阅读是什么,HTML – 屏幕阅读器究竟是什么?我应该如何处理我的网站?...
  9. 统计学的Python实现-005:最大值、最小值、极差
  10. 【WPS表格】一些简单函数