Support for Oanda-V20 API in backtrader
This integration is still under development and may have some issues, use it for live trading at your own risk!
btoandav20 is a package to integrate OANDA into backtrader. It uses the v20 API of OANDA. It can be used with demo or live account. We highly recommend to have a specific account to use backtrader with OANDA. You should not trade manually on the same account if you wish to use backtrader.
It includes all necessary utilities to backtest or do live trading:
Available features:
Accessing oandav20 API
Streaming prices
Streaming events
Get unlimited history prices for backtesting
Replay functionality for backtesting
Replace pending orders
Possibility to load existing positions from the OANDA account
Reconnects on broken connections and after timeouts, also backfills data after a timeout or disconnect occurred
Support different type of orders:
4 different OandaV20 Sizers:
4 different backtest Sizers:
btoandav20 supports Market, Limit and Stop orders. Other order types, like StopTrail need to be created using brackets.
orderexec: bt.Order.Stop
stopexec: bt.Order.StopTrail
To change a StopTrail order the stopside or takeside needs to be canceled and a new order with the order type StopTrail needs to be created.
Also an oref of the original order needs to be provided, when creating this order. The order needs to go into the opposing direction.
StopTrail example:
Provide the stoptrail in stopargs with trailamount or trailpercent
Create new trailing stop for parent order
Backtrader
(tested with version 1.9.61.122)pyyaml
(tested with version 3.13)v20
(tested with version 3.0.25) (https://github.com/oanda/v20-python/releases)The following steps have been tested on Mac OS High Sierra and Ubuntu 16 and 18.
Install backtrader pip install backtrader[plotting]
(https://www.backtrader.com/docu/installation.html)
Install btoandav20 pip install git+https://github.com/happydasch/btoandav20
or with pipenv install git+https://github.com/happydasch/btoandav20#egg=btoandav20
Import btoandav20
into your script: import btoandav20
(this is considering your script is at the root of your folder)
You can then access the different parts such as:
Live:
btoandav20.stores.OandaV20Store
btoandav20.feeds.OandaV20Data
btoandav20.brokers.OandaV20Broker
btoandav20.sizers.OandaV20PercentSizer
btoandav20.sizers.OandaV20CashSizer
btoandav20.sizers.OandaV20RiskPercentSizer
btoandav20.sizers.OandaV20RiskCashSizer
Backtesting:
btoandav20.sizers.ForexPercentSizer
btoandav20.sizers.ForexCashSizer
btoandav20.sizers.ForexRiskPercentSizer
btoandav20.sizers.ForexRiskCashSizer
btoandav20.commissions.OandaV20CommInfoBacktest
If you encounter an issue during installation, please check this url first: https://community.backtrader.com/topic/1570/oanda-data-feed/ and create a new issue if this doesn't solve it.
See the example folder for more detailed explanation on how to use it.
We are looking for contributors: if you are interested to join us please contact us.
If you want to support the development of btoandav20, consider to support this project.
All code is based on backtrader oandastore which is released under GNU General Public License Version 3 by Daniel Rodriguez