pyalgotrade教程5--多标的策略
pyalgotrade相比于zipline而言,对于多个标的的投资,似乎是薄弱了一点,但也并不是不行呀。既然是多标的策略,那么肯定有多个csv的add,其实逻辑是很简单,就直接上demo吧,反正很好理解。
# coding=utf-8
from pyalgotrade import strategy
from pyalgotrade.barfeed.csvfeed import GenericBarFeed
from pyalgotrade.bar import Frequency
from pyalgotrade.stratanalyzer import returns
from pyalgotrade.stratanalyzer import sharpe
from pyalgotrade.utils import statsclass MyStrategy(strategy.BacktestingStrategy):def __init__(self, feed):super(MyStrategy, self).__init__(feed, 10000000)self.__position = Nonedef onEnterOk(self, position):execInfo = position.getEntryOrder().getExecutionInfo()self.info("BUY at %.2f" % (execInfo.getPrice()))def onEnterCanceled(self, position):self.__position = Nonedef onExitOk(self, position):execInfo = position.getExitOrder().getExecutionInfo()self.info("SELL at $%.2f" % (execInfo.getPrice()))self.__position = Nonedef onExitCanceled(self, position):self.__position.exitMarket()def onBars(self, bars):# 1.我们弄一个简单的策略来假装一下day = bars.getDateTime().date().dayif day == 5:self.__position = self.enterLong('a', 1, True)elif day == 10:self.__position = self.enterLong('b', 1, True)elif day == 15:self.__position = self.enterLong('c', 1, True)elif day == 20:self.__position = self.enterLong('d', 1, True)# 2.读取csv文件.
feed = GenericBarFeed(Frequency.DAY, None, None)
feed.addBarsFromCSV("a", "a.csv")
feed.addBarsFromCSV("b", "b.csv")
feed.addBarsFromCSV("c", "c.csv")
feed.addBarsFromCSV("d", "d.csv")myStrategy = MyStrategy(feed)# 3.加入分析器
retAnalyzer = returns.Returns()
myStrategy.attachAnalyzer(retAnalyzer)
sharpeRatioAnalyzer = sharpe.SharpeRatio()
myStrategy.attachAnalyzer(sharpeRatioAnalyzer)# 4.运行策略
myStrategy.run()# 5.输出结果
print "Final portfolio value: $%.2f" % myStrategy.getResult()
print "Anual return: %.2f %%" % (retAnalyzer.getCumulativeReturns()[-1] * 100)
print "Average daily return: %.2f %%" % (stats.mean(retAnalyzer.getReturns()) * 100)
print "Std. dev. daily return: %.4f" % (stats.stddev(retAnalyzer.getReturns()))
print "Sharpe ratio: %.2f" % (sharpeRatioAnalyzer.getSharpeRatio(0))
pyalgotrade教程5--多标的策略相关推荐
- SCCM 2007系列教程之六使用组策略实现SCCM客户端
SCCM 2007 安装光盘上提供了名为 ConfigMgr2007Installation.adm 的组策略管理模板,可用于配置客户端计算机的安装属性. 1.使用 Windows 组策略对象编辑器等 ...
- 转:量化交易零基础入门教程之——量化交易策略基本框架
感谢原作者:JoinQuant-TWist 转自:JoinQuant 原文链接:https://www.joinquant.com/view/community/detail/13151 重要提示:聚 ...
- python alpha策略_量化策略系列教程:04阿尔法策略
Alpha.Alpha,天天就知道Alpha,今天就给你们上阿尔法喽~ 此处,添加一个掘金的论坛证经社量化社区 - 证经社地址,貌似更新的还蛮快的~ 1. 策略原理: 阿尔法策略:投资者在市场交易中面 ...
- Pyalgotrade量化交易回测框架
现在就开始干活了.先要测试一下pyalgotrade回测数据对不对.我找了个参照标准:在聚宽上开通了个账号,按入门教程写了个策略:2016-2018年每个交易日买入100股平安银行(000001),回 ...
- 【数据】【自动化交易】Python编写策略模拟股票交易
[数据][自动化交易]Python编写策略模拟股票交易 这节我就用上节提到的pyalgotrade来编写回测策略程序,模拟股票交易.本篇文章里用的是SMA均线策略. 数据 数据我使用的是 大恒科技(6 ...
- 一个支付案例,学会策略模式!
点击关注公众号,Java干货及时送达 作者 | 叁滴水 来源 | https://blog.csdn.net/qq_30285985/ 前言 在开发时,总会遇到支付的需求,但是支付的方式有很多,支付宝 ...
- SQL Server 2008基于策略的管理
基于策略的管理(Policy Based Management),使DBA们可以制定管理策略,并将这些策略应用到服务器.数据库以及数据环境中的其他对象上去.经过精心设计的管理策略可以帮助DBA们对数据 ...
- linux 关闭密码复杂化,Linux系统设置复杂密码策略方法
用户帐号管理是系统管理员最重要的工作之一.而密码安全是系统安全中最受关注的一块.本文将为大家介绍如何在 Linux 上设置系统用户密码复杂度策略. 假设你已经在你的 Linux 系统上使用了 PAM ...
- centos7设置密码策略_Linux系统设置复杂密码策略方法总结
假设你已经在你的 Linux 系统上使用了 PAM (Pluggable Authentication Modules,插入式验证模块),因为这些年所有的 Linux 发行版都在使用它. 一.准备工作 ...
最新文章
- 人工智能对地球环境科学的推进
- 前松鼠拼拼产品总监吴天:做一个接地气的产品经理
- hadoop的三大核心组件之HDFS和YARN
- ASP.NET Core MVC 2.1 顶级参数验证
- mysql 避免重复添加_MySql三种避免重复插入数据的方法
- 二叉树最小单元结点的实现
- php表单的提交方法有什么,php – 确定哪个表单已提交的最佳方法是什么?
- 「leetcode」234. 回文链表:【数组模拟】【翻转后半部分】详解
- 软件测试中的缺陷分析与管理
- python之 turtle好例子集锦
- java编程规范之java命名规范
- 极光尔沃3D打印《英雄联盟》精美手板
- LimeSDR实验教程(3) GSM基站
- 耐克官网一直显示无法连接服务器,nikeapp无法连接服务器是什么原因 nikeapp怎么抢鞋子...
- 卡1有信号 卡2无服务器,为什么卡1无服务卡2有
- 使用JS监听键盘按下事件
- 我说CMMI2.0之产品集成
- 002--软考程序员之硬件组成原理
- java虚拟函数_java实现多态中的虚函数相关概念
- Python代码写好了怎么运行?