☰
沪深港通数据实战:从北向资金到择时信号的全链路量化(第 9 篇):沪、深股通历史数据:长期资金进出回溯
2026/10/1 19:47:53 网站建设 项目流程

沪深港通数据实战:从北向资金到择时信号的全链路量化(第 9 篇):沪、深股通历史数据:长期资金进出回溯

一、前言

第 1、2 篇看的是北向整体的「走势」,本篇下沉到沪股通、深股通各自的长期逐日资金流水,接入ht/nbzj/hgls(沪股通历史)与ht/nbzj/shls(深股通历史)。把长期数据落库后,可计算累计净买入拐点、回溯北向大进大出的时点,为第 11 篇综合择时提供长周期因子。

二、接口与字段

2.1 沪股通历史数据/ht/nbzj/hgls

字段含义(按官方字段名推断)
t日期
jme / mr / mc净买入额 / 买入额 / 卖出额
lj累计值
drlr / drye当日流入 / 当日余额
lzgdm / lzgmc / lzgzdf领涨股代码 / 名称 / 涨跌幅
zs / zszdf只数 / 总市值涨跌幅

2.2 深股通历史数据/ht/nbzj/shls

字段与hgls完全一致(12 个)。

三、自研衍生指标

  1. 累计净买入曲线:jme.cumsum(),观察沪/深股通长期加仓节奏。
  2. 大进大出回溯:jme绝对值创新高或连续为负的时段标记。
  3. 领涨股跟踪:提取lzgmc / lzgzdf,看北向重仓周期里谁领涨。

四、数据表设计

CREATETABLEht_hgls(tTEXT,jmeTEXT,mrTEXT,mcTEXT,ljTEXT,drlrTEXT,dryeTEXT,lzgdmTEXT,lzgmcTEXT,lzgzdfTEXT,zsTEXT,zszdfTEXT);-- ht_shls 同构

五、完整代码

importurllib.request,json,sqlite3,time,loggingimportpandasaspd LICENCE="YOUR_LICENCE_HERE"DB_PATH="quant.db"LOG_FILE="season4_article9.log"BASE="https://api.biyingapi.com"logging.basicConfig(filename=LOG_FILE,level=logging.INFO,format="%(asctime)s %(levelname)s %(message)s")HIST_COLS=["t","jme","mr","mc","lj","drlr","drye","lzgdm","lzgmc","lzgzdf","zs","zszdf"]defbiying_api_get_retry(url,timeout=15,max_retry=3):last=Noneforiinrange(max_retry):try:req=urllib.request.Request(url,headers={"User-Agent":"Mozilla/5.0"})withurllib.request.urlopen(req,timeout=timeout)asresp:returnjson.loads(resp.read().decode("utf-8"))exceptExceptionase:last=e logging.warning("retry %d/%d %s %s",i+1,max_retry,url,e)time.sleep(1)logging.error("api failed %s %s",url,last)returnNonedef_as_list(data):returndataifisinstance(data,list)else[data]defsave_hist(name,path):url=f"{BASE}/ht/nbzj/{path}/{LICENCE}"data=biying_api_get_retry(url)ifnotdata:returnrows=_as_list(data)conn=sqlite3.connect(DB_PATH)coldef=",".join(f"{c}TEXT"forcinHIST_COLS)conn.execute(f"CREATE TABLE IF NOT EXISTS{name}({coldef})")ph=",".join("?"*len(HIST_COLS))forrinrows:conn.execute(f"INSERT INTO{name}VALUES ({ph})",[r.get(c)forcinHIST_COLS])conn.commit();conn.close()logging.info("%s saved %d rows",name,len(rows))defsave_hgls():save_hist("ht_hgls","hgls")defsave_shls():save_hist("ht_shls","shls")defhist_trend():conn=sqlite3.connect(DB_PATH)fornamein["ht_hgls","ht_shls"]:df=pd.read_sql(f"SELECT t, jme, lzgmc, lzgzdf FROM{name}",conn)ifdf.empty:continuedf["t"]=pd.to_datetime(df["t"])df=df.sort_values("t").reset_index(drop=True)df["jme"]=pd.to_numeric(df["jme"],errors="coerce")df["cum"]=df["jme"].cumsum()print(f"[{name}] 累计净买入末5:")print(df[["t","jme","cum","lzgmc","lzgzdf"]].tail(5).to_string(index=False))conn.close()if__name__=="__main__":save_hgls()save_shls()hist_trend()

六、业务关键点

  • 历史接口是长期序列,jme单位与第 1 篇bxls.bx需保持一致口径才能叠加验证。
  • lj(累计)理论上等于jme.cumsum(),可作为末端交叉校验项。
  • 长周期数据量大,落库建议按日期追加并去重,避免重复写入。

七、拓展练习

  1. 把ht_hgls.jme + ht_shls.jme与第 2 篇ht_bx_trend.bx对齐日期,验证两套口径的累计差。
  2. 用jme符号切换(正/负连续天数)构造「北向长期态度」状态机。
  3. 把lzgmc按周期聚合,找历史上北向重仓阶段反复领涨的标的。

八、下篇预告

下一篇《港股通历史数据:沪、深港股通长期资金》将接入ht/nbzj/ghls与ht/nbzj/gsls,补齐南向(港股通)的长期资金流水,形成「北向 + 南向」长周期对照。

免责申明:文中所有数据处理逻辑仅为编程演示,仅为数据演示,不构成投资建议。市场有风险,投资需谨慎。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询