news 2026/8/19 1:33:08

如何用 easyquotation 新浪行情接口免费获取实时行情:200 毫秒全市场快照实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
如何用 easyquotation 新浪行情接口免费获取实时行情:200 毫秒全市场快照实战

如何用 easyquotation 新浪行情接口免费获取实时行情:200 毫秒全市场快照实战

【免费下载链接】easyquotation实时获取免费股票行情,支持新浪 / 腾讯(港股) / 集思录项目地址: https://gitcode.com/gh_mirrors/ea/easyquotation

easyquotation 新浪行情接口是一个面向 Python 开发者的免费实时行情数据方案:不需要申请 token、不需要付费订阅,几行代码就能拿到沪深京全市场的行情快照。它适合两类人——想自建盯盘或行情监控工具的普通开发者,以及需要稳定免费数据源来支撑策略的量化爱好者。本文将带你从零跑通第一个请求,再逐步解锁批量获取、指数混查、代码库自动更新等进阶能力。

一、为什么自己抓行情总踩坑:先看一个真实场景

你有没有这样的经历:收盘后想复盘某只股票的关键价位,才发现当时忘了记录,只能翻行情软件的历史界面。于是你想写个小程序自动盯盘,让电脑替你记录和提醒。

真动手时问题就来了:

  • 商业行情接口要注册、要审核、要按年付费,个人用不划算;
  • 免费的公开接口文档零散,返回的文本格式要靠正则硬啃;
  • 自选股一多,逐只请求又慢又不稳定。

手动盯盘太累,付费数据源太贵,裸调接口太麻烦——这就是 easyquotation 要解决的中间地带。它把新浪财经的免费行情接口封装成了几个直观的方法,你只需要关心"要哪只股票",至于市场前缀、请求拼接、响应解析,统统交给库来处理。

二、三步完成安装,跑通第一个新浪行情请求

安装非常简单,依赖只有requests一个包,对 Python 3.6+ 都友好:

pip install easyquotation

想从源码运行也可以:git clone https://gitcode.com/gh_mirrors/ea/easyquotation后在项目目录执行pip install -e .,两种方式效果一致。

装好后,运行下面这段最短的代码:

import easyquotation quotation = easyquotation.use('sina') # 选择新浪行情接口 data = quotation.real('000001') # 查询平安银行 print(data)

这段代码在做三件事:加载新浪接口、建立会话、请求指定股票并解析成字典。你会得到一个字段相当齐全的行情对象,包含名称、现价、今开、昨收、最高、最低,以及买一到买五、卖一到卖五的完整五档盘口:

{'name': '平安银行', 'now': 11.28, 'open': 11.20, 'high': 11.35, 'low': 11.15, 'close': 11.18, # close 是昨日收盘价,涨跌幅靠它算 'buy': 11.27, 'sell': 11.28, 'bid1': 11.27, 'bid1_volume': 123400, 'ask1': 11.28, 'ask1_volume': 56700, 'turnover': 4852300, 'volume': 54821000.0, # 股数 / 金额 'date': '2026-08-18', 'time': '14:30:00'}

到这里,你的第一个实时行情就拿到了。整个过程 10 秒以内,值得留意的是:real()的参数必须是字符串,写成数字000001会直接报错,因为库内部依赖字符串前缀来做市场判断。

三、从单只到批量获取股票行情的正确姿势

real()的入参既支持单个字符串,也支持列表,所以批量查询和单只查询的写法几乎一样:

data = quotation.real('162411') # 单只基金 data = quotation.real(['000001', '162411', '600519']) # 多只混查

返回结果是一个以股票代码为键的字典,键的顺序和传入顺序无关,建议用代码去索引而不是依赖顺序。

批量场景下有两个数字值得记住:

  • 单次请求最多 800 只股票,超过的部分会自动分批;
  • 分批后请求通过线程池并发发出,而不是逐只串行等待。

也就是说,你传 50 只和传 500 只,耗时不会线性增长。这正是它适合做全市场快照的原因——见后文第五节。

四、指数与个股混查:prefix 前缀参数的用法

这里有一个新手最容易踩的坑。上证指数代码是000001,平安银行的代码也是000001,六个数字完全一样,怎么区分?

答案是市场前缀sh000001是上证指数,sz000001是平安银行。easyquotation 支持直接传入带前缀的代码:

data = quotation.real(['sh000001', 'sz000001'], prefix=True) print(data.keys()) # dict_keys(['sh000001', 'sz000001'])

注意prefix=True这个参数:它决定返回字典的键是否带市场前缀。如果你同时查指数和同名个股,却忘了传prefix=True,两个000001就会互相覆盖,安静地丢掉一半数据。

反过来,如果只查个股,prefix保持默认的False即可,返回的键就是纯六位代码,处理起来更清爽。规则一句话总结:混查指数和个股时务必prefix=True,只查个股时随意。

五、全市场行情快照:200 毫秒背后的设计思路

很多场景需要的不是一两只股票,而是整个市场。此时用market_snapshot()

all_data = quotation.market_snapshot(prefix=True) print(len(all_data)) # 数千只股票

这一下会返回 A 股全市场的实时行情。网络正常时,整个流程只需要200 多毫秒——这个数字不是夸大,它的来源是库内的几个设计决策:

  • 初始化即加载代码表use('sina')时会读取内置的stock_codes.conf,一次性生成好带前缀的代码清单,后续请求零准备时间;
  • 代码拼接代替逐只请求:800 只以内的一次 HTTP 请求里塞进全部代码,把请求次数压到最少;
  • 线程池并发:超过 800 只时自动切分,多个分片并行拉取,再把结果合并;
  • 会话复用:底层使用requests.Session,连接被反复利用,省掉重复握手的开销。

理解了这套设计,你就知道为什么同样是免费接口,easyquotation 用起来明显更跟手。需要提醒的是:免费接口没有 SLA,请把轮询频率控制在 3 秒以上,避免对上游造成压力;遇到休市时段,返回的数据可能为空或缺失,代码里记得做空值判断。

六、股票代码库自动更新:跟上新股上市的节奏

新股不断上市、老股偶尔更名,内置的代码表(stock_codes.conf)会随时间慢慢过时。如果你发现全市场快照里少了新上市的股票,只需要一行代码更新:

import easyquotation easyquotation.update_stock_codes()

它会从远端拉取最新的代码表并写回本地文件,之后新建的quotation实例就会包含新代码。如果你只想在程序运行时临时拿一份最新列表,而不落盘,可以这样:

from easyquotation import get_stock_codes codes = get_stock_codes(realtime=True) # 强制联网获取

建议把更新动作做成每周一次的计划任务,成本极低,却能避免"新股缺席"这类隐蔽的数据问题。

七、新浪行情接口避坑清单与常见问题

把最容易出问题的地方集中列出来,遇到报错时先对照一遍:

  • 代码必须是字符串real(1)会断言失败,要写real('000001')
  • 市场前缀是自动判断的43/83/87/92开头归北交所,5/6/7/9/110/113/118/132/204开头归上交所,其余默认深交所。你也可以直接传sh600000手动指定,优先级更高;
  • prefix的语义别搞反:它控制返回键带不带前缀,不是控制请求带不带前缀;
  • 旧接口已弃用allall_marketstocks都会触发弃用警告,统一改用real()market_snapshot()
  • 裸调新浪接口可能被拒:接口校验Referer请求头,库已经帮你处理好了,不建议绕过库自行拼接;
  • close是昨日收盘价:别拿它当"今天的收盘价"用,涨跌幅要靠(now - close) / close计算;
  • 数据为空先别怀疑代码:先确认是否休市、停牌,或者代码是否带错了市场前缀。

八、立刻能落地的三个使用场景

  • 自建盯盘提醒:定时调用real()扫描自选股,价格突破阈值时通过企业微信或邮件通知自己,摆脱手动盯盘;
  • 量化策略的数据源:用market_snapshot(prefix=True)定期抓全市场快照落库,作为选股策略的输入,配合get_stock_codes(realtime=True)保持标的池新鲜;
  • 教学与数据分析:在课堂演示中 200 毫秒拉一份全市场快照,比截图生动得多;也可以定时采集存档,做成交分布、波动率之类的统计研究。

动手:30 秒拿到你的第一份行情

现在打开编辑器,把第二节那段代码原样贴进去跑一遍,30 秒内你就能看到第一份带五档盘口的实时行情。跑通之后,试着把real('000001')换成market_snapshot(prefix=True),感受一下全市场快照的速度,再对照第七节的避坑清单排查可能遇到的问题。数据源有了,剩下的就是你自己的想象力了。

【免费下载链接】easyquotation实时获取免费股票行情,支持新浪 / 腾讯(港股) / 集思录项目地址: https://gitcode.com/gh_mirrors/ea/easyquotation

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/19 1:32:06

RT-Thread启动流程深度解析:从复位到多任务调度的完整实现

1. 从按下复位键到第一个任务运行:RT-Thread启动全景图很多刚接触RT-Thread的朋友,在成功点亮第一个LED后,往往会好奇:从芯片上电复位,到我的main函数开始执行,这中间到底发生了什么?系统是如何…

作者头像 李华
网站建设 2026/8/19 1:31:57

GMSL2摄像头与AI计算平台连接方案:V-Link硬件设计与软件集成实战

1. 项目概述:V-Link是什么,以及它要解决的核心痛点最近在做一个车载视觉感知相关的项目,客户指定要用GMSL2接口的摄像头,而且要支持多路。说实话,一开始听到这个需求,头都大了。GMSL2(Gigabit M…

作者头像 李华
网站建设 2026/8/19 1:31:02

跳一跳刷分不再靠手速:wxgameHacker 原理拆解与三步上手指南

跳一跳刷分不再靠手速:wxgameHacker 原理拆解与三步上手指南 【免费下载链接】wxgameHacker 微信小程序游戏 跳一跳刷分 项目地址: https://gitcode.com/gh_mirrors/wx/wxgameHacker 深夜里你第 37 次刷新《跳一跳》排行榜,看着好友列表里那些三…

作者头像 李华
网站建设 2026/8/19 1:29:40

Linux下USB4/雷电接口实现20Gbps主机直连与集群组网实战

在传统数据中心和云原生环境中,服务器集群通常依赖万兆(10GbE)或更高速率的以太网交换机进行互联。然而,对于开发者、极客或小型工作室而言,动辄数千元的专用交换设备是一笔不小的开销,且部署不够灵活。近年…

作者头像 李华
网站建设 2026/8/19 1:26:07

自然语言评测,先搭一个可核对的最小闭环

自然语言评测,先搭一个可核对的最小闭环本文围绕“从最小可用方案搭起”整理检查要点。示例仅用于说明方法;请以公开、合成或已脱敏输入复跑。1. 先固定讨论边界 NLP 评测要先定义任务边界、样本来源、分词或编码版本及度量计算方式。样本仅使用公开、合…

作者头像 李华