使用tushare采集沪深300ETF数据,并对沪深300ETF采用简单移动平均、指数移动平均、进行双均线策略,最后使用backtrader进行回测。
一、基本概念
双均线策略:运用两条不同周期的移动平均线,即短周期移动平均线和长周期移动平均线的相对大小,研判买进与卖出时机的策略。由短周期均线自下向上穿越长周期均线,所形成的交点,称为金叉。当短周期均线自上而下穿越长周期均线,所形成的交点,称为死叉。
简单移动平均法:对指定期间内的数据做算术平均,新旧数据的权重一样。
指数移动平均法:对指定期间的数据赋予不同的权重,每天数据的权重系数以指数等比形式缩小。
从tushare获取沪深300ETF数据
import pandas as pd
import numpy as np
import backtrader as bt
import datetime,time
import tushare as ts
def get_data(ts_code):
#获取沪深300ETF数据
pro = ts.pro_api('your token')
try :
df = pro.fund_daily(ts_code=ts_code)
except :
time.sleep(0.5)
print('获取数据失败')
else :
print('获取数据成功')
#对数据进行处理符合backtrader格式
columns = ['trade_date','open','high','low','close','vol']
df = df[columns]
#转换日期格式
df['trade_date'] = df['trade_date'].apply(lambda x: pd.to_datetime(str(x)))
bt_col_dict = {
'vol':'volume','trade_date':