Use bokeh as the backend, you will get richer plot effects for backtrader
Important Note!
BacktraderBokeh has been fully upgraded to Noba which has richer feature, such as ioc container, event system, pipeline system, and a database abstraction layerPerhaps you should not use this Backtrader_Bokeh again, but if you insist on using it, there is no problem, and we also provide support.
The following is README to the Backtrader_Bokeh.
Regards
Backtrader_Bokeh
You can visit our wiki homepage for more information: EN | 中文
BacktraderBokeh to add extended plotting capabilities to Backtrader using Bokeh based on the awesome backtrader
What is different:
Basic:
- No need for custom backtrader
- Different naming / structure
- Different data generation which allows to generate data for different data sources.
- Different filtering of plot objects
- Support for replay data
- Every figure has its own ColumnDataSource, so the live client can patch without
- Display of plots looks more like backtrader plotting (order, heights, etc.)
- Allows to generate custom columns, which don't have to be hardcoded. This is being used to generate
- Possibility to fill gaps of higher timeframes with data
- Datas, Indicators, Observer and Volume have own aspect ratios, which can be configured in live client
- Different datafeed's plot sytle can be customize separately
- 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
- fillgt, filllt, 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
Tabs:
- 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.)
- 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
- Support keyboard operation
- Interactive
backtraderoptimization result browser (only supported for single-strategy runs) - Highly configurable
- Different skinnable themes
- In addition to OHLC, additional datafeed line can be ploted
- Easy to use
Bug fixed
Some examples, more detail in CHANGELOG.md
- Many bugs in Backtrader that have not been still fixed, Backtrader_Bokeh fixed those through Monkey Patch
- Very imortant, fixed the legend can't be displayed in the observer or indicators's figuer
- And more...
Python >= 3.6 is required.
How to use
Just give Live Mode example, about Normal Mode and Optstrategy Mode pls refer to wiki-en | wiki-中文- Add to cerebro as an analyzer (Live Mode):
from backtrader_bokeh import bt
...
...
cerebro = bt.Cerebro() cerebro.addstrategy(MyStrategy) cerebro.adddata(LiveDataStream()) # Note! Data is must Live Data cerebro.addanalyzer(bt.analyzers.Live, forceplotlegend=True, autostart=True) cerebro.run()
cerebro.plot() # do not run this line unless your data is not real-time
- If you need to change the default port or share the plotting to public:
cerebro.addanalyzer(bt.analyzers.Live, address="localhost", port=8889)
Jupyter
In Jupyter you can plut to a single browser tab with iplot=False:
from backtrader_bokeh import bt
plot = bt.Bokeh()
cerebro.plot(plot, iplot=False)
You may encounters TypeError: <class 'main.YourStrategyClass'> is a built-in class error.
To remove the source code tab use:
from backtrader_bokeh import bt
plot = bt.Bokeh()
plot.tabs.remove(bt.tabs.SourceTab)
cerebro.plot(plot, iplot=False)
Demos
Contact us
Telegram Channel: Aui_Say Discord Server: Aui and FriendsInstallation
pip install backtrader_bokeh
or
pip install git+https://github.com/iniself/backtrader_bokeh
Sponsoring
If you want to support the development of backtrader_bokeh, consider to support this project.
- ETH: 0x0275779f70179748C6fCe1Fe5D7638DfA7e3F986