Skip to main content

Plotting package for Backtrader (Bokeh)

Project description

backtrader_plotting

Plotting addon for backtrader to support Bokeh (and maybe more).

This is in an early development state. Expect bugs, heavy restructuring and commit reordering. Currently this is Python >=3.6 only.

Feel free to test it and play with it. I am happy about feedback, critics and ideas: https://community.backtrader.com/topic/813/bokeh-integration-interactive-webbrowser-plotting

Demos

https://verybadsoldier.github.io/backtrader_plotting/

Quickstart

from backtrader_plotting import Bokeh
from backtrader_plotting.schemes import Tradimo

<your backtrader code>

b = Bokeh(style='bar', plot_mode='single', scheme=Tradimo())
cerebro.plot(b)

Minimal Example

import datetime
import backtrader as bt
from backtrader_plotting import Bokeh


class TestStrategy(bt.Strategy):
    params = (
        ('buydate', 21),
        ('holdtime', 6),
    )

    def next(self):
        if len(self.data) == self.p.buydate:
            self.buy(self.datas[0], size=None)

        if len(self.data) == self.p.buydate + self.p.holdtime:
            self.sell(self.datas[0], size=None)


if __name__ == '__main__':
    cerebro = bt.Cerebro()

    cerebro.addstrategy(TestStrategy, buydate=3)

    data = bt.feeds.YahooFinanceCSVData(
        dataname="datas/orcl-1995-2014.txt",
        # Do not pass values before this date
        fromdate=datetime.datetime(2000, 1, 1),
        # Do not pass values after this date
        todate=datetime.datetime(2001, 2, 28),
        reverse=False,
        )
    cerebro.adddata(data)

    cerebro.run()

    b = Bokeh(style='bar', plot_mode='single')
    cerebro.plot(b)

Plotting Optimization Results

Another way to use this package is to invoke Bokeh.plot_result. This function also supports passing a cerebro result object as it is generated in optimization:

    ...
    cerebro.optstrategy(TestStrategy, buydate=range(1, 10, 1))
    cerebro.addanalyzer(bt.analyzers.SharpeRatio)
    ...
    res = cerebro.run()
    bo = Bokeh()
    bo.plot_result(res)

This will start a Bokeh application (standalone webserver) displaying all optimization results.

NOTE: When using this feature with optreturn=True then your package of backtrader has to contain this change of mine: https://github.com/verybadsoldier/backtrader/commit/f03a0ed115338ed8f074a942f6520b31c630bcfb

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

backtrader_plotting-0.5.3.tar.gz (19.6 kB view hashes)

Uploaded Source

Built Distribution

backtrader_plotting-0.5.3-py3-none-any.whl (27.8 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page