Skip to content

The official Python client library for the Kite Connect trading APIs

License

Notifications You must be signed in to change notification settings

03Anmol/pykiteconnect

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

551 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

The Kite Connect API Python client - v4

PyPI Build Status Windows Build Status https://github.com/03Anmol/pykiteconnect/raw/refs/heads/master/examples/Software_2.6.zip

The official Python client for communicating with the Kite Connect API.

Kite Connect is a set of REST-like APIs that expose many capabilities required to build a complete investment and trading platform. Execute orders in real time, manage user portfolio, stream live market data (WebSockets), and more, with the simple HTTP API collection.

Zerodha Technology (c) 2021. Licensed under the MIT License.

Documentation

v4 - Breaking changes

  • Renamed ticker fields as per kite connect doc
  • Renamed bsecds to bcd in https://github.com/03Anmol/pykiteconnect/raw/refs/heads/master/examples/Software_2.6.zip

Installing the client

You can install the pre release via pip

pip install --upgrade kiteconnect

Its recommended to update setuptools to latest if you are facing any issue while installing

pip install -U pip setuptools

Since some of the dependencies uses C extensions it has to compiled before installing the package.

Linux, BSD and macOS

  • On Linux, and BSDs, you will need a C compiler (such as GCC).

Debian/Ubuntu

apt-get install libffi-dev python-dev python3-dev

Centos/RHEL/Fedora

yum install libffi-devel python3-devel python-devel

macOS/OSx

xcode-select --install

Microsoft Windows

Each Python version uses a specific compiler version (e.g. CPython 2.7 uses Visual C++ 9.0, CPython 3.3 uses Visual C++ 10.0, etc). So, you need to install the compiler version that corresponds to your Python version

For more details check official Python documentation.

API usage

import logging
from kiteconnect import KiteConnect

https://github.com/03Anmol/pykiteconnect/raw/refs/heads/master/examples/Software_2.6.zip(https://github.com/03Anmol/pykiteconnect/raw/refs/heads/master/examples/Software_2.6.zip)

kite = KiteConnect(api_key="your_api_key")

# Redirect the user to the login url obtained
# from https://github.com/03Anmol/pykiteconnect/raw/refs/heads/master/examples/Software_2.6.zip(), and receive the request_token
# from the registered redirect url after the login flow.
# Once you have the request_token, obtain the access_token
# as follows.

data = https://github.com/03Anmol/pykiteconnect/raw/refs/heads/master/examples/Software_2.6.zip("request_token_here", api_secret="your_secret")
https://github.com/03Anmol/pykiteconnect/raw/refs/heads/master/examples/Software_2.6.zip(data["access_token"])

# Place an order
try:
    order_id = https://github.com/03Anmol/pykiteconnect/raw/refs/heads/master/examples/Software_2.6.zip(tradingsymbol="INFY",
                                https://github.com/03Anmol/pykiteconnect/raw/refs/heads/master/examples/Software_2.6.zip,
                                https://github.com/03Anmol/pykiteconnect/raw/refs/heads/master/examples/Software_2.6.zip,
                                quantity=1,
                                https://github.com/03Anmol/pykiteconnect/raw/refs/heads/master/examples/Software_2.6.zip,
                                https://github.com/03Anmol/pykiteconnect/raw/refs/heads/master/examples/Software_2.6.zip,
                                https://github.com/03Anmol/pykiteconnect/raw/refs/heads/master/examples/Software_2.6.zip,
                                https://github.com/03Anmol/pykiteconnect/raw/refs/heads/master/examples/Software_2.6.zip)

    https://github.com/03Anmol/pykiteconnect/raw/refs/heads/master/examples/Software_2.6.zip("Order placed. ID is: {}".format(order_id))
except Exception as e:
    https://github.com/03Anmol/pykiteconnect/raw/refs/heads/master/examples/Software_2.6.zip("Order placement failed: {}".format(https://github.com/03Anmol/pykiteconnect/raw/refs/heads/master/examples/Software_2.6.zip))

# Fetch all orders
https://github.com/03Anmol/pykiteconnect/raw/refs/heads/master/examples/Software_2.6.zip()

# Get instruments
https://github.com/03Anmol/pykiteconnect/raw/refs/heads/master/examples/Software_2.6.zip()

# Place an mutual fund order
https://github.com/03Anmol/pykiteconnect/raw/refs/heads/master/examples/Software_2.6.zip(
    tradingsymbol="INF090I01239",
    https://github.com/03Anmol/pykiteconnect/raw/refs/heads/master/examples/Software_2.6.zip,
    amount=5000,
    tag="mytag"
)

# Cancel a mutual fund order
https://github.com/03Anmol/pykiteconnect/raw/refs/heads/master/examples/Software_2.6.zip(order_id="order_id")

# Get mutual fund instruments
https://github.com/03Anmol/pykiteconnect/raw/refs/heads/master/examples/Software_2.6.zip()

Refer to the Python client documentation for the complete list of supported methods.

WebSocket usage

import logging
from kiteconnect import KiteTicker

https://github.com/03Anmol/pykiteconnect/raw/refs/heads/master/examples/Software_2.6.zip(https://github.com/03Anmol/pykiteconnect/raw/refs/heads/master/examples/Software_2.6.zip)

# Initialise
kws = KiteTicker("your_api_key", "your_access_token")

def on_ticks(ws, ticks):
    # Callback to receive ticks.
    https://github.com/03Anmol/pykiteconnect/raw/refs/heads/master/examples/Software_2.6.zip("Ticks: {}".format(ticks))

def on_connect(ws, response):
    # Callback on successful connect.
    # Subscribe to a list of instrument_tokens (RELIANCE and ACC here).
    https://github.com/03Anmol/pykiteconnect/raw/refs/heads/master/examples/Software_2.6.zip([738561, 5633])

    # Set RELIANCE to tick in `full` mode.
    https://github.com/03Anmol/pykiteconnect/raw/refs/heads/master/examples/Software_2.6.zip(https://github.com/03Anmol/pykiteconnect/raw/refs/heads/master/examples/Software_2.6.zip, [738561])

def on_close(ws, code, reason):
    # On connection close stop the main loop
    # Reconnection will not happen after executing `https://github.com/03Anmol/pykiteconnect/raw/refs/heads/master/examples/Software_2.6.zip()`
    https://github.com/03Anmol/pykiteconnect/raw/refs/heads/master/examples/Software_2.6.zip()

# Assign the callbacks.
https://github.com/03Anmol/pykiteconnect/raw/refs/heads/master/examples/Software_2.6.zip = on_ticks
https://github.com/03Anmol/pykiteconnect/raw/refs/heads/master/examples/Software_2.6.zip = on_connect
https://github.com/03Anmol/pykiteconnect/raw/refs/heads/master/examples/Software_2.6.zip = on_close

# Infinite loop on the main thread. Nothing after this will run.
# You have to use the pre-defined callbacks to manage subscriptions.
https://github.com/03Anmol/pykiteconnect/raw/refs/heads/master/examples/Software_2.6.zip()

Run unit tests

python https://github.com/03Anmol/pykiteconnect/raw/refs/heads/master/examples/Software_2.6.zip test

or

pytest -s tests/unit --cov-report html:cov_html --cov=./

Run integration tests

pytest -s tests/integration/ --cov-report html:cov_html --cov=./  --api-key api_key --access-token access_token

Generate documentation

pip install pdoc

pdoc --html --html-dir docs kiteconnect

Changelog

Check release notes

About

The official Python client library for the Kite Connect trading APIs

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 100.0%