Skip to main content

A Python SDK for Connecting to mStock Trading API and Streaming API

Project description

Trading API SDK - Python Client for accessing MiraeAPI and Streaming Market Data

Description

mStock-TradingApi-A is a complete SDK that allows you to build a trading and investment platform which includes executing orders in real time, streaming live trade and order data (Using Websockets) and more.

Installation

You can install the python client via pip

pip install --upgrade mStock-TradingApi-A

It is recommended to update 'pip' and setuptools to the latest version if you are facing any issues during installation

pip install -U pip setuptools

API Usage

import logging
from tradingapi_a.mconnect import *

logging.basicConfig(level=logging.DEBUG)

#Object for MConnect API
mconnect_obj=MConnect()

#Login
login_response=mconnect_obj.login("<user_id>","<password>")

#Generate access token by calling generate session
gen_response=mconnect_obj.generate_session("<API_Key>","<request_token_here>","<checksum>")

#Place Order
try:
    porder_resp=mconnect_obj.place_order(_tradingsymbol="SBICARD",_exchange="NSE",_transaction_type="BUY",_order_type="MARKET",_quantity="10",_product="CNC",_validity="DAY",_price="0",_trigger_price="0")
    
    logging.info("Order placed. ID is: {}".format(porder_resp["data"]["order_id"]))

except Exception as e:
    logging.info("Order placement failed: {}".format(e.message))

#Fetch all orders
mconnect_obj.get_order_book()

#Fetch all holdings
mconnect_obj.get_holdings()

#Get Net position for logged in user
mconnect_obj.get_net_position()

#Cancel All orders
mconnect_obj.cancel_all()

#Get fund Summary
mconnect_obj.get_fund_summary()

Websocket Usage

from tradingapi_a.mticker import *
import logging

logging.basicConfig(level=logging.DEBUG)

#Testing Web Socket or MTicker
m_ticker=MTicker("<API_KEY>","<ACCESS_TOKEN>","<WEB_SOCKET_URL>")


#Defining Callbacks
def on_ticks(ws, ticks):
    # Callback to receive ticks.
    logging.info("Ticks: {}".format(ticks))

def on_order_update(ws,data):
    #Callback to receive Order Updates
    logging.info("On Order Updates Packet received : {}".format(data))

def on_trade_update(ws,data):
    #Callback to receive Trade Updates
    logging.info("On Trade Updates Packet received : {}".format(data))

def on_connect(ws, response):
    # Callback on successful connect.
    m_ticker.send_login_after_connect()
    # Subscribe to a list of instrument_tokens .
    ws.subscribe([5633])
    # Set tick in `full` mode.
    ws.set_mode(m_ticker.MODE_FULL, [5633])

def on_close(ws, code, reason):
    # On connection close stop the event loop.
    # Reconnection will not happen after executing `ws.stop()`
    ws.stop()

# Assign the callbacks.
m_ticker.on_ticks = on_ticks
m_ticker.on_connect = on_connect
m_ticker.on_close = on_close
m_ticker.on_order_update=on_order_update
m_ticker.on_trade_update=on_trade_update

# Infinite loop on the main thread. Nothing after this will run.
# You have to use the pre-defined callbacks to manage subscriptions.
m_ticker.connect()

logging.info('Now Closing Web socket connection')

m_ticker.close()

logging.info('Testing complete')

Running Unit Tests

This requires having pytest library pre installed. You can install the same via pip:

pip install pytest

Navigate to the unit directory and run the connect_test.py file using pytest

cd unit
pytest connect_test.py

Support

For issues, please open an issue on GitHub.

Contributing

We welcome contributions! Please follow these steps:

  1. Fork the repository
  2. Create a new branch (feature-xyz)
  3. Commit your changes
  4. Push the branch and create a 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

mstock_tradingapi_a-0.1.0.tar.gz (14.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mstock_tradingapi_a-0.1.0-py3-none-any.whl (15.4 kB view details)

Uploaded Python 3

File details

Details for the file mstock_tradingapi_a-0.1.0.tar.gz.

File metadata

  • Download URL: mstock_tradingapi_a-0.1.0.tar.gz
  • Upload date:
  • Size: 14.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.2

File hashes

Hashes for mstock_tradingapi_a-0.1.0.tar.gz
Algorithm Hash digest
SHA256 88a499a5d658277834fe48e326a07fb638dded9fc508422b37f4bdec310569f2
MD5 d372e8d30a207f3d919d265e5d683039
BLAKE2b-256 355e24fe2a5fa836fa79860e606474446aa2418c66896ae83964382a994407df

See more details on using hashes here.

File details

Details for the file mstock_tradingapi_a-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for mstock_tradingapi_a-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d883103adb7a48c3b681ccb37120378843ab094f71ad0a4e625047cc894c96ba
MD5 68587cd7dc06c67d9d1bcbf64d2185e1
BLAKE2b-256 08b5b9732ee500245a9d329f0009540fec2469592678d902a31c692e6d7e09f8

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page