从 0 到 1 开发 Python 量化交易系统:用 Tushare 获取数据 + Backtrader 回测策略
注册 Tushare 账号并获取 API Token(免费版本需注意调用频率限制)。数据字段包括开盘价、收盘价、成交量等,需检查缺失值并处理(如填充或删除)。将 Tushare 数据转换为 Backtrader 的。安装 Backtrader 后创建策略类需继承。格式,需确保时间列为索引,列名符合规范(如。可视化资金曲线和交易信号,或调用。
·
Tushare 数据获取
注册 Tushare 账号并获取 API Token(免费版本需注意调用频率限制)。安装库后通过以下代码获取股票日线数据:
import tushare as ts
pro = ts.pro_api('your_token')
df = pro.daily(ts_code='600519.SH', start_date='20200101', end_date='20231231')
数据字段包括开盘价、收盘价、成交量等,需检查缺失值并处理(如填充或删除)。
Backtrader 回测框架配置
安装 Backtrader 后创建策略类需继承 bt.Strategy,关键方法包括:
__init__:初始化指标(如移动平均线)。next:定义买卖逻辑(例如突破20日均线买入)。
class MyStrategy(bt.Strategy):
def __init__(self):
self.sma = bt.indicators.SimpleMovingAverage(self.data.close, period=20)
def next(self):
if self.data.close[0] > self.sma[0]:
self.buy(size=100)
数据加载与回测执行
将 Tushare 数据转换为 Backtrader 的 DataFeed 格式,需确保时间列为索引,列名符合规范(如 close、volume)。调用 Cerebro 引擎运行回测:
data = bt.feeds.PandasData(dataname=df, datetime='trade_date')
cerebro = bt.Cerebro()
cerebro.adddata(data)
cerebro.addstrategy(MyStrategy)
results = cerebro.run()
绩效分析
通过 cerebro.plot() 可视化资金曲线和交易信号,或调用 analyzers 计算夏普比率、最大回撤:
cerebro.addanalyzer(bt.analyzers.SharpeRatio, _name='sharpe')
results = cerebro.run()
print(results[0].analyzers.sharpe.get_analysis())
关键注意事项
- 复权处理:Tushare 数据默认未复权,需调用
adj_factor字段调整价格。 - 滑点与手续费:通过
cerebro.broker.set_slippage_fixed()和setcommission()设置更真实的环境。 - 多线程优化:使用
cerebro.optstrategy()进行参数网格搜索,但需注意过拟合风险。
更多推荐


所有评论(0)