Skip to main content

A Python library for trading in the Indian Finance Sector with support for multiple broker APIs.

Project description

Fenix – Indian Broker Trading Library

License

A Python library for trading in the Indian Finance Sector with support for many broker APIs.

Install · Usage · Manual

The Fenix library is used to connect and trade with brokers in the Indian Financial Markets. It provides quick access to market data, order palcemement, etc. for storage, analysis, visualization, indicator development, algorithmic trading, strategy backtesting, bot programming, and related software engineering.

It is intended to be used by coders, developers, technically-skilled traders, data-scientists and financial analysts for building trading algorithms.

Current feature list:

  • support for many brokers — more coming soon.
  • optional normalized data for cross-exchange analytics.
  • an out of the box unified API that is extremely easy to integrate.
  • works in Python 3.

Supported Indian Brokers

The fenix library currently supports the following 16 indian brokers and their trading APIs:

Logo Id Name Supported
aliceblue AliceBlue 🟢
angelone AngelOne 🟢
choice Choice 🟢
finvasia Finvasia 🟢
fivepaisa 5paisa 🟢
fyers Fyers 🟢
iifl IIFL 🟢
kotak Kotak 🟢
kotakneo Kotak Neo 🟢
kunjee Kunjee 🟢
mastertrust Master Trust 🟢
motilaloswal Motilal Oswal 🟢
symphony JM Financial 🟢
upstox Upstox 🟢
vpc VPC 🟢
zerodha Zerodha 🟢

Install

fenix in PyPI

pip install fenix
import fenix
print(fenix.brokers)
# print a list of all available exchange classes

Documentation

Read the Manual for more details.

Usage

Intro

The fenix library provides unifed methods for fetching market data, generating access tokens, placing different order types, fetching orderbook & tradebook, fetching order updates, etc.

In order to trade you need to provide your user credentials. It usually means signing up to the broker and creating API keys for your account. Some exchanges require personal info or identification. Sometimes verification may be necessary as well. In this case you will need to register yourself, this library will not create accounts or API keys for you.

Using this library you can perform the following:

  • get instrument tokens for equity, options for both NSE & BSE.
  • trade by making market, limit, stoploss and stoploss-market and bracket orders (if provided by the broker).
  • modify and cancel open orders.
  • query single order updates.
  • query orderbook & tradebook.
  • query positionbook.
  • query holdings.
  • query personal account info.
  • query rms limits.

Examples

# coding=utf-8

from fenix import aliceblue, angelone, zerodha, iifl
from fenix import constants


# Download all the FNO Intrument Tokens, Symbols, Lot Size
nfo_tokens = zerodha.create_fno_tokens()


# Create Headers which contain Access Token used to place orders, fetch orderbook, etc.
params = {
    "user_id": "YOUR_USER_ID",
    "password": 'YOUR_PASSWORD',
    "totpstr": 'YOUR_TOTP_STRING',
    "api_key": 'YOUR_API_KEY',
    "api_secret":'YOUR_API_SECRET'
    }

headers = zerodha.create_headers(params)


# Place a Limit Order in the FNO Segment
limit_order = zerodha.limit_order_fno(
                        price = 13.0,
                        option = "CE",
                        strike_price = 45500,
                        quantity = 15,
                        side = "BUY",
                        unique_id = 'LIMITOrderNFO',
                        headers = headers,
                        )


# Fetch the current detail of a single order
order_detail = zerodha.fetch_order('ORDER_ID', headers)


# Modify an open order
modified_order = zerodha.modify_order(
                            order_id='231217000002374',
                            price=10.0,
                            trigger=9.5,
                            quantity=15,
                            order_type=constants.OrderType.SL,
                            validity=constants.Validity.DAY,
                            headers=headers
                            )

# Cancel an open order
cancelled_order = zerodha.cancel_order(
                            order_id='231217000005603',
                            headers=headers
                            )

# Fetch OrderBook
orderbook = aliceblue.fetch_orders(headers=headers)


print(aliceblue.id, aliceblue.create_fno_tokens())
print(angelone.id, angelone.create_fno_tokens())

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

fenix-1.0.5.tar.gz (160.6 kB view details)

Uploaded Source

Built Distribution

fenix-1.0.5-py3-none-any.whl (154.1 kB view details)

Uploaded Python 3

File details

Details for the file fenix-1.0.5.tar.gz.

File metadata

  • Download URL: fenix-1.0.5.tar.gz
  • Upload date:
  • Size: 160.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.8.10

File hashes

Hashes for fenix-1.0.5.tar.gz
Algorithm Hash digest
SHA256 24ceaeea2a2678c2c832a756aa5f591eefb0f4445034446390b2093e00e5d0f6
MD5 b93e8994d3e5441eab5cb22bcea46de5
BLAKE2b-256 87b782b60127ea0610ed38b9b69d6ce97f8672ec3aa181e71a1adfeb576377da

See more details on using hashes here.

File details

Details for the file fenix-1.0.5-py3-none-any.whl.

File metadata

  • Download URL: fenix-1.0.5-py3-none-any.whl
  • Upload date:
  • Size: 154.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.8.10

File hashes

Hashes for fenix-1.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 e913486aa255d6bd02a5f19e0202a61830133d99ba382968f88922136aaedf02
MD5 c886dacb9af4a56c94ef032bc698e0a8
BLAKE2b-256 a2f4ff21fccabf6fdf6e1271cf002a346e3aae957151526dd3f04e2a6571953e

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