Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/happydasch/btplotting
btplotting provides plotting for backtests, optimization results and live data from backtrader.
https://github.com/happydasch/btplotting
backtest backtrader backtrader-plotting bokeh live-plotting livedata plotting visualization
Last synced: 11 days ago
JSON representation
btplotting provides plotting for backtests, optimization results and live data from backtrader.
- Host: GitHub
- URL: https://github.com/happydasch/btplotting
- Owner: happydasch
- License: gpl-3.0
- Created: 2020-07-16T23:04:36.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2024-08-27T07:20:58.000Z (2 months ago)
- Last Synced: 2024-08-27T08:38:10.725Z (2 months ago)
- Topics: backtest, backtrader, backtrader-plotting, bokeh, live-plotting, livedata, plotting, visualization
- Language: Python
- Homepage:
- Size: 837 KB
- Stars: 328
- Watchers: 16
- Forks: 83
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
- awesome-systematic-trading - btplotting - with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) | (Visualization / Cryptocurrencies)
- awesome-systematic-trading - btplotting - commit/happydasch/btplotting/master) ![GitHub Repo stars](https://img.shields.io/github/stars/happydasch/btplotting?style=social) | Python, bokeh | - btplotting provides plotting for backtests, optimization results and live data from backtrader. (Visualization / TimeSeries Analysis)
README
# btplotting
Library to add extended plotting capabilities to `backtrader` () using bokeh.
btplotting is based on the awesome `backtrader_plotting` ()
`btplotting` is a complete rework of `backtrader_plotting` with the live client in focus. Besides this, a lot of
issues are fixed and new functionality is added. See the list below for differences.**What is different:**
Basic:
* No need for custom backtrader
* Different naming / structure
* Data alignment which allows to generate data for different data sources.
This is useful when replaying or resampling data, for example to remove gaps.
* Support for replay data
* Different filtering of plot objects
* Every figure has its own ColumnDataSource, so the live client can patch without
having issues with nan values, every figure is updated individually
* Plotting looks very similar to backtraders own plotting (order, heights, etc.)
* Allows to generate custom columns, which don't have to be hardcoded.
* This is being used to generate color for candles, varea values, etc.
* Save images of strategy or a single data (for example save an image of data when
a trade is happening)Plotting:
* Datas, Indicators, Observer and Volume have own aspect ratios, which can be configured in live client
or scheme
* Only one axis for volume will be added when using multiple data sources on one figure
* Volume axis position is configureable in scheme, by default it is being plotted on the right side
* Linked Crosshair across all figures
* _skipnan, fill_gt, fill_lt, fill support
* Plot objects can be filtered by one or more datanames or by plot group
* Custom plot group, which can be configured in app or in live client by providing all
plotids in a comma-separated list or by selecting the parts of the plot to displayTabs:
* Default tabs can be completely removed
* New log panel to also include logging information
* Can be extended with custom tabs (for example order execution with live client, custom analysis, etc.)Live plotting:
**(Live plotting is broken at the moment)**
* Navigation in live client (Pause, Backward, Forward)
* Live plotting is done using an analyzer, so there is no need to use custom backtrader
* Live plotting data update works in a single thread and is done by a DataHandler
* Data update is being done every n seconds, which is configureable## Features
* Interactive plots
* Interactive `backtrader` optimization result browser (only supported for single-strategy runs)
* Highly configurable
* Different skinnable themes
* Easy to usePython >= 3.6 is required.
## How to use
* Add to cerebro as an analyzer:
```python
from btplotting import BacktraderPlottingLive
...
...cerebro = bt.Cerebro()
cerebro.addstrategy(MyStrategy)
cerebro.adddata(LiveDataStream())
cerebro.addanalyzer(BacktraderPlottingLive)
cerebro.run()
cerebro.plot()
```* If you need to change the default port or share the plotting to public:
```python
cerebro.addanalyzer(BacktraderPlottingLive, address="*", port=8889)
```## Jupyter
In Jupyter you can plot to a single browser tab with iplot=False:
```python
plot = btplotting.BacktraderPlotting()
cerebro.plot(plot, iplot=False)
```You may encounters TypeError: `` is a built-in class error.
To remove the source code tab use:
```python
plot = btplotting.BacktraderPlotting()
plot.tabs.remove(btplotting.tabs.SourceTab)
cerebro.plot(plot, iplot=False)
```## Demos
## Installation
`pip install git+https://github.com/happydasch/btplotting`
## Sponsoring
If you want to support the development of btplotting, consider to support this project.
* BTC: 39BJtPgUv6UMjQvjguphN7kkjQF65rgMMF
* ETH: 0x06d6f3134CD679d05AAfeA6e426f55805f9B395D
*