Backtrader integration for OpenAlgo (India) - stores, feeds, and brokers
Project description
openalgo-backtrader
Backtrader integration for OpenAlgo (India) - stores, feeds, and brokers.
Installation
uv pip install openalgo-backtrader
Usage
Import the package in your code as follows:
from openalgo_bt.stores.oa import OAStore
from openalgo_bt.feeds.oa import OAData
Project Structure
openalgo_bt/- Main packagestores/oa.py- OAStore for OpenAlgo APIfeeds/oa.py- OAData for Backtrader feedsbrokers/oabroker.py- OABroker for Backtrader brokers
Sample Store/Broker Creation
Here is how to setup a Store/Broker (example tested with Zerodha backend at OpenAlgo). Both blocks are for "LIVE" setup
from openalgo_bt.stores.oa import OAStore
store = OAStore()
broker = store.getbroker(
product="MIS",
strategy="Live Consistent Trend Bracket",
debug=True,
simulate_fills=False, # Use real broker for live trading
use_funds=False # Use local cash management
)
cerebro.setbroker(broker)
And to setup a Data (or multiple for that matter)
data = OAData(
symbol=symbol,
interval="1m", # Explicit OpenAlgo interval to bypass timeframe/compression mapping
compression=1, # 1-minute bars
fromdate=datetime.now() - timedelta(days=1), # Some historical data for warmup
live=True, # Enable live streaming
ws_url=ws_url,
ws_mode=2, # Quote mode
)
cerebro.adddata(data, name=symbol)
Using higher compression values (intraday aggregation)
When your backend only provides 1-minute data, OAData can now deliver higher intraday compressions by resampling locally:
- Historical:
- If you request Minutes/Hours with compression>1 and the OpenAlgo backend does not support that interval, OAData fetches 1m candles and aggregates them into N-minute buckets.
- Live:
- Websocket ticks are aggregated into the requested bucket size on the fly.
Notes:
- Bucket alignment is done in Asia/Kolkata time by flooring to the nearest multiple of the bucket size.
- Volume comes from per-tick last_quantity when available, or from deltas of cumulative session volume otherwise.
- If OpenAlgo supports the requested interval natively (e.g. 5m), OAData will use it. If not, it will fallback to 1m + local aggregation transparently.
Examples:
# Historical 5-minute bars (local 1m->5m if backend interval unsupported)
import backtrader as bt
from datetime import datetime, timedelta
from openalgo_bt.feeds.oa import OAData
TF_MINUTES = getattr(getattr(bt, "TimeFrame", object), "Minutes", 1)
data = OAData(
symbol="NSE:RELIANCE",
timeframe=TF_MINUTES,
compression=5,
fromdate=datetime.now() - timedelta(days=5),
todate=datetime.now(),
)
# Live 15-minute bars (aggregated locally from 1m ticks)
import os
import backtrader as bt
from datetime import datetime
from openalgo_bt.feeds.oa import OAData
TF_MINUTES = getattr(getattr(bt, "TimeFrame", object), "Minutes", 1)
data = OAData(
symbol="NSE:RELIANCE",
timeframe=TF_MINUTES,
compression=15,
fromdate=datetime(2025, 8, 8), # optional historical warmup
live=True,
ws_url=os.getenv("WEBSOCKET_URL"),
ws_mode=2, # Quote mode
)
Tip: Some editors’ type stubs don’t expose bt.TimeFrame.Minutes; use: TF_MINUTES = getattr(getattr(bt, "TimeFrame", object), "Minutes", 1)
Requirements
- Python 3.8+
- python-dotenv
- backtrader (user must install)
- openalgo (user must install)
License
See LICENSE.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file openalgo_backtrader-0.1.10.tar.gz.
File metadata
- Download URL: openalgo_backtrader-0.1.10.tar.gz
- Upload date:
- Size: 24.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6dbe554158adae9148a54c417a089e007207129a47370130c44bcfc1a5fd0910
|
|
| MD5 |
19e44e89d272da0cf5eadf8892264537
|
|
| BLAKE2b-256 |
fe641fabb3b2ed81aa91d1915193f404188dbf820031127a6b4f11b3d513dfe3
|
File details
Details for the file openalgo_backtrader-0.1.10-py3-none-any.whl.
File metadata
- Download URL: openalgo_backtrader-0.1.10-py3-none-any.whl
- Upload date:
- Size: 27.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5cfc26f575b3c4d12d8a5b1c9f3c8a71ff62a9cc5c0b03ad69adfc6926b2a210
|
|
| MD5 |
231748755e175f5c9ff449244e6ce47f
|
|
| BLAKE2b-256 |
8783359b07fff4fee4b23f7f8c9ee5c32b0269a0f2f002456d9904b1b9e6b22e
|