- Notifications
You must be signed in to change notification settings - Fork4.3k
Python Backtesting library for trading strategies
License
mementum/backtrader
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Yahoo API Note:
[2018-11-16] After some testing it would seem that data downloads can beagain relied upon over the web interface (or APIv7
)
Tickets
The ticket system is (was, actually) more often than not abused to ask foradvice about samples.
Forfeedback/questions/... use theCommunity
Here a snippet of a Simple Moving Average CrossOver. It can be done in severaldifferent ways. Use the docs (and examples) Luke!
from datetime import datetimeimport backtrader as btclass SmaCross(bt.SignalStrategy): def __init__(self): sma1, sma2 = bt.ind.SMA(period=10), bt.ind.SMA(period=30) crossover = bt.ind.CrossOver(sma1, sma2) self.signal_add(bt.SIGNAL_LONG, crossover)cerebro = bt.Cerebro()cerebro.addstrategy(SmaCross)data0 = bt.feeds.YahooFinanceData(dataname='MSFT', fromdate=datetime(2011, 1, 1), todate=datetime(2012, 12, 31))cerebro.adddata(data0)cerebro.run()cerebro.plot()
Including a full featured chart. Give it a try! This is included in the samplesassigsmacross/sigsmacross2.py
. Along it issigsmacross.py
which can beparametrized from the command line.
Live Trading and backtesting platform written in Python.
- Live Data Feed and Trading with
- Interactive Brokers (needs
IbPy
and benefits greatly from aninstalledpytz
)- Visual Chart (needs a fork of
comtypes
until a pull request isintegrated in the release and benefits frompytz
)- Oanda (needs
oandapy
) (REST API Only - v20 did not supportstreaming when implemented)- Data feeds from csv/files, online sources or frompandas andblaze
- Filters for datas, like breaking a daily bar into chunks to simulateintraday or working with Renko bricks
- Multiple data feeds and multiple strategies supported
- Multiple timeframes at once
- Integrated Resampling and Replaying
- Step by Step backtesting or at once (except in the evaluation of the Strategy)
- Integrated battery of indicators
- TA-Lib indicator support (needs pythonta-lib / check the docs)
- Easy development of custom indicators
- Analyzers (for example: TimeReturn, Sharpe Ratio, SQN) and
pyfolio
integration (deprecated)- Flexible definition of commission schemes
- Integrated broker simulation withMarket,Close,Limit,Stop,StopLimit,StopTrail,StopTrailLimit*and *OCO orders, bracket order,slippage, volume filling strategies and continuous cash adjustmet forfuture-like instruments
- Sizers for automated staking
- Cheat-on-Close and Cheat-on-Open modes
- Schedulers
- Trading Calendars
- Plotting (requires matplotlib)
The blog:
Read the full documentation at:
List of built-in Indicators (122)
- Python >=
3.2
- It also works with
pypy
andpypy3
(no plotting -matplotlib
isnot supported underpypy)
backtrader
is self-contained with no external dependencies (except if youwant to plot)
Frompypi:
pip install backtrader
pip install backtrader[plotting]
If
matplotlib
is not installed and you wish to do some plotting
Note
The minimum matplotlib version is1.4.1
An example forIB Data Feeds/Trading:
IbPy
doesn't seem to be in PyPi. Do either:pip install git+https://github.com/blampe/IbPy.gitor (if
git
is not available in your system):pip install https://github.com/blampe/IbPy/archive/master.zip
For other functionalities like:Visual Chart
,Oanda
,TA-Lib
, checkthe dependencies in the documentation.
From source:
- Place thebacktrader directory found in the sources inside your project
X.Y.Z.I
- X: Major version number. Should stay stable unless something big is changedlike an overhaul to use
numpy
- Y: Minor version number. To be changed upon adding a complete new feature or(god forbids) an incompatible API change.
- Z: Revision version number. To be changed for documentation updates, smallchanges, small bug fixes
- I: Number of Indicators already built into the platform
About
Python Backtesting library for trading strategies