
【别再到处找免费股票数据API了官方204个接口32篇一次讲透 #09】MACD_KDJ还要自己算4大技术指标一次拿系列别再到处找免费股票数据API了官方204个接口32篇一次讲透连载项目 · 纯 GET 取数 · 仅依赖 requests适用想做技术面选股 / 指标共振但还在 pandas 里手搓 EMA、算 MACD 算到怀疑人生的读者数据由官方公开接口提供。本篇给沪深A股「MACD / MA / BOLL / KDJ」4 个技术指标的端点地图、一次取全的代码、周期参数与字段结构的坑全部只依赖 requests所有示例均为演示数据不构成投资建议。1. 你将得到什么读完这一篇你能拿走四样东西一张分组地图4 个技术指标端点按「趋势 / 均线 / 通道 / 摆动」分成 4 类一次取全的代码/hs/history/macd拿 MACD/hs/history/kdj拿 KDJ周期参数的取法技术指标支持日 / 周 / 月要传period三个真实踩坑点都是第一次用几乎一定会踩的。代码全部自包含复制进.py直接能跑不依赖 numpy / pandas。2. 本篇取数约定全部接口都是GET query 参数token 放在查询串里?tokenxxx统一基址https://api.zhituapi.com代码块里的你的token是占位符换成你的 token 即可所有接口路径均取自官方已验证文档跨篇零重复。3. 4 个端点分 4 类先建立地图。技术指标类一共 4 个端点按用途分类端点用途更新频率趋势/hs/history/macdMACDDIF / DEA / MACD 柱每日盘后均线/hs/history/ma移动平均MA5 / MA10 / MA20 / MA60每日盘后通道/hs/history/boll布林带上轨 / 中轨 / 下轨每日盘后摆动/hs/history/kdjKDJK / D / J每日盘后4. 核心模板函数importrequests,time BASEhttps://api.zhituapi.comTOKEN你的tokendef_hit_key(d,*cands,defaultNone):ifnotisinstance(d,dict):returndefaultforcincands:ifcindandd[c]notin(None,,-,null):returnd[c]low{str(k).lower():vfork,vind.items()}forcincands:vlow.get(str(c).lower())ifvnotin(None,,-,null):returnvreturndefaultdef_to_float(v,defaultNone):try:ifvin(None,,-,null,None):returndefaultreturnfloat(v)except(TypeError,ValueError):returndefaultdef_get(path,paramsNone,timeout10,retries2,backoff0.6,defaultNone):q{token:TOKEN}ifparams:q.update(params)lastforiinrange(retries1):try:rrequests.get(BASEpath,paramsq,timeouttimeout)ifr.status_code200:try:returnr.json()exceptValueError:returndefault lastHTTP %s %s%(r.status_code,(r.textor).strip()[:80])exceptExceptionase:last%s: %s%(type(e).__name__,e)ifiretries:time.sleep(backoff*(i1))return{_error:last}# ---------- 封装均需 code period----------deffetch_macd(code,periodday):return_get(/hs/history/macd,{code:code,period:period},default[])deffetch_ma(code,periodday):return_get(/hs/history/ma,{code:code,period:period},default[])deffetch_boll(code,periodday):return_get(/hs/history/boll,{code:code,period:period},default[])deffetch_kdj(code,periodday):return_get(/hs/history/kdj,{code:code,period:period},default[])# ---------- 最新一日 MACD 三值 ----------deflatest_macd(code,periodday):rowsfetch_macd(code,period)ifisinstance(rows,dict)and_errorinrows:returnNone,rows[_error]row(rowsor[{}])[-1]return{dif:_to_float(_hit_key(row,dif,macd_dif,defaultNone)),dea:_to_float(_hit_key(row,dea,macd_dea,defaultNone)),macd:_to_float(_hit_key(row,macd,macd_bar,defaultNone)),},None# ---------- 校验 ----------defrun_check():fake[{dif:0.12,dea:0.08,macd:0.08}]_origfetch_macd fetch_macdlambdac,pday:fake m,errlatest_macd(000001.SZ)fetch_macd_origasserterrisNoneandm[dif]0.12andm[macd]0.08# 周线也能取assertfetch_kdj(000001.SZ,week)isnotNoneprint(校验通过)if__name____main__:run_check()print(-*62)code000001.SZforname,fnin[(MACD,lambda:fetch_macd(code)),(MA,lambda:fetch_ma(code)),(BOLL,lambda:fetch_boll(code)),(KDJ,lambda:fetch_kdj(code))]:datafn()ifisinstance(data,dict)and_errorindata:print(%-8s - %s%(name,data[_error][:60]))else:print(%-8s - %d 条%(name,len(data)ifisinstance(data,list)else1))5. 跑通示例把上面的代码复制到本地填入你的 token 即可直接运行传入代码latest_macd取最新一日的 DIF / DEA / MACD 柱4 个技术指标接口一次取全各字段含义见前文各小节。6. 坑与注意事项坑 1技术指标要传period日 / 周 / 月口径不同。4 个接口都支持periodday/week/month不传默认日线。周线 MACD 和日线 MACD 金叉位置完全不同做中长期策略别误用日线做短线别误用周线参数传错信号会整反。坑 2MACD 返回三列别只拿一列。/hs/history/macd返回dif/dea/macd柱三列金叉看 DIF 上穿 DEA、柱体看macd。做共振别只存macd一列否则金叉死叉判断不了。坑 3指标是盘后算好的盘中是前一交易日值。这 4 个技术指标都是每日盘后基于收盘序列计算盘中调用拿到的是上一交易日的值不是实时更新。做盘中指标信号要等收盘后重算别在盘中拿它当实时触发。7. 小结与下篇预告本篇把沪深A股 4 个技术指标端点分成 4 类latest_macd一行取 DIF / DEA / MACD 柱_to_float处理指标数值。下一篇《【别再到处找免费股票数据API了官方204个接口32篇一次讲透 #10】财务报表三表去哪下8个接口资产负债表·利润表·现金流一次取》用/hs/fin一组接口把资产负债表 / 利润表 / 现金流量表 / 财务指标一次取全。8. 免责声明本文仅演示沪深A股技术指标数据的取数方法所有代码示例均为演示数据未含任何真实行情数值不构成投资建议亦不承诺收益。