新闻详情

新闻详情

首页 / 资讯中心 / 详情

用 AkShare + backtrader 做 量化策略:ETF 双均线回测(含滑点/印花税完整代码)

发布时间:2026/9/30 3:42:23来源:尧图网络
用 AkShare + backtrader 做 量化策略:ETF 双均线回测(含滑点/印花税完整代码)
## 前言很多刚接触量化的朋友第一个策略就是双均线——短期均线上穿长期均线买入下穿卖出。但大部分人跑出来的回测结果都是假的没算手续费、没考虑 T1、没处理涨跌停。本文用 AkShare 获取数据 backtrader 做回测把真实成本全部算进去给你一个能直接用的模板。## 环境准备命令行安装必要依赖库pip install akshare backtrader pandas numpy matplotlib## 完整代码python脚本import akshare as ak import backtrader as bt import pandas as pd from datetime import datetime class DualMAStrategy(bt.Strategy): params ( (fast, 20), (slow, 60), ) def __init__(self): self.fast_ma bt.indicators.SMA(self.data.close, periodself.params.fast) self.slow_ma bt.indicators.SMA(self.data.close, periodself.params.slow) self.crossover bt.indicators.CrossOver(self.fast_ma, self.slow_ma) def next(self): if not self.position: if self.crossover 0: self.buy() elif self.crossover 0: self.close() # 获取 ETF 数据以沪深300ETF为例 etf_code 510300 df ak.fund_etf_hist_em(symboletf_code, perioddaily, start_date20180101, end_date20241231) df[date] pd.to_datetime(df[日期]) df.set_index(date, inplaceTrue) df df[[开盘, 最高, 最低, 收盘, 成交量]] df.columns [open, high, low, close, volume] df df.sort_index() # backtrader 数据加载 data bt.feeds.PandasData( datanamedf, datetimeNone, open0, high1, low2, close3, volume4, openinterestNone ) # 回测引擎 cerebro bt.Cerebro() cerebro.addstrategy(DualMAStrategy, fast20, slow60) cerebro.adddata(data) cerebro.broker.setcash(100000.0) cerebro.broker.setcommission(commission0.0003) # 万三佣金 cerebro.broker.set_slippage_fixed(0.01) # 1分钱滑点 cerebro.addanalyzer(bt.analyzers.SharpeRatio, _namesharpe) cerebro.addanalyzer(bt.analyzers.DrawDown, _namedrawdown) cerebro.addanalyzer(bt.analyzers.Returns, _namereturns) print(f初始资金: {cerebro.broker.getvalue():.2f}) results cerebro.run() strat results[0] print(f最终资金: {cerebro.broker.getvalue():.2f}) print(f夏普比率: {strat.analyzers.sharpe.get_analysis()[sharperatio]:.3f}) print(f最大回撤: {strat.analyzers.drawdown.get_analysis()[max][drawdown]:.2f}%) cerebro.plot()## 关键参数说明| 参数 | 值 | 说明 ||------|------|------|| 佣金 | 0.0003 | 万三单边 || 印花税 | 0ETF免收| A股股票为0.0005 || 滑点 | 0.01 元 | 模拟实际成交偏差 || 初始资金 | 100,000 | 可自行调整 |## 回测结果解读跑完你会看到- 资金曲线- 夏普比率- 最大回撤**但注意**这只是日线级别的简化回测。真实交易中还要考虑1. T1 限制当天买不能当天卖2. 涨跌停买不到/卖不掉3. 成交量不足时的冲击成本4. 参数过拟合20/60 是不是刚好选了最好的参数## 常见坑1. **未来函数**用当天收盘价做当天信号判断backtrader 默认用次日开盘价成交这点是对的2. **生存者偏差**只测了当前还在的 ETF没考虑退市的3. **过拟合**在 2018–2024 上优化参数换个时间段可能就不行了4. **手续费低估**股票万三印花税千一实际成本比 ETF 高很多## 下一步- 想加更多过滤条件成交量/资金流/波动率- 想测多只 ETF 轮动- 想做多因子选股回测报告如何解读如何进一步优化策略可以自己改代码也可以找我帮你把想法落地。---⚠️ 声明本文所有回测结果仅用于量化研究方法演示不构成任何投资建议。历史回测≠未来收益。如果需要把你的交易想法写成回测代码或者交流关于量化策略、回测的相关问题闲鱼搜「新智量化Lab」可找到我的服务。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频 2026/9/30 23:59:44

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证 2026/9/30 23:59:36

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
MCP Kubernetes Server 实战:用 TaoToken 统一 Key 打通集群管理工具链 2026/9/30 23:59:30

MCP Kubernetes Server 实战:用 TaoToken 统一 Key 打通集群管理工具链

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
2026 大模型集体涨价:用 Python 做企业 Token 成本测算与选型避坑(附配置) 2026/9/30 23:59:30

2026 大模型集体涨价:用 Python 做企业 Token 成本测算与选型避坑(附配置)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
游戏引擎原理与实践 02:揭开3A游戏背后的技术面纱 2026/9/30 23:59:23

游戏引擎原理与实践 02:揭开3A游戏背后的技术面纱

游戏引擎原理与实践 02:揭开3A游戏背后的技术面纱Bilibili 同步视频游戏逻辑 vs 游戏引擎,剧本和摄影机的区别现代游戏引擎都包含哪些模块?游戏编辑器:游戏开发者的工作台数学,游戏引擎的内功根基需要重点掌握的数学知…

阅读更多 →
中科院青藏高原所李新团队提出 READY 框架|地学数据光“开放共享”还不够,得先过“AI 就绪”这道关 2026/9/30 23:59:23

中科院青藏高原所李新团队提出 READY 框架|地学数据光“开放共享”还不够,得先过“AI 就绪”这道关

近日,中国科学院青藏高原研究所、国家青藏高原科学数据中心联合国内多个地学数据中心科研人员,系统提出了“人工智能就绪地球科学数据(AI-ready geoscience data)”的定义框架与实现路径。当前,“人工智能就绪数据&…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉