【Python量化实战 #03】Python实时股票行情接口实践:单票查询批量请求与轮询监控
系列:Python 行情数据接入笔记(持续更新)
本文:#03 实时行情与轮询草稿
盘中脚本关心的是「现在这几只票怎么样」。本篇用mairui演示单票实时、多码请求,以及一个带间隔的轮询骨架。接口字段以仓库文档为准:
https://github.com/MaiRuiApi/mairui
pipinstallmairui鉴权仍用环境变量MAIRUI_LICENCE(见 #01)。
单标的
实时类接口多数使用6 位代码:
importosfrommairuiimportClientwithClient(licence=os.environ["MAIRUI_LICENCE"])asapi:tick=api.stock_real_time("000001")print(tick)five=api.stock_real_five("000001")print(five)quote=api.stock_ssjy("000001")print(quote)stock_real_time与stock_ssjy字段可能不同。写解析前先看实际 JSON 结构。
多代码
importosfrommairuiimportClient codes=["000001","600519","300750"]withClient(licence=os.environ["MAIRUI_LICENCE"])asapi:# 多码合并(若当前版本/接口支持)data=api.stock_ssjy_more(codes)print(data)# 或并发单票ticks=api.map(api.stock_real_time,codes,max_workers=8)forcode,rowinzip(codes,ticks):print(code,row)名称里带全市场语义的接口流量更大,是否使用取决于业务与账号限额。
轮询草稿(注意频率)
importosimporttimefrommairuiimportClient WATCH=["000001","600519"]defpick_price(row):"""按实际返回字段调整;这里只做几种常见 key 的兜底。"""ifisinstance(row,dict):forkeyin("p","price","zxj","last"):ifkeyinrow:returnrow[key]returnrowwithClient(licence=os.environ["MAIRUI_LICENCE"])asapi:whileTrue:ts=time.strftime("%H:%M:%S")forcodeinWATCH:try:q=api.stock_real_time(code)print(ts,code,pick_price(q))exceptExceptionasexc:print(ts,code,"error",exc)time.sleep(3)生产环境还应考虑:退避、熔断、日志、进程守护。间隔过短容易触发限流。
实时 vs 历史
| 场景 | 更合适的接口类型 |
|---|---|
| 盯盘、条件触发 | 实时 |
| 回测、复盘 | 历史 K 线(见 #02) |
| 字段不熟 | 先打印一条再写解析 |
客户端超时、重试、map行为见:
https://github.com/MaiRuiApi/mairui
下一篇
#04:直接取 MACD / KDJ / 均线等技术指标数据,减少本地重复计算。
