Package: pix-apidata
AccelPix Data APIIntroductionPython library to connect and stream the market data.
This is websocket and fallback transport based library with all the functionalyties to get eod and live streaming dataSimple and easy integration with your web application, all heavy weight work are back lifted.What's newv1.3.3 : 29-Aug-2022Option Chain and Option Chain Range subscription and unsubscription method.v1.3.2 : 02-Aug-2022Intraducing Optionchain subscription and unsubscription method.v1.3.1 : 28-Jan-2022New callback for Trade snapshot during subscription, earlier it was provided along with Trade callbackSegment subscription for the entitled userIntraducing Option Greeksv1.3.0 : 06-May-2021Upper and lower price band for EQ market added - refer 'Refs snapshot data' sectionLive ticks aggregation which provides current day minutes bar - refer 'History data - Inraday' sectionSimple steps to up and runningFor Streaming Data:InitializeRegister required callbacksDo subscribe with symbols listFor History Data:InitializeAsync call to respective methods exposedWorking sample is available at the bottom of this help pageInstallationpipinstallpix-apidataImportimportasynciofrompix_apidataimport*Initializeapi=apidata_lib.ApiData()event_loop=asyncio.get_event_loop()apiKey="api-access-key"//providedbyyourdatavendorapiHost="apidata.accelpix.in"//providedbyyourdatavendorscheme="https"//useeitherhttps(defaultscheme)orhttpawaitapi.initialize(apiKey,apiHost,scheme)# *** IMPORTANT ***# *** initialize(...) - wait for initialize to complete before making any other API calls.Symbol MasterUse below REST API to get Master Data(Only for master data download due to larger data size)https://apidata.accelpix.in/api/hsd/Masters/2?fmt=json#response data{xid:1,tkr:"20MICRONS",atkr:null,ctkr:null,exp:"1970-01-01 00:00:00",utkr:null,inst:"EQUITY",a3tkr:null,sp:0.00,tk:16921}Callbacks for live streamingAvailable callbacksapi.on_trade_update(on_trade)api.on_best_update(on_best)api.on_refs_update(on_refs)api.on_srefs_update(on_srefs)api.on_tradeSnapshot_update(on_tradeSnap)api.on_greeks_update(on_greeks)Trade#callback to listen for trade dataapi.on_trade_update(on_trade)defon_trade(msg):print(msg)# Trade msgt=apidata_models.Trade(msg)print(t.ticker,t.oi)#likewise object can be called for id, kind, ticker, segment, price, qty, volume, oi#response data{id:0,ticker:'NIFTY-1',segmentId:2,time:1293704493,price:13958.6,qty:75,volume:1587975,oi:9700275,kind:'T'}Trade snapshot data#callback to listen for trade snapshot, called during subcription process#listen to onTrade callback for continuouse stream dataapi.on_tradeSnapshot_update(on_tradeSnapshot)defon_tradeSnapshot(msg):print(msg)# TradeSnapshot msgt=apidata_models.Trade(msg)print(t.ticker,t.oi)#likewise object can be called for id, kind, ticker, segment, price, qty, volume, oi#response data{id:0,ticker:'NIFTY-1',segmentId:2,time:1293704493,price:13958.6,qty:75,volume:1587975,oi:9700275,kind:'T'}Best#callback to listen for bid, ask and respective qtyapi.on_best_update(on_best)defon_best(msg):print(msg)# Best msgb=apidata_models.Best(msg)print(b.ticker,b.bidPrice)#likewise object can be called for segmentId, kind, bidQty, askPrice, askQty#response data{ticker:'NIFTY-1',segmentId:2,kind:'B',bidPrice:13957.45,bidQty:75,askPrice:13958.8,askQty:75,time:1293704493}Recent change in Refs data#callback to listen for change in o, h, l, c, oi and avg dataapi.on_trade_ref(on_ref)defon_ref(msg):print(msg)# Refs msgref=apidata_models.Refs(msg)print(ref.price)#likewise object can be called for segmentId, kind, ticker#response data{kind:'A',ticker:'NIFTY-1',segmentId:2,price:11781.08984375}Refs snapshot data#callback to listen for o, h, l, c, oi and avg snapshotapi.on_srefs_update(on_srefs)defon_srefs(msg):print(msg)# Srefs msgsref=apidata_models.RefsSnapshot(msg)print(sref.high)#likewise object can be called for kind, ticker, segmentId, open, close, high, low, avg, oi, upperBand and lowerBand#response data{kind:'V',ticker:'NIFTY-1',segmentId:2,open:11749.650390625,close:11681.5498046875,avg:11780.8603515625,high:11822,low:11731.2001953125,oi:10615950,upperBand:0,lowerBand:0}OptionGreeks data#callback to listen for optionGreek dataapi.on_greeks_update(on_greeks)defon_greeks(msg):print(msg)# Option Greeks Datagreeks=apidata_models.Greeks(msg)print(greeks.gamma)# likewise object can be called for kind, ticker, iv, delta, theta, vega, gamma, ivvwap, vanna, charm, speed, zomma, color, volga, veta, tgr, tv and dtr#response data{kind:'G',ticker:'NIFTY2220318500CE',charm:13.510149002075195,color:0.0010876863962039351,ivvwap:0.2657951712608337,speed:-0.25761404633522034,tgr:1437.1766357421875,theta:-3.690974235534668,tv:-28860.783203125,vega:1.935671329498291,veta:57653.11328125,volga:0.000020740208128700033,zomma:3.531916377141897e-7,iv:0.2650300860404968,gamma:0.00012788892490789294,dtr:-1.9068187475204468,delta:0.03707314282655716}OptionGreeks Snapshot data#callback to listen for optionGreek snap dataapi.on_greeks_update(on_greeks)defon_greekSnapshot(msg):print(msg)# Option Greeks snap datagreeks=apidata_models.Greeks(msg)print(greeks.gamma)# likewise object can be called for kind, ticker, iv, delta, theta, vega, gamma, ivvwap, vanna, charm, speed, zomma, color, volga, veta, tgr, tv and dtr#response data{kind:'G',ticker:'NIFTY2220318500CE',charm:13.510149002075195,color:0.0010876863962039351,ivvwap:0.2657951712608337,speed:-0.25761404633522034,tgr:1437.1766357421875,theta:-3.690974235534668,tv:-28860.783203125,vega:1.935671329498291,veta:57653.11328125,volga:0.000020740208128700033,zomma:3.531916377141897e-7,iv:0.2650300860404968,gamma:0.00012788892490789294,dtr:-1.9068187475204468,delta:0.03707314282655716}Callbacks for connection statusapi.on_connection_started(connection_started)api.on_connection_stopped(connection_stopped)# Fired when connection is successfuldefconnection_started():print("Connection started callback")# Fired when the connection is closed after automatic retry or some issues in networking# Need to re-establish the connection manuallydefconnection_stopped():print("connection Stopped callback")Live stream subscriptionSubscribe to receive updates of segments entitled to youneedSnapshot=Falseawaitapi.subscribeSegments(needSnapshot)# IMPORTANT NOTE:# If needSnapshot = True, then buffer the updates received on 'api.on_tradeSnapshot_update' and 'api.on_srefs_update' before processing.# Data transfer is huge and you may get disconnected from server in-case if you don't process the incoming updates as fast enough.# It's advised to buffer the data then process it once 'api.subscribeSegments' method returns.Subscribe to receive ALL updatesawaitapi.subscribeAll('NIFTY-1')Subscribe to receive TRADE updatesawaitapi.subscribeTrade(['NIFTY-1','BANKNIFTY-1','NIFTY 50'])Subscribe to receive REFS and BEST updatesawaitapi.subscribeBestAndRefs(['NIFTY-1','BANKNIFTY-1'])Subscribe to receive Greeks updatesawaitapi.subscribeGreeks(['NIFTY2220318500CE'])Subscribe to receive Optionchain updates# params: spotName, Expiry Date# subscribe to full chainawaitapi.subscribeOptionChain('BANKNIFTY','20220901')# subscribe to range of strikes(CE, PE) considering current spot value(at time of subscribe) as the mid-point, essentially 10 strike(CE,PE) below mid-point and 10 strikes(CE, PE) above mid-point and total of 40 contracts subscribed for the below call.awaitapi.subscribeOptionChainRange('NIFTY','20220901',10)Unsubscribe live stream# unsubscribe single symbolawaitapi.unsubscribeAll(['NIFTY-1'])# unsubscribe multiple symbolawaitapi.unsubscribeAll(['NIFTY-1','BANKNIFTY-1'])Unsubscribe Optionchain updatesawaitapi.unsubscribeOptionChain('NIFTY','20220609')Unsubscribe Greeks updatesawaitapi.unsubscribeGreeks(['NIFTY2220318500CE'])History data - Eod# Continues data#params: ticker, startDate, endDateawaitapi.get_eod("NIFTY-1","20200828","20200901")# Contract data#params: underlying ticker, startDate, endDate, contractExpiryDateawaitapi.get_eod_contract("NIFTY","20200828","20200901","20201029")#response data{td:'2020-08-28T00:00:00',op:11630,hp:11708,lp:11617.05,cp:11689.05,vol:260625,oi:488325}History data - InradayProvides intra-eod bars with the time resolution in minutes (default:'5' mins)You can set minute resolution to '1', '5', '10' and so on.Custom minute resolution also supported like '3', '7' and so on.Passing CURRENT DATE as parameter in 'toDate' will respond the LIVE ticks aggregated upto the time it traded today. Last BAR of the current day may be incomplete. Current day tick aggregation response will always provide complete bar list from the beginning of day.# Continues data#params: ticker, startDate, endDate, resolutionawaitapi.get_intra_eod("NIFTY-1","20210603","20210604","5")# Contract data#params: underlying ticker, startDate, endDate, contractExpiryDateawaitapi.get_intra_eod_contract("NIFTY","20200828","20200901","20201029","5")#response data{td:'2020-08-28T09:15:00',op:11630,hp:11643.45,lp:11630,cp:11639.8,vol:4575,oi:440475}History data - TicksProvides back log ticks from the date time specified till current live time, that is the ticks available till request hit the server.#params: ticker, fromDateTimeawaitapi.get_back_ticks("BANKNIFTY-1","20201016 15:00:00")#response data{td:2020-11-16T15:00:01.000Z,pr:23600,vol:125,oi:1692375}Exampleimportasyncioimporttime#import requestsfrompix_apidataimport*api=apidata_lib.ApiData()event_loop=asyncio.get_event_loop()asyncdefmain():api.on_connection_started(connection_started)api.on_connection_stopped(connection_stopped)api.on_trade_update(on_trade)api.on_best_update(on_best)api.on_refs_update(on_refs)api.on_srefs_update(on_srefs)api.on_tradeSnapshot_update(on_tradeSnapshot)api.on_greeks_update(on_greeks)api.on_greekSnapshot_update(on_greekSnapshot)key="your-api-key"host="apidata.accelpix.in"scheme="http"s=awaitapi.initialize(key,host,scheme)print(s)his=awaitapi.get_intra_eod("NIFTY-1","20210603","20210604","5")print("History : ",his)syms=['NIFTY-1','BANKNIFTY-1']symsGreeks=["BANKNIFTY2290126500CE"]awaitapi.subscribeAll(syms)# await api.subscribeOptionChain('NIFTY','20220901')# await api.subscribeGreeks(symsGreeks)# await api.subscribeOptionChainRange('NIFTY','20220901',3)print("Subscribe Done")#needSnapshot = False#await api.subscribeSegments(needSnapshot)#time.sleep(5)# await api.unsubscribeAll(['NIFTY-1'])# await api.unsubscribeGreeks(['BANKNIFTY2290126500CE'])# await api.unsubscribeOptionChain('NIFTY','20220901')defon_trade(msg):trd=apidata_models.Trade(msg)print("Trade : ",msg)# or print(trd.volume) likewise object can be called for id, kind, ticker, segment, price, qty, oidefon_best(msg):bst=apidata_models.Best(msg)print("Best : ",msg)# or print(bst.bidPrice) likewise object can be called for ticker, segmentId, kind, bidQty, askPrice, askQtydefon_refs(msg):ref=apidata_models.Refs(msg)print("Refs snapshot : ",msg)# or print(ref.price) likewise object can be called for segmentId, kind, tickerdefon_srefs(msg):sref=apidata_models.RefsSnapshot(msg)print("Refs update : ",msg)# or print(sref.high) likewise object can be called for kind, ticker, segmentId, open, close, low, avg, oi, lowerBand,upperBanddefon_tradeSnapshot(msg):trdSnap=apidata_models.Trade(msg)print("TradeSnap : ",msg)# or print(trdSnap.volume) likewise object can be called for id, kind, ticker, segment, price, qty, oidefon_greeks(msg):greeks=apidata_models.Greeks(msg)print("OptionGreeks : ",msg)# or print(greeks.gamma) likewise object can be called for kind, ticker, iv, delta, theta, vega, gamma, ivvwap, vanna, charm, speed, zomma, color, volga, veta, tgr, tv and dtrdefon_greekSnapshot(msg):gr=apidata_models.Greeks(msg)print(msg)# or print(greeks.gamma) likewise object can be called for kind, ticker, iv, delta, theta, vega, gamma, ivvwap, vanna, charm, speed, zomma, color, volga, veta, tgr, tv and dtrdefconnection_started():print("Connection started callback")defconnection_stopped():print("Connection stopped callback")event_loop.create_task(main())try:event_loop.run_forever()finally:event_loop.close()Powered by ticAnalytics®