失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 打造属于自己的量化投资系统2——利用backtrader创建简单移动平均线策略

打造属于自己的量化投资系统2——利用backtrader创建简单移动平均线策略

时间:2022-03-07 17:31:21

相关推荐

打造属于自己的量化投资系统2——利用backtrader创建简单移动平均线策略

1.移动平均线定义

移动平均线(Moving Average,简称MA)是利用统计分析的方法,将一定时期内的价格加以平均并将不同时间的平均值连接起来,便得到了移动平均线。移动平均线是用来观察价格波动趋势的技术指标之一,可帮助投资者确认现有的价格趋势,判断未来潜在的价格走势,发现价格即将反转的信号

2.移动平均线的种类

移动平均线的计算方法包含算术平均法、加权平均法和指数平滑移动法三种。根据计算方法的不同,移动均线可分为简单移动平均线(Simple Moving Average,简称SMA)、加权移动平均线(Weighted Moving Average,简称WMA)和指数平均数指标(Exponential Moving Average)。

3.移动平均线的周期

根据计算时间的长短,移动平均线又可分为短期、中期和长期移动平均线。最常见的移动平均线分别为5日、10日、20日、50日、100日、200日及250日。其中,5日和10日通常被视为短期移动平均线的计算周期;中期移动平均线计算周期通常为20日及50日;长期移动平均线则大多以100日、200日甚至250日为计算周期。

4.简单移动平均线案例

创建简单移动平均线策略,周期15天的简单移动平均线策略

买入与卖出算法:

收盘价大于sma,买入收盘价小于等于sma,卖出

#self.data.close是表示收盘价#收盘价大于sma,买入if self.data.close>self.sma:self.buy()#收盘价小于等于sma,卖出if self.data.close<=self.sma:self.sell()

# -*- coding: utf-8 -*-"""Created on Wed May 13 14:37:09 @author: 觉醒"""# =============================================================================# #框架使用流程# #1.创建cerebro# #cerebro = bt.Cerebro(**kwargs)# #2.增加数据# #cerebro.adddata(data)# #3.增加策略# #cerebro.addstrategy(MyStrategy, myparam1=value1, myparam2=value2)# #4.增加其他元素# #例如增加观察者addobserver (or addobservermulti)# #5.改变broker# #cerebro.broker = broker# #6.接收通知# #Cerebro.notify_store# #运行cerebro# #result = cerebro.run(**kwargs)# #创建图表# #cerebro.plot()# =============================================================================from __future__ import (absolute_import, division, print_function,unicode_literals)import datetimeimport backtrader as bt # 引入backtrader框架#简单移动平均线策略#买入与卖出算法:# 收盘价大于sma,买入# 收盘价小于等于sma,卖出class StrategyClass(bt.Strategy):'#简单移动平均线策略'def __init__(self):#sma源码位于indicators\sma.py#指标必须要定义在策略类中的初始化函数中#简单移动平均线self.sma=bt.ind.SimpleMovingAverage(period=15)def next(self):#self.data.close是表示收盘价#收盘价大于sma,买入if self.data.close>self.sma:self.buy()#收盘价小于等于sma,卖出if self.data.close<=self.sma:self.sell()cerebro=bt.Cerebro()datapath=".\\datas\\test\\000001.XSHE"data=bt.feeds.GenericCSVData(dataname=datapath,fromdate = datetime.datetime(, 1, 1),todate = datetime.datetime(, 3, 20),nullvalue=0.0,dtformat=('%Y-%m-%d'),datetime=0,high=3,low=4,open=1,close=2,volume=5,openinterest=-1)cerebro.adddata(data)cerebro.addstrategy(StrategyClass)#设置金额,默认是100000cerebro.broker.set_cash(200000)cerebro.run(maxcpu=1)cerebro.plot()

运行结果

如果觉得《打造属于自己的量化投资系统2——利用backtrader创建简单移动平均线策略》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。