# 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
*