本教程的目标是快速介绍PyAlgoTrade。PyAlgoTrade的目标是帮助您实现股票交易策略。假设您有一个交易策略的想法,并且您希望使用历史数据进行评估,并查看其行为方式,那么PyAlgoTrade应该允许您以最小的努力来做到这一点。

本教程是在UNIX环境中开发的,但将其适应Windows环境的步骤应该很简单。

PyAlgoTrade有6个主要组件:

  • 策略(Strategies)
  • 数据集(Feeds)
  • 券商(Brokers)
  • DataSeries
  • 技术指标​
  • 优化

策略

这些是您定义的实现交易逻辑的类。何时购买,何时出售等

数据集

这些是提供抽象的数据。例如,您将使用CSV提要,从CSV(逗号分隔值)格式化的文件中加载条来将数据提供给策略。饲料不限于酒吧。例如,有一个Twitter Feed可以将Twitter事件纳入交易决策。

券商​

经纪人负责执行订单。

DataSeries

数据系列是用于管理时间序列数据的抽象。

技术指标

这些是用于在DataSeries之上进行计算的一组过滤器。例如SMA(简单移动平均),RSI(相对强度指数)等。这些过滤器被建模为DataSeries装饰器。

优化

这些是一组允许您在不同计算机或在同一台计算机中运行的不同进程之间进行回测的方法,或两者​​的组合。它们使水平缩放变得容易。
说完这一切,我们需要测试我们的策略的第一件事是一些数据。让我们使用Oracle 2000年的股票价格,我们将使用以下命令下载:

from pyalgotrade.tools import yahoofinance;
yahoofinance.download_daily_bars('orcl',2000,'orcl-2000.csv')
dw = pd.read_csv("orcl-2000.csv")
dw
Date    Open    High    Low    Close    Volume    Adj Close
0 2000-12-29 30.875000 31.312500 28.6875 29.062500 31702200 26.469546
1 2000-12-28 30.562500 31.625000 30.3750 31.062500 25053600 28.291106
2 2000-12-27 30.375000 31.062500 29.3750 30.687500 26437500 27.949563
3 2000-12-26 31.500000 32.187500 30.0000 30.937500 20589500 28.177258
4 2000-12-22 30.375000 31.984301 30.0000 31.875000 35568200 29.031115
5 2000-12-21 27.812500 30.250000 27.3125 29.500000 46719700 26.868012
6 2000-12-20 28.062500 29.812500 27.5000 28.500000 54440500 25.957232
7 2000-12-19 31.812500 33.125000 30.1250 30.625000 58653700 27.892640
8 2000-12-18 30.000000 32.437500 29.9375 32.000000 61640100 29.144962
9 2000-12-15 29.437500 30.078100 28.1875 28.562500 120004000 26.014156
10 2000-12-14 29.250000 29.937500 27.2500 27.500000 45894400 25.046452
11 2000-12-13 31.937500 32.000000 28.2500 28.375000 37933600 25.843385
12 2000-12-12 31.875000 32.500000 30.4062 30.750000 26481200 28.006487
13 2000-12-11 30.500000 32.250000 30.0000 31.937500 50279700 29.088039
14 2000-12-08 30.062500 30.625000 29.2500 30.062500 40052600 27.380326
15 2000-12-07 29.625000 29.937500 28.1250 28.312500 41088300 25.786461
16 2000-12-06 31.187500 31.625000 29.3125 30.187500 42125600 27.494173
17 2000-12-05 29.437500 31.500000 28.8750 31.500000 59754700 28.689572
18 2000-12-04 26.250000 28.875000 26.1875 28.187500 40710400 25.672613
19 2000-12-01 26.375000 27.875000 25.5000 26.437500 48663500 24.078748
20 2000-11-30 21.750000 27.625000 21.5000 26.500000 84386200 24.135672
21 2000-11-29 23.187500 23.625000 21.8125 22.875000 75409600 20.834094
22 2000-11-28 23.500000 23.812500 22.2500 22.656200 43075300 20.634816
23 2000-11-27 25.437500 25.812500 22.8750 23.125000 45665200 21.061789
24 2000-11-24 23.312500 24.250000 23.1250 24.125000 22443900 21.972569
25 2000-11-22 23.625000 24.062500 22.0625 22.312500 53315300 20.321780
26 2000-11-21 24.812500 25.625000 23.5000 23.875000 58647400 21.744874
27 2000-11-20 24.312500 25.875000 24.0000 24.750000 89778400 22.541807
28 2000-11-17 26.937500 29.250000 25.2500 28.812500 59636000 26.241851
29 2000-11-16 28.750000 29.812500 27.2500 27.375000 37986600 24.932604
... ... ... ... ... ... ... ...
222 2000-02-14 60.875000 62.250000 58.6250 62.187500 37599800 28.319568
223 2000-02-11 62.500000 64.750000 58.7500 59.687500 55774000 27.181093
224 2000-02-10 60.000000 62.625000 58.0000 62.312500 45288600 28.376492
225 2000-02-09 60.062500 61.312500 58.8125 59.937500 52471600 27.294940
226 2000-02-08 60.750000 61.437500 59.0000 59.562500 55718000 27.124169
227 2000-02-07 59.312500 60.000000 58.8750 59.937500 44691200 27.294940
228 2000-02-04 57.625000 58.250000 56.8125 57.812500 40916000 26.327236
229 2000-02-03 55.375000 57.000000 54.2500 56.687500 55533200 25.814923
230 2000-02-02 54.937500 56.000000 54.0000 54.312500 63933000 24.733371
231 2000-02-01 51.250000 54.312500 50.0000 54.000000 57105600 24.591062
232 2000-01-31 47.937500 50.125000 47.0625 49.953098 68148000 22.748143
233 2000-01-28 51.500000 51.937500 46.6250 47.375000 86394000 21.574103
234 2000-01-27 55.812500 56.687500 50.0000 51.812500 61054000 23.594896
235 2000-01-26 56.750000 58.937500 55.0000 55.062500 47569200 25.074914
236 2000-01-25 55.062500 57.500000 54.8750 56.437500 53059200 25.701075
237 2000-01-24 60.250000 60.375000 54.0000 54.187500 50022400 24.676448
238 2000-01-21 61.500000 61.500000 59.0000 59.687500 50891000 27.181093
239 2000-01-20 59.000000 60.250000 58.1250 59.250000 54526800 26.981860
240 2000-01-19 56.125000 58.250000 54.0000 57.125000 49198400 26.014156
241 2000-01-18 107.875000 114.500000 105.6250 111.250000 66780000 25.331071
242 2000-01-14 109.000000 111.375000 104.7500 106.812500 57078000 24.320674
243 2000-01-13 108.500000 109.875000 103.5000 105.062500 55779200 23.922208
244 2000-01-12 112.250000 112.250000 103.6875 105.625000 83443600 24.050286
245 2000-01-11 112.625000 114.750000 109.5000 112.375000 86585200 25.587228
246 2000-01-10 108.000000 116.000000 105.5000 115.750000 91518000 26.355698
247 2000-01-07 95.000000 103.500000 93.5625 103.375000 91755600 23.537972
248 2000-01-06 100.156197 105.000000 94.6875 96.000000 109880000 21.858722
249 2000-01-05 101.625000 106.375000 96.0000 102.000000 166054000 23.224892
250 2000-01-04 115.500000 118.625000 105.0000 107.687500 116824800 24.519907
251 2000-01-03 124.625000 125.187500 111.6250 118.125000 98114800 26.896

作者:readilen
链接:http://www.jianshu.com/p/18ee2e9a99c0
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

PyAlgoTrade Hello World 第一个程序(一)的更多相关文章

  1. Android开发-之第一个程序:HelloWorld!

    小编觉得不管学习什么编程的时候,第一个程序都是要求打印输出一个"HelloWorld!",那就从最简单的HelloWorld开始吧!哈哈~~~~ 一.创建一个Android工程 1 ...

  2. [Fluent NHibernate]第一个程序

    目录 写在前面 Fluent Nhibernate简介 基本配置 总结 写在前面 在耗时两月,NHibernate系列出炉这篇文章中,很多园友说了Fluent Nhibernate的东东,也激起我的兴 ...

  3. rails再体验(第一个程序)

    掌握redmine plugin开发的目标在2016年未实现,2017年继续. 选择<Ruby on Rails Tutorial>教程,windows安装railsinstaller,该 ...

  4. OpenGL学习笔记1——第一个程序

    学习的参考书基本是按照GL编程指南,如果有消息机制概念,对于GLUT的理解是很自然的.下面就按照自己写的第一个程序详细解释一下GL,还是比较容易上手的. 程序实现的功能是,根据当前随即种子摇出来的结果 ...

  5. Android 第一个程序 及 环境搭配

    一. JDK配置 1.找到jdk安装路径 2.配置环境变量(建议配置在系统变量里面) 1).配置JAVA_HOME变量 2).配置 CLASSPATH 环境变量 CLASSPATH=.;%JAVA_H ...

  6. unix 网路编程(卷一)第一个程序编译过程

    unix卷一去年暑假买的到现在才开始看无比惭愧,而且惭愧第一个程序就断断续续弄了几天,要好好写程序了,马上要找工作了,下面介绍下把本书第一个程序跑起来的过程: 搜各种博客 我用系统的是ubuntu 1 ...

  7. Hadoop学习历程(三、第一个程序)

    根据之前的操作,我们已经可以正常的启动Hadoop了,关于真正的集群我会在之后进行说明.现在我们来看一下第一个程序吧 1. 在eclipse上建立一个java项目 2. 将 /usr/hadoop/s ...

  8. Python2.7.3 学习——第一个程序 Hello Python World

    Hello World 每学一门语言开始的第一程序都是Hello World ,当然了Python也不例外,下面开始我们的Python第一个程序编写: 1,命令行: (1)打开终端,输入python, ...

  9. 【 D3.js 入门系列 — 1 】 第一个程序 HelloWorld

    记得以前刚上大一学 C 语言的时候,写的第一个程序就是在控制台上输出 HelloWorld .当时很纳闷,为什么要输出这个.老师解释说所有学编程入门的第一个程序都是在屏幕上输出 HelloWorld, ...

随机推荐

  1. Deep Learning(3)算法简介

    查看最新论文 Yoshua Bengio, Learning Deep Architectures for AI, Foundations and Trends in Machine Learning ...

  2. 钉钉,连续获取Token一样么? Js_ticket重复获取一样么?

    经过测试,是一样的: Token的过期时间是2个小时: 2个小时后在获取则发生变化: js_ticket:  重复获取的值不同的:

  3. Apache HttpClient4使用教程

    基于HttpClient 4.5.2 执行GET请求 CloseableHttpClient httpClient = HttpClients.custom() .build(); Closeable ...

  4. Java集合转有类型的数组之toArray(T[] a)

    在java变成中慎用强制类型转换,尽量使用类自带的转换函数或泛型.先看一行代码 错误方法: String[] array= (String[]) list.toArray(); 如果list中存放的是 ...

  5. Xcode7.2与iOS9之坑 (持续更新)

    GitHub地址 前几天升级OS X EI Capitan 10.11.1, 以及Xcode7.1,正好赶上公司新产品上线,要做iOS9的适配,遇到各种坑,各种查资料,随之记录总结一下遇到的坑. 先说 ...

  6. win10下搭建深度学习--总结【学习笔记】

    win10 下搭建深度学习开发环境总结: 1.本人环境如下:win10,GTX1050TI.i7,anaconda3,vs2015,cuda9.0,cudnn7.1.4,tensorflow-gpu= ...

  7. mybatis报Invalid bound statement (not found) 分析

      解决问题的步骤,请参考: 1.mapper.xml要和对应的mapper接口在同一个包下,包名要一模一样. 2.Mapper接口中的方法在Mapper.xml中没有,然后执行Mapper接口的方法 ...

  8. Mac系统下adb工具的配置

    sudo vim ~/.bash_profile 增加如下内容 ANDROID_HOME=/Users/apple/Library/Android/sdk export PATH=$PATH:$AND ...

  9. 记一次加载js不全报错的原因总结

    1.运营商广告 dns 劫持2.浏览器本身并发数3.服务器配置keepAliveTimeout=04.加载文件过大5.

  10. 随机梯度下降算法求解SVM

    测试代码(matlab)如下: clear; load E:\dataset\USPS\USPS.mat; % data format: % Xtr n1*dim % Xte n2*dim % Ytr ...