本文仅代表个人观点,所涉及标的不作推荐,也不构成任何投资建议,仅供参考。如有错误,欢迎批评指正。
本文仅展示部分代码和数据,完整代码和数据详见:
基于Backtrader量化回测框架的MACD指标回测
代码下载链接:
基于Backtrader量化回测框架的MACD指标回测代码
1 摘要
本文基于Backtrader量化回测框架对MACD指标进行回测分析,以沪深300为基准,以SH.600600青岛啤酒为股票池,回测期间2019-01-01~2023-12-31。策略累积收益16.53%,年化收益3.23%,夏普比率26.87%,最大回撤29.27%,累计交易49次,胜率32.65%。
回测结果如下:
2 数据展示
本文从akshare数据库导入SH.000300、SH.600600(20190101-20211231)历史数据,并将其整理为backtrader的规范格式。
#Step1.数据加载
#获取user输入
stock_code = sg.popup_get_file('示例sh600600')
start_date = sg.popup_get_file('示例20210101')
end_date = sg.popup_get_file('示例20240202')
format_string = "%Y%m%d" #指定日期格式
start_date = datetime.strptime(start_date, format_string).date() # 将日期转换为datetime对象
end_date = datetime.strptime(end_date, format_string).date()
#获取沪深300数据作为基准
hs300 = ak.index_zh_a_hist(symbol = '000300',period='daily',start_date=start_date,end_date=end_date)
hs300 = hs300.iloc[:, :6]
hs300.columns = ['date','open','close','high','low','volume']
hs300.index = pd.to_datetime(hs300.date)
hs300['openinterest'] = 0
columns_to_keep = ['open','high','low','close','volume','openinterest'] # 转换为backtrader要求的数据格式
hs300 = hs300[columns_to_keep].copy()
print('沪深300行情数据')
print(hs300.head())
print(f'{
"-" * 80}')
#获取股票数据
df = ak.stock_zh_a_daily(symbol=stock_code,start_date=start_date