ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

A股量化数据工程:从 REST 接口到策略信号(第 1 篇):指数列表与实时行情接入

2026/10/3 6:15:26 拓冰建站 浏览量
A股量化数据工程:从 REST 接口到策略信号(第 1 篇):指数列表与实时行情接入 A股量化数据工程从 REST 接口到策略信号第 1 篇指数列表与实时行情接入系列说明数据源为 HTTP 接口接口仅输出原始业务裸字段不存在预制量化因子、预制打分指标所有因子、统计逻辑均由代码二次计算实现所有统计、筛选输出统一标注仅为数据演示不构成投资建议A 股行情遵循涨红跌绿展示规则金额单位使用货币符号 ¥与开源库对比只陈述客观事实不做主观褒贬。前言做量化的人几乎都从「指数」起步——大盘涨跌、板块强弱、风格切换全靠指数说话。但很多新手卡在数据接入要么爬虫不稳定要么字段对不齐。本篇用一组 REST 接口把指数列表和指数实时行情一次性接进来落进本地库后续所有因子、信号都从这张表长出来。本系列定位「数据工程」每篇聚焦一个真实接口族给出可运行代码与落库设计字段均与官方接口文档一一对应。一、接口原始字段梳理1指数列表接口接口地址https://api.biyingapi.com/hsindex/list/{LICENCE}字段说明dm指数代码形如000001.SH上证综指、399001.SZ深证成指mc指数名称jys交易所标识2指数实时行情接口接口地址https://api.biyingapi.com/hsindex/real/time/{指数代码.市场}/{LICENCE}字段说明p最新价o今开h最高l最低yc昨收cje成交额元 ¥v成交量手pv原始成交总量ud涨跌额pc涨跌幅zf振幅t行情时间提示指数代码带市场后缀.SH/.SZ实时接口路径要拆成指数代码.市场再拼与股票接口一致。二、自研衍生统计指标拿到实时行情后两个轻量衍生量很有用强弱分档按pc涨跌幅把指数分成 强(0.5%) / 平(-0.5%~0.5%) / 弱(-0.5%)用于判断当天风险偏好。振幅异常zf振幅显著高于近 20 日均值时往往对应变盘窗口。这两个量接口不会直接返回全部基于原始字段业务代码运算。三、数据表设计在quant.db新建两张数据表CREATETABLEIFNOTEXISTSindex_list(dmTEXTPRIMARYKEY,mcTEXT,jysTEXT);CREATETABLEIFNOTEXISTSindex_realtime(dmTEXT,tTEXT,pREAL,oREAL,hREAL,lREAL,ycREAL,cjeREAL,vREAL,pvREAL,udREAL,pcREAL,zfREAL,PRIMARYKEY(dm,t));四、完整代码importrequestsimportsqlite3importtime LICENCEYOUR_LICENCE# 替换为你的接口证书BASEhttps://api.biyingapi.comDB_PATHquant.dbdefbiying_api_get_retry(url,timeout15,max_retry3):带重试的接口请求返回解析后的 json。foriinrange(max_retry):try:rrequests.get(url,timeouttimeout)r.raise_for_status()returnr.json()exceptExceptionase:ifimax_retry-1:raisetime.sleep(1i)deffetch_index_list():沪深主要指数列表dm/mc/jys。databiying_api_get_retry(f{BASE}/hsindex/list/{LICENCE})returndata.get(data,[])ifisinstance(data,dict)else[]deffetch_index_realtime(code,market):单指数实时行情p/o/h/l/yc/cje/v/pv/ud/pc/zf/t。urlf{BASE}/hsindex/real/time/{code}.{market}/{LICENCE}databiying_api_get_retry(url)returndata.get(data,{})ifisinstance(data,dict)else{}defsave_index_list(rows):consqlite3.connect(DB_PATH)con.executemany(INSERT OR REPLACE INTO index_list(dm, mc, jys) VALUES(?,?,?),[[r.get(dm),r.get(mc),r.get(jys)]forrinrows])con.commit();con.close()defsave_index_realtime(row):cols[dm,t,p,o,h,l,yc,cje,v,pv,ud,pc,zf]vals[row.get(c)forcincols]consqlite3.connect(DB_PATH)ph,.join(?*len(cols))con.execute(fINSERT OR REPLACE INTO index_realtime({,.join(cols)}) VALUES({ph}),vals)con.commit();con.close()defstrength_tag(pc):涨跌幅分档强 / 平 / 弱。ifpcisNone:return平ifpc0.5:return强ifpc-0.5:return弱return平if__name____main__:# 1) 拉列表并落库idx_listfetch_index_list()save_index_list(idx_list)print(f指数列表共{len(idx_list)}条示例:,idx_list[0]ifidx_listelseNone)# 2) 逐一对主要指数拉实时行情foritinidx_list[:5]:# 先取前 5 个演示dmit.get(dm,)if.notindm:continuecode,marketdm.split(.,1)rtfetch_index_realtime(code,market)ifrt:rt[dm]dm save_index_realtime(rt)print(f{dm}{it.get(mc)}最新价{rt.get(p)}涨跌幅{rt.get(pc)}档位{strength_tag(rt.get(pc))})五、关键业务说明代码后缀别丢指数代码带市场后缀.SH/.SZ实时接口路径要拆成code.market再拼和股票接口一致。证书即鉴权所有接口路径末尾带LICENCE免费版每天有调用上限批量拉列表后建议缓存实时行情再逐个请求。落库主键实时表用(dm, t)复合主键重复写入自动覆盖方便定时刷新。六、拓展练习把index_list全量落库去掉[:5]限制统计各交易所指数数量。用pc计算全市场「强/弱」指数占比做一个简单的市场情绪温度计。把实时拉取改成定时任务如每 3 秒一次观察t字段刷新频率。下篇预告A股量化数据工程从 REST 接口到策略信号第 2 篇指数分时数据解析与清洗下一篇用hsindex/latest与hsindex/history拉取指数分时数据讲解缺值补齐、按时间排序与分时 MA 回填把「列表 实时」升级成「分时序列」。免责申明本篇全部代码、接口调用仅作为量化编程学习演示仅为数据演示不构成投资建议。市场有风险投资需谨慎。