3 步跑通量化回测:backtrader-pyqt-ui 可视化回测实战指南
【免费下载链接】backtrader-pyqt-ui项目地址: https://gitcode.com/gh_mirrors/bac/backtrader-pyqt-ui
回测不一定要在终端里盯日志。backtrader-pyqt-ui 把 Backtrader(一个 Python 回测框架)装进 PyQt 窗口:CSV 行情拖进来,左侧参数框改一下,点 Run,买卖点直接标在 K 线(蜡烛图行情)上,资金曲线同步画出来,全程在一个窗口里完成。
📊 工具能干什么:一个窗口里的三件事
主界面分三块:左侧策略参数区、中间 K 线与资金曲线、底部绩效统计加 Trade 标签页。
一个典型场景:把 fast 从 15 改成 8。操作是在输入框敲 8,点 Run。效果是图表清空重绘,均线交叉产生的买卖标记跟着移动,底部统计数字同步刷新,不需要去翻输出日志数交易次数。
图表本身读三样东西:K 线上的买卖标记、资金子图里那条账户权益变化曲线(即资金曲线,账户总资产随时间的轨迹)、最底部的成交量。切到 Trade 标签页则是逐笔交易列表:开平仓时间、成交价、方向、佣金、净盈亏,方便定位哪一笔贡献了利润。
⚡ 克隆仓库到看到K线只需3条命令
仓库自带 8 份样例 CSV(EURUSD 从 M1 到 D1 共 7 个周期,外加一份 2012 年的数据),不用自己准备数据就能跑起来:
git clone https://gitcode.com/gh_mirrors/bac/backtrader-pyqt-ui cd backtrader-pyqt-ui && pip install backtrader matplotlib requests websocket-client qdarkstyle finplot python main.py窗口起来后,在数据加载页选data/Source 1/EURUSD_M15.csv,K 线立刻画好。策略列表里选 sma_crossover,初始资金保持默认 10000,点 Run。回测期间有进度条,跑完结果图就在眼前。
✂️ 从sma_crossover模板改出你的第一个策略
策略文件都放在 strategies/ 目录,有一条硬规则:文件名必须和类名完全一致,否则界面无法动态导入。预设了 2 个策略:sma_crossover(双均线交叉)和 ichimokuStrat1(一目均衡表)。
双均线策略的核心逻辑(节选)只有 11 行:
class sma_crossover(mt.MetaStrategy): params = (('fast', 15), ('slow', 30), ('tradeSize', 2000)) def __init__(self): sma_fast = btind.MovAv.SMA(period=self.p.fast) sma_slow = btind.MovAv.SMA(period=self.p.slow) self.buysig = btind.CrossOver(sma_fast, sma_slow) def next(self): if self.position.size and self.buysig < 0: self.sell(size=self.p.tradeSize) elif self.buysig > 0: self.buy(size=self.p.tradeSize)关键点不是均线本身,而是继承了mt.MetaStrategy而不是裸的bt.Strategy。参数框里改的值会经 setattr 写回self.params,下次 Run 时指标周期自动用新值——"改完参数直接重跑"这件事靠的就是这一层。
缺指标的话看 indicators/ 目录:rsi、sma、ema、fin_macd、stochastic、stochasticRsi、ichimoku 共 7 个文件,写法都可以直接参考。
📈 读结果图:资金曲线和Trade标签页各告诉你什么
资金曲线管稳定性:平滑上行、回撤浅,是好信号;出现尖峰下跌就跳去 Trade 页,按时间点对应到那笔交易,看是止损太窄还是追单追在高位。
绩效面板汇总了 Backtrader TradeAnalyzer 的统计:总交易数、胜率、平均每笔盈亏、最大回撤。建议的读法是先看图定调性,再进明细页算单笔账,两层结合着判断策略是否值得继续调参。
CSV行情数据的最低字段要求
data/ 目录里两份样例展示了格式边界:第一列时间戳,形如2019-12-02 22:30,后面跟 open、high、low、close、volume 五个数值列。分隔符逗号和制表符都能识别,分隔符与时间格式在加载页是可填字段,不必套某个固定模板。
其他几件小事:想接实时行情,websockets/ 目录 里有 Binance 的 WebSocket 连接示例;深色界面来自 stylesheets/ 里的 qss 文件;每次点 Run,账户都会重置为你设置的初始资金,上一次回测不会污染下一次。
小结
backtrader-pyqt-ui 做的事很聚焦:把"跑一次回测、读一遍日志"变成"跑一次、看一张图"。
克隆仓库、选一份 CSV、点 Run,三分钟内就能验证你的第一组参数。
【免费下载链接】backtrader-pyqt-ui项目地址: https://gitcode.com/gh_mirrors/bac/backtrader-pyqt-ui
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考