33 - Broker Folder Explanations

Overview

Each broker in OpenAlgo follows a standardized folder structure with consistent interfaces for authentication, order management, data retrieval, and symbol mapping.

Broker Directory Structure

broker/
├── zerodha/                    # Example broker
│   ├── api/
│   │   ├── __init__.py
│   │   ├── auth_api.py         # Authentication
│   │   ├── order_api.py        # Order operations
│   │   ├── data.py             # Market data
│   │   └── funds.py            # Account funds
│   ├── mapping/
│   │   ├── __init__.py
│   │   ├── transform_data.py   # Data transformation
│   │   └── order_data.py       # Order field mapping
│   ├── database/
│   │   ├── __init__.py
│   │   └── master_contract_db.py
│   ├── streaming/
│   │   ├── __init__.py
│   │   └── websocket_adapter.py
│   └── plugin.json             # Broker metadata
├── dhan/
│   └── ... (same structure)
├── angel/
│   └── ... (same structure)
└── ... (29 brokers total)

File Explanations

1. api/auth_api.py

Handles broker authentication/OAuth flow.

2. api/order_api.py

Order management operations.

3. api/data.py

Market data retrieval.

4. api/funds.py

Account and fund information.

5. mapping/transform_data.py

Convert OpenAlgo format to broker format.

6. database/master_contract_db.py

Symbol/token database management.

7. streaming/websocket_adapter.py

Real-time data streaming adapter.

8. plugin.json

Broker metadata file. This is a simple metadata file (NOT configuration).

Important: The plugin.json file is for metadata only - it identifies the plugin but does NOT contain configuration like API URLs or rate limits. Authentication methods, API endpoints, and WebSocket URLs are handled directly in the broker's Python code.

Adding a New Broker

Step 1: Create Directory Structure

Step 2: Implement Required Files

  1. api/auth_api.py - Authentication

  2. api/order_api.py - Orders

  3. api/data.py - Market data

  4. api/funds.py - Account data

  5. mapping/transform_data.py - Data mapping

  6. database/master_contract_db.py - Symbol DB

  7. plugin.json - Metadata

Step 3: Register Broker

Field Mapping Examples

Price Type Mapping

OpenAlgo
Zerodha
Dhan
Angel

MARKET

MARKET

MARKET

MARKET

LIMIT

LIMIT

LIMIT

LIMIT

SL

SL

SL

STOPLOSS_LIMIT

SL-M

SL-M

SL-M

STOPLOSS_MARKET

Product Type Mapping

OpenAlgo
Zerodha
Dhan
Angel

CNC

CNC

CNC

DELIVERY

MIS

MIS

INTRADAY

INTRADAY

NRML

NRML

MARGIN

CARRYFORWARD

Exchange Mapping

OpenAlgo
Zerodha
Dhan
Angel

NSE

NSE

NSE_EQ

NSE

NFO

NFO

NSE_FNO

NFO

BSE

BSE

BSE_EQ

BSE

MCX

MCX

MCX_COMM

MCX

Reference Implementations

Best Examples

Broker
Strength

zerodha

Complete OAuth2 implementation

dhan

Simple API key auth

angel

Full feature set

nubra

gRPC-based streaming, protos directory

Code Reference

Key Files Reference

Component
File Pattern

Auth

broker/*/api/auth_api.py

Orders

broker/*/api/order_api.py

Data

broker/*/api/data.py

Funds

broker/*/api/funds.py

Mapping

broker/*/mapping/transform_data.py

Symbols

broker/*/database/master_contract_db.py

WebSocket

broker/*/streaming/websocket_adapter.py

Config

broker/*/plugin.json

Last updated