Tushare + Backtrader实现双均线策略 以工商银行为例

本文通过结合Tushare获取的工商银行股票数据,运用Backtrader交易平台进行回测,详细阐述了如何构建并执行双均线策略。首先,将Tushare数据转化为适合回测的格式,然后利用Backtrader实现策略逻辑,最终展示回测结果,验证策略有效性。

参看文章:

Welcome - Backtrader

6、如何用backtrader实现双均线策略?以工商银行为例_云金杞-优快云博客

Python量化交易学习笔记(53)——backtrader的一些基本概念1_码农甲的博客-优快云博客

看了大佬的专栏文章,迫不及待试手一把,因为我一直使用tushare获取数据,现在使用tushare数据做双均线策略

1.tushare获取工商银行数据:

#!/usr/bin/python3.5
import tushare as ts
import datetime
import pandas as pd
end_date = (str)(datetime.date.today()).replace('-','')
start_date_365 = (str)(datetime.date.today()-datetime.timedelta(days=365)).replace('-','')
start_date_200 = (str)(datetime.date.today()-datetime.timedelta(days=200)).replace('-','')
start_date_150 = (str)(datetime.date.today()-datetime.timedelta(days=150)).replace('-','')
start_date_50 = (str)(datetime.date.today()-datetime.timedelta(days=50)).replace('-','')
print(end_date,start_date_50,start_date_150,start_date_200,start_date_365)

ts.set_token('你自己的token') #设置token
#pro = ts.pro_api(token)
pro = ts.pro_api()
data = pro.daily(ts_code='601398.SH', start_date='20180701', end_date=end_date)
print(data)
del data['ts_code']  # 删除键是'Name'的条目
del data['pre_close'] 
del data['change'] 
del data['pct_chg'] 
data.rename(c
Backtrader是一个流行的Python库,用于技术分析和回测交易策略,特别是在金融市场上。双均线系统策略是一种基于移动平均线的技术指标组合策略,通常涉及两个短期和长期的移动平均线。这个策略的基本思想是当短期MA(如5日或10日线)上穿长短期MA(如20日或50日线),形成金叉,这被视为买入信号;相反,当短期MA下穿长期MA,形成死叉,则视为卖出信号。 在Backtrader中,你可以通过以下几个步骤实现双均线系统的策略: 1. **导入所需模块**:首先需要导入`backtrader.indicators`模块,其中包含了移动平均线等技术指标。 ```python import backtrader as bt from backtrader.indicators import SimpleMovingAverage ``` 2. **创建策略类**:继承自`bt.Strategy`并定义一些变量来存储MA指标。 ```python class DoubleMA(bt.Strategy): sma_short = SimpleMovingAverage(length=10) # 短期MA sma_long = SimpleMovingAverage(length=20) # 长期MA ``` 3. **编写buy/sell信号**:在`next()`函数中监控金叉和死叉点,并发出相应的订单。 ```python def next(self): if self.data.close[0] > self.sma_long[0] and self.sma_short[0] > self.sma_long[-1]: self.buy() elif self.data.close[0] < self.sma_long[0] and self.sma_short[0] < self.sma_long[-1]: self.sell() ``` 4. **回测策略**:最后,在实化`bt.Cerebro`对象时,将策略应用到数据集上,并运行回测。 ```python cerebro = bt.Cerebro() cerebro.addstrategy(DoubleMA) ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值