You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Backtrader中获取主绘图轴以添加自定义绘图元素?

在Backtrader中获取绘图轴添加自定义元素

两种获取绘图轴的方法

1. 策略类内部直接获取

在你的策略逻辑里(比如处理交易的notify_trade方法,或者自定义的交易记录方法中),可以通过数据源对象的plotinfo.plotaxes属性拿到对应的绘图轴。如果只用了一个数据源,用self.data0或者self.datas[0]都可以:

修改后的代码示例:

import matplotlib.patches as patches
import backtrader as bt

# 假设在策略类的某个方法内执行
ax = self.data0.plotinfo.plotaxes  # 获取主K线图的绘图轴
width = (bt.num2date(self.sell_dt) - bt.num2date(self.buy_dt)).total_seconds() / (60*60*24)
height = self.sell_price - self.buy_price
rect = patches.Rectangle((self.buy_dt, self.buy_price), width, height, linewidth=1, edgecolor='yellow', facecolor='yellow', alpha=0.5)
ax.add_patch(rect)

2. 调用plot()后外部获取

如果是在策略外部,调用cerebro.plot()之后,返回的结果里包含了所有绘图的fig和轴信息,直接提取即可:

# 运行策略并获取绘图对象
figs = cerebro.plot()
# figs是列表结构,每个元素对应一组绘图的(figure, 轴列表)
# 取第一个数据源的主价格轴
ax = figs[0][1][0]

注意点

  • 必须在Backtrader初始化绘图流程之后再获取轴,比如notify_trade触发时,绘图轴已经被创建,此时获取才有效。
  • 如果策略里有单独绘图的指标,要获取对应指标子图的轴,用self.你的指标实例.plotinfo.plotaxes即可。

内容的提问来源于stack exchange,提问作者aiv

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 04:52:01