SMARTAPI-PYTHON is a Python library for dealing AMX,that is a set of REST-like HTTP APIs that expose many capabilities required to build stock market investment and trading platforms. It lets you execute orders in real time.
Use the package manager pip to install smartapi-python.
pip install smartapi-python
pip install websocket-client# package import statementfromsmartapiimportSmartConnect#or from smartapi.smartConnect import SmartConnect#import smartapi.smartExceptions(for smartExceptions)#create object of callobj=SmartConnect(api_key="your api key",
#optional#access_token = "your access token",#refresh_token = "your refresh_token")#login api calldata=obj.generateSession("Your Client ID","Your Password","Your totp")
refreshToken=data['data']['refreshToken']
#fetch the feedtokenfeedToken=obj.getfeedToken()
#fetch User ProfileuserProfile=obj.getProfile(refreshToken)
#place ordertry:
orderparams= {
"variety": "NORMAL",
"tradingsymbol": "SBIN-EQ",
"symboltoken": "3045",
"transactiontype": "BUY",
"exchange": "NSE",
"ordertype": "LIMIT",
"producttype": "INTRADAY",
"duration": "DAY",
"price": "19500",
"squareoff": "0",
"stoploss": "0",
"quantity": "1"
}
orderId=obj.placeOrder(orderparams)
print("The order id is: {}".format(orderId))
exceptExceptionase:
print("Order placement failed: {}".format(e.message))
#gtt rule creationtry:
gttCreateParams={
"tradingsymbol" : "SBIN-EQ",
"symboltoken" : "3045",
"exchange" : "NSE", "producttype" : "MARGIN",
"transactiontype" : "BUY",
"price" : 100000,
"qty" : 10,
"disclosedqty": 10,
"triggerprice" : 200000,
"timeperiod" : 365
}
rule_id=obj.gttCreateRule(gttCreateParams)
print("The GTT rule id is: {}".format(rule_id))
exceptExceptionase:
print("GTT Rule creation failed: {}".format(e.message))
#gtt rule listtry:
status=["FORALL"] #should be a listpage=1count=10lists=obj.gttLists(status,page,count)
exceptExceptionase:
print("GTT Rule List failed: {}".format(e.message))
#Historic apitry:
historicParam={
"exchange": "NSE",
"symboltoken": "3045",
"interval": "ONE_MINUTE",
"fromdate": "2021-02-08 09:00", "todate": "2021-02-08 09:16"
}
obj.getCandleData(historicParam)
exceptExceptionase:
print("Historic Api failed: {}".format(e.message))
#logouttry:
logout=obj.terminateSession('Your Client Id')
print("Logout Successfull")
exceptExceptionase:
print("Logout failed: {}".format(e.message))fromsmartapiimportSmartWebSocket# feed_token=092017047FEED_TOKEN="YOUR_FEED_TOKEN"CLIENT_CODE="YOUR_CLIENT_CODE"# token="mcx_fo|224395"token="EXCHANGE|TOKEN_SYMBOL"#SAMPLE: nse_cm|2885&nse_cm|1594&nse_cm|11536&nse_cm|3045# token="mcx_fo|226745&mcx_fo|220822&mcx_fo|227182&mcx_fo|221599"task="mw"# mw|sfi|dpss=SmartWebSocket(FEED_TOKEN, CLIENT_CODE)
defon_message(ws, message):
print("Ticks: {}".format(message))
defon_open(ws):
print("on open")
ss.subscribe(task,token)
defon_error(ws, error):
print(error)
defon_close(ws):
print("Close")
# Assign the callbacks.ss._on_open=on_openss._on_message=on_messagess._on_error=on_errorss._on_close=on_closess.connect()