公司动态
印度股市数据从哪来?itick India Stock API Python对接手册
印度股市这几年在新兴市场里存在感很强NSENational Stock Exchange和BSEBombay Stock Exchange两大交易所的行情数据需求也越来越多。印度股票API、NSE实时行情、印度历史K线这篇教程用itick的Python SDK把对接流程走一遍重点讲一下印度市场比较特殊的交易所参数写法。印度市场的特殊之处exchange参数是必填的跟美股、港股不一样印度同一只股票可能同时在NSE和BSE两个交易所挂牌交易价格还可能有细微差异。所以itick对接印度市场的时候WebSocket订阅参数格式要求是代码$交易所$地区也就是exchange这一段不能省略这跟其他大部分市场代码$地区两段式的写法不太一样第一次用容易踩这个坑。举例信实工业Reliance Industries在NSE的订阅参数写法是RELIANCE$NSE$IN而REST接口这边exchange是可选参数留空默认返回主交易所一般是NSE的数据如果明确要指定BSE的数据就把exchange传成BSE。安装SDK、拿Tokenpipinstallitick-sdk去itick官网注册账号登录后台复制token免费套餐先测试用够验证需求。fromitick.sdkimportClient tokenyour_api_tokenclientClient(token)REST查询实时报价与历史K线# 信实工业regionINquoteclient.get_stock_quote(IN,RELIANCE)print(Reliance Quote:,quote)# 塔塔咨询服务 TCS历史日K线取最近20根klineclient.get_stock_kline(IN,TCS,8,20)print(TCS Kline:,kline)kType参数11分钟, 25分钟, 315分钟, 430分钟, 51小时, 81天, 91周, 101月。返回结构跟其他市场保持一致o/h/l/c/v/tu/t这几个字段含意都是通用的。WebSocket订阅注意exchange段不能漏importtimedefon_message(msg):print(推送:,msg)defon_error(err):print(错误:,err)client.set_message_handler(on_message)client.set_error_handler(on_error)client.connect_stock_websocket()# 印度市场订阅必须带上交易所段代码$交易所$地区client.send_websocket_message({ac:subscribe,params:RELIANCE$NSE$IN,TCS$NSE$IN,types:quote,depth})time.sleep(20)client.close_websocket()如果漏写了交易所段直接传RELIANCE$IN大概率会收到解析失败的错误响应这是印度市场和其他市场在参数格式上最大的区别务必留意。自动重连和心跳SDK都包好了跨国网络请求本来就容易抖动尤其是国内访问印度交易所数据源链路上的波动比访问美股数据源明显一些。好在itick-sdk内置了断线自动重连5秒间隔最多10次和心跳保活默认30秒一次这些都不需要开发者自己写SDK内部已经处理好了重连之后订阅关系也会自动恢复。# 手动检查连接状态ifnotclient.is_websocket_connected():print(连接已断开SDK会自动尝试重连)套餐怎么选套餐REST频率WS连接数WS订阅数Free5次/分钟13Base120次/分钟3200Professional600次/分钟6500Premium1200次/分钟122000个人开发者拿Free套餐先把流程跑通等要接入更多印度股票标的、需要更高并发的时候再根据实际订阅数量选Base或者ProfessionalPremium这个档位更适合有一定规模的量化团队或者资讯类产品。小结印度市场对接的核心记忆点就一句话exchange参数不能省订阅格式是代码$交易所$地区。除此之外调用方式跟美股、港股、A股完全一致同一套SDK换个region参数就能切换市场这也是itick这类聚合数据接口相对自己单独接各国交易所数据源省事的地方。更多细节可以翻itick的WebSocket文档。