# btplotting **Repository Path**: pythonstock/btplotting ## Basic Information - **Project Name**: btplotting - **Description**: No description available - **Primary Language**: Unknown - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-11-04 - **Last Updated**: 2025-11-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # btplotting 克隆自:https://github.com/happydasch/btplotting 这是一个为 `backtrader`()添加扩展绘图功能的库,使用 bokeh 实现。 `btplotting` 基于优秀的 `backtrader_plotting`()进行了全面重构,重点关注实时客户端功能。此外,修复了许多问题并新增了功能。以下是主要差异: ## 安装 `pip install git+https://gitee.com/pythonstock/btplotting` **主要差异:** 基础功能: * 无需自定义 backtrader * 不同的命名/结构 * 数据对齐功能,允许为不同数据源生成数据。这在重播或重新采样数据时非常有用,例如用于消除间隙。 * 支持重播数据 * 不同的绘图对象过滤方式 * 每个图表都有自己的 ColumnDataSource,因此实时客户端可以单独更新,而不会因 NaN 值出现问题 * 绘图风格与 backtrader 原生绘图非常相似(顺序、高度等) * 允许生成自定义列,无需硬编码 * 用于生成蜡烛颜色、varea 值等 * 保存策略图像或单个数据图像(例如在交易发生时保存数据图像) 绘图功能: * 数据、指标、观察者和成交量具有各自的长宽比,可在实时客户端或方案中配置 * 当在一个图表上使用多个数据源时,仅添加一个成交量轴 * 成交量轴位置可在方案中配置,默认绘制在右侧 * 所有图表之间链接的十字准线 * 支持 `_skipnan`、`fill_gt`、`fill_lt` 和 `fill` * 绘图对象可以通过一个或多个数据名称或绘图组过滤 * 自定义绘图组,可在应用或实时客户端中通过提供所有绘图 ID 的逗号分隔列表或选择要显示的部分来配置 标签页: * 可以完全移除默认标签页 * 新增日志面板以包含日志信息 * 可以扩展自定义标签页(例如实时客户端的订单执行、自定义分析等) 实时绘图: **(当前实时绘图功能暂不可用)** * 实时客户端中的导航功能(暂停、后退、前进) * 实时绘图通过分析器实现,无需自定义 backtrader * 实时绘图数据更新在单线程中完成,由 DataHandler 处理 * 数据更新可配置为每 n 秒一次 ## 功能 * 交互式图表 * 交互式 `backtrader` 优化结果浏览器(仅支持单策略运行) * 高度可配置 * 多种可换肤主题 * 易于使用 需要 Python >= 3.6。 ## 使用方法 * 作为分析器添加到 cerebro: ```python from btplotting import BacktraderPlottingLive ... ... cerebro = bt.Cerebro() cerebro.addstrategy(MyStrategy) cerebro.adddata(LiveDataStream()) cerebro.addanalyzer(BacktraderPlottingLive) cerebro.run() cerebro.plot() ``` * 如果需要更改默认端口或公开共享绘图: ```python cerebro.addanalyzer(BacktraderPlottingLive, address="*", port=8889) ``` ## Jupyter 在 Jupyter 中,可以通过 `iplot=False` 将绘图显示在单个浏览器标签页中: ```python plot = btplotting.BacktraderPlotting() cerebro.plot(plot, iplot=False) ``` 可能会遇到 `TypeError: is a built-in class` 错误。 移除源代码标签页: ```python plot = btplotting.BacktraderPlotting() plot.tabs.remove(btplotting.tabs.SourceTab) cerebro.plot(plot, iplot=False) ``` ## 演示 ## 赞助 如果您想支持 `btplotting` 的开发,可以考虑赞助本项目。 * BTC: 39BJtPgUv6UMjQvjguphN7kkjQF65rgMMF * ETH: 0x06d6f3134CD679d05AAfeA6e426f55805f9B395D *