Skip to main content

oanda-backtest is a python library for backtest with oanda fx rest api on Python 3.6 and above.

Project description

oanda-backtest

PyPI License: MIT codecov Build Status PyPI - Python Version Downloads

oanda-backtest is a python library for backtest with oanda fx trade rest api on Python 3.6 and above.

Installation

$ pip install oanda-backtest

Usage

basic

from oanda_backtest import Backtest

bt = Backtest(access_token='<your access token>', environment='practice')
bt.candles("EUR_USD")
fast_ma = bt.sma(period=5)
slow_ma = bt.sma(period=25)
bt.sell_exit = bt.buy_entry = (fast_ma > slow_ma) & (fast_ma.shift() <= slow_ma.shift())
bt.buy_exit = bt.sell_entry = (fast_ma < slow_ma) & (fast_ma.shift() >= slow_ma.shift())
bt.run()
bt.plot()

advanced

from oanda_backtest import Backtest

bt = Backtest(access_token='<your access token>', environment='practice')
filepath='usd-jpy-h1.csv'
if bt.exists(filepath):
    bt.read_csv(filepath)
else:
    params = {
        "granularity": "H1",  # 1 hour candlesticks (default=S5)
        "count": 5000 # 5000 candlesticks (default=500, maximum=5000)
    }
    bt.candles("USD_JPY", params)
    bt.to_csv(filepath)

fast_ma = bt.sma(period=10)
slow_ma = bt.sma(period=30)
exit_ma = bt.sma(period=5)
bt.buy_entry = (fast_ma > slow_ma) & (fast_ma.shift() <= slow_ma.shift())
bt.sell_entry = (fast_ma < slow_ma) & (fast_ma.shift() >= slow_ma.shift())
bt.buy_exit = (bt.C < exit_ma) & (bt.C.shift() >= exit_ma.shift())
bt.sell_exit = (bt.C > exit_ma) & (bt.C.shift() <= exit_ma.shift())

bt.initial_deposit = 100000 # default=0
bt.units = 1000 # currency unit (default=10000)
bt.stop_loss = 50 # stop loss pips (default=0)
bt.take_profit = 100 # take profit pips (default=0)

print(bt.run())
bt.plot("backtest.png")
total profit        1989.000
total trades         171.000
win rate              35.088
profit factor          1.198
maximum drawdown    2745.000
recovery factor        0.725
riskreward ratio       2.236
sharpe ratio           0.050
average return        10.666
stop loss              5.000
take profit            5.000

advanced.png

Supported indicators

  • Simple Moving Average 'sma'
  • Exponential Moving Average 'ema'
  • Moving Average Convergence Divergence 'macd'
  • Relative Strenght Index 'rsi'
  • Bollinger Bands 'bband'
  • Stochastic Oscillator 'stoch'
  • Market Momentum 'mom'

Getting started

For help getting started with OANDA REST API, view our online documentation.

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

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

oanda-backtest-0.2.2.tar.gz (6.9 kB view details)

Uploaded Source

Built Distribution

oanda_backtest-0.2.2-py3-none-any.whl (7.2 kB view details)

Uploaded Python 3

File details

Details for the file oanda-backtest-0.2.2.tar.gz.

File metadata

  • Download URL: oanda-backtest-0.2.2.tar.gz
  • Upload date:
  • Size: 6.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.8.2

File hashes

Hashes for oanda-backtest-0.2.2.tar.gz
Algorithm Hash digest
SHA256 cfe397f2cda1f6d01e4582765c01ef7874e12dc2810bd829b2bcad7904c825ea
MD5 a51488e102df58478c07ca0f260c9f0e
BLAKE2b-256 03b7069d0b494b68b5868801653ed79555c0a8d664687ed580b6112d558d9dea

See more details on using hashes here.

File details

Details for the file oanda_backtest-0.2.2-py3-none-any.whl.

File metadata

  • Download URL: oanda_backtest-0.2.2-py3-none-any.whl
  • Upload date:
  • Size: 7.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.8.2

File hashes

Hashes for oanda_backtest-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 5f0fd6bddcc19d061d579e4b5e5f2da74e28666952264932e8a1ffb57087f00b
MD5 41a0d2853660242def86aba0c785cabf
BLAKE2b-256 a998dcaa02482e6bcb3b589795e67a4a7169ba8816ec52d92adbfa37b505b3be

See more details on using hashes here.

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