自选股越来越多,A 股、港股、美股的行情怎么接?

简介: 本文介绍如何用TickDB行情API打造跨市场(A股/港股/美股)自选股看板:支持批量查询、WebSocket实时订阅、全量扫描;结合价格、日内位置、成交额等多维指标筛选,并智能提醒。从几十只到全市场,渐进式构建高效盯盘工具。(239字)

每天看自选股,少不了打开行情页面、翻一遍列表,再点进几只股票看看。二三十只还好;要是 A 股、港股、美股都有关注的公司,名单分在几处,来回切换就有点费劲了。

这时很容易冒出一个小想法:做张自己的看板,把几个市场的自选股放在一起,价格、涨跌幅和成交额一起更新,符合条件时提醒一下。工具能先帮自己省下这些重复操作,就已经有了用处。

下面以 TickDB 的行情接口为例,从小范围自选股聊到全市场扫描,再看看行情接回来以后,怎样变成一条有用的提醒。文中的港股快照和交易日历来自 2026 年 10 月 2 日的实际调用,代码片段演示其中的处理逻辑。

一、从几十只到几百只,行情想更新多快

用着用着,股票池可能就变大了。原本每个市场只关注一小批公司,后来想把 A 股的某个行业、港股的同行公司、美股的相关企业都放进来,合起来就可能有几百只。再往后,还可能想在盘中持续扫某个市场,把原本没在自选里、却出现了关注信号的股票找出来。

同样是“做个选股工具”,要盯多少股票、想多快知道变化,会让行情 API 的接法差很多。

几十只自选股,可能每分钟刷新一次就够了,也可能需要一直盯着某个价格条件。几百只候选股,可以定时重排;需要从市场里不断发现新名字时,才会进一步用到全量行情。把这两个问题想清楚,后面的接法就容易选了。
在这里插入图片描述
少量自选股,先把一批查询跑起来

普通 Ticker REST 可以一次查询多个代码。像 600519.SH、700.HK、AAPL.US 这样的股票,可以放在同一批请求里:

GET /v1/market/ticker?symbols=600519.SH,700.HK,AAPL.US&type=stock
X-API-Key: YOUR_API_KEY

做看板时,几个市场可以共用查询行情、更新最新价和计算筛选条件这套代码。市场和币种仍然各自保留,页面展示时再一起排进列表。

这个接口单次最多查询 50 个代码。只有 30 只自选股时,一条请求就能装下。用户打开页面时查一次,或者隔一段时间刷新,再按自己的条件筛一遍,工具就可以先用起来。

如果想在条件满足时尽快收到提醒,普通 Ticker WebSocket 也能用。一个订阅消息里可以放多个股票代码:

{
   
  "cmd": "subscribe",
  "data": {
   
    "channel": "ticker",
    "symbols": ["600519.SH", "700.HK", "AAPL.US"]
  }
}

接着持续接收行情更新,更新哪只股票,就检查哪只股票的条件。股票只有几十只,也可能有持续盯盘的需求;几百只股票能否一起订阅,则要核对实际的订阅额度。

几百只候选股,一轮要发多少请求

比如在几个市场里按行业或基本面圈出 300 只,每分钟用行情重排一次,按 50 只一批,拆成 6 批请求就可以完成一轮。

只是刷新越快,请求也越密。改成每 10 秒跑一轮,光这一件事就需要每分钟 36 次请求,还得给其他接口调用留点余量。

股票池 每轮请求数 每 60 秒一轮 每 10 秒一轮
30 只 1 1 次/分钟 6 次/分钟
300 只 6 6 次/分钟 36 次/分钟
1,000 只 20 20 次/分钟 120 次/分钟

表里算的是请求数量。一轮实际要花多久,还要看响应时间和限流;要是上一轮还没完成,下一轮又开始了,请求就会越积越多。定时任务可以等这一轮结束,再安排下一轮。

拆分本身不复杂。先去掉重复代码,每批查询完成后,按股票代码保存返回的行情:

def refresh_watchlist(symbols, fetch_ticker):
    symbols = list(dict.fromkeys(symbols))
    latest = {
   }

    for start in range(0, len(symbols), 50):
        batch = symbols[start:start + 50]
        for quote in fetch_ticker(batch):
            latest[quote["symbol"]] = quote

    return latest

这里的 fetch_ticker 是封装好的单批查询函数:检查 HTTP 状态和业务 code,成功后返回 data 数组,失败时抛出错误。这样某一批没查到,调用方能明确知道这一轮没有完成。

得到 latest 后,再按自己的条件排序或筛选。六批行情的时间戳可能不同,页面保留各条数据的更新时间,也方便发现某只股票已经有一阵子没更新了。

如果刷新间隔越调越短,还是达不到自己想要的提醒速度,就可以考虑普通 WebSocket,或者在扫描范围扩大到整个市场时改用全量订阅。

二、想扫描全市场,就把行情留在自己的缓存里

当目标变成盘中一直从某个市场里发现新候选,全量 WebSocket 就更贴近这个需求了。A 股、港股和美股都有各自的全量 Ticker,按关注的市场分别订阅。

比如做港股扫描,订阅消息可以这样写:

{
   
  "cmd": "subscribe",
  "data": {
   
    "universes": ["HK_Stock"],
    "channels": ["ticker"]
  }
}

连接建立时还要协商 permessage-deflate 压缩。全量行情先以数组分批发送市场快照,后续继续发送变化行情,所以收到一个批次后,要逐条处理里面的 Ticker 消息。

工具里保留每只股票的最新状态,哪只股票有更新,就重新看看它是否满足条件。原本没有关注过的公司,也有机会从这里进入候选列表。

在这里插入图片描述
做成跨市场看板时,缓存键可以用“市场+股票代码”。全量样本里的腾讯代码是 700,普通查询用的是 700.HK;两种来源共用一份缓存时,先把代码转换成应用里统一的格式,再放进去。

持续扫描需要数据源提供对应市场的全量访问权限。要是每天只扫描几次,可以用全量 REST:需要时取一批市场数据,跑完规则就结束这一轮。

港股全量快照的请求路径是:

GET /v1/market/ticker/hk-stock
X-API-Key: YOUR_API_KEY
Accept-Encoding: gzip

这次实际调用返回了 3,326 条行情记录。先留下自己关注的品种,再跑一轮筛选条件,看看候选名单里会出现哪些名字。这里数的是行情记录,其中也包含指数等品种,筛选时要按自己的股票池范围处理。

三、同一张看板,几个市场按各自的时间跑

10 月 2 日,我先用交易日历分别查了 A 股和港股当天的安排。两次查询使用同一天,换一下市场参数:

GET /v1/market/trade-days?market=CN&beg_day=20261002&end_day=20261002
GET /v1/market/trade-days?market=HK&beg_day=20261002&end_day=20261002

两次都返回成功,结果是:

市场 trade_days half_trade_days 当天安排
A 股(CN) [] [] 非交易日
港股(HK) ["20261002"] [] 全日交易日

于是这次用港股做行情样本。这个查询放进自己的工具里也很实用:每天准备开始扫描时,先看看各个市场今天有没有交易,再按各自的交易时段安排刷新。

交易日历告诉程序“今天交易”,接下来还要按市场当地时间检查交易时段。A 股、港股、美股分开安排,各自到了扫描时间再开始跑。

休市的市场就暂停盘中扫描和提醒,页面保留最近一次行情,旁边标上更新时间。遇到 A 股和港股的假期安排不同的日子,两边也能各跑各的;美股也按自己的交易日和时段安排。

这样的看板放在一起,用户可以少切几个页面;刷新任务则各自按市场运行。

四、价格之外,再看看日内位置和成交额

同一个跌幅,放回日内行情里看

行情接回来以后,最容易想到的筛选条件就是涨跌幅。动了多少,谁排在前面,一眼就能看懂。但只按涨跌幅排一个榜单,能看到的东西还是少了点。

拿港股全量快照里的腾讯控股来看,下面保留了这条实测记录中与价格、成交有关的字段:

{
   
  "symbol": "700",
  "name": "腾讯控股",
  "last_price": "422.4",
  "open": "422",
  "prev_close": "431",
  "high_24h": "425",
  "low_24h": "420",
  "volume_24h": "9733314",
  "quote_volume_24h": "4115135268.622",
  "price_change_percent_24h": "-2.00",
  "timestamp": 1790912605000
}

数据时间是 2026 年 10 月 2 日 11:43:25,香港/北京时间。最新价 422.4 港元,比昨收的 431 港元跌了约 2%。

单看这个跌幅,容易把注意力都放在“跌了多少”上。再看一眼开盘价,是 422 港元,最新价其实比开盘还高了 0.4 港元;当日最高价是 425,最低价是 420。相对昨收是下跌,相对开盘却略高一点,几个字段放在一起,同一个价格就有了更多可看的背景。

想观察什么 可以用哪些字段 放在看板里的作用
相对上一交易日的变化 last_price、prev_close 看涨跌幅
开盘后的变化 last_price、open 看最新价与开盘价的差距
距离日内高低点的位置 last_price、high_24h、low_24h 区分靠近高点、低点或区间中部的股票
当天交易的活跃程度 volume_24h、quote_volume_24h 把成交背景放在价格旁边
数据停留在哪个时刻 timestamp 显示更新时间,识别陈旧行情

价格以字符串返回时,进入计算前先转换。下面把几个观察值收进一个函数;示例用于价格字段齐全的记录:

from decimal import Decimal

def price_context(quote):
    price = Decimal(quote["last_price"])
    close = Decimal(quote["prev_close"])
    high = Decimal(quote["high_24h"])
    low = Decimal(quote["low_24h"])

    return {
   
        "change_pct": (price / close - 1) * 100 if close else None,
        "gap_to_high": high - price,
        "day_position": (price - low) / (high - low) if high > low else None,
    }

这个样本距日内高点 2.6 港元,在当天高低价区间里的位置约为 48%。如果两只股票都涨了 3%,一只已经离高点较远,另一只还贴着高点,仅看涨幅时很相似,加上这一列之后,就能分开观察了。当日高低价相等时,区间位置先留空,也方便看板继续显示其他信息。

成交额可以给价格变化补充背景

价格在动,交易有没有跟着活跃起来?腾讯这笔行情里的当日累计成交额约为 41.15 亿港元,股票池里可以把成交量、成交额一起摆出来看。

盘中把同一只股票前后两次的累计值留住,还能看这几分钟新增了多少成交量、成交额。假设前五分钟新增成交 2000 万港元,接下来的五分钟新增了 5000 万港元,就能看出最近这段交易更活跃。某只股票刚进入价格筛选条件,又出现这样的变化,就可以把两个现象一起写进提醒里,留给用户进一步判断。

这里相减的是同一交易日的累计值。跨到下一个交易日,累计量额会重新开始,程序也要重新建立比较基线。

成交额还会受到公司体量和交易活跃程度的影响。大公司的成交额高,很常见;一只股票今天成交多,也要和它平时的情况比较。比如上午十点的累计成交额,可以和前几天同一时间放在一起看。历史分钟 K 线积累下来的量额,就能补上这部分背景。

股票池跨了几个市场时,成交额还得看币种。人民币、港元、美元放在同一列里,只排数值大小就容易看错。看板里标明币种,跨市场比较前再统一换算,读起来会清楚些。

如果还想比较不同股票的活跃程度,可以通过综合指标补查量比、换手率;想进一步看资金流向,再参考资金流向指标。先有一个想弄明白的问题,再决定往看板上添哪一列,工具也比较容易保持好用。

五、接上行情以后,把提醒做得安静一点

记住上一次是否满足条件

同一只股票可能连续更新很多次。如果每条行情都重新发提醒,工具很快就会变得吵闹。可以记住这只股票上一次是否满足条件,只在“未满足”变成“满足”时提醒。

下面的函数处理已经解析好的单条行情。rule 是自己设置的判断函数,返回 True 或 False;所需字段暂时不够时返回 None,等数据齐了再判断。

latest = {
   }
matched = {
   }

def should_alert(market, update, rule):
    key = (market, update["symbol"])
    previous = latest.get(key)
    if previous and update["timestamp"] < previous["timestamp"]:
        return False

    current = {
   **(previous or {
   }), **update}
    latest[key] = current
    hit = rule(current)
    if hit is None:
        return False

    old_hit = matched.get(key)
    matched[key] = hit
    return old_hit is False and hit is True

第一条行情先建立基线。同一条件连续满足时保持安静,条件退出后又重新进入,再提醒一次。新的消息补充部分字段时,缓存里已有的其他字段继续保留;较旧的消息则跳过。

重连后重新建立基线

连接断开后,重新订阅会再次收到市场快照。这时把对应市场的行情缓存和命中状态重建一遍,第一条记录仍然先建立基线,避免恢复连接时把快照里的股票都当成新信号。心跳和重连放在连接管理里,判断函数继续负责行情和条件。

提醒的内容也可以更具体一点。例如:这只股票进入了设定的涨幅区间,目前接近日内高点,最近五分钟的成交额也高于前五分钟。用户收到之后,能看出是什么变化引起了提醒,也更容易决定接下来要研究什么。

六、从自己的股票池开始,边用边改

自选股只有几十只,可以围绕熟悉的公司设置提醒;候选池到了几百只,可以把价格、日内位置和成交活跃度放在一起重排;需要扫全市场时,则用全量行情不断发现新名字,再给这些候选补上历史走势和其他指标。

实际接起来,可以沿着这条路径慢慢加东西:先整理自己的股票池和市场信息,用批量快照把看板跑起来;需要持续观察时,再接上订阅;最后把关心的条件和提醒补进去。每一步都有具体的用途,也比较容易检查结果。

用起来以后,还可以把这些提醒留下来,过一阵子再回看。提醒太频繁,就收紧一点条件;某个行业想多看几眼,就加进候选池。个人开发者做自己的看板,研究团队做内部筛选工具,都可以从一个具体的小需求开始,边用边改,慢慢做成顺手的样子。

本文仅介绍行情 API 的应用思路。文中股票、行情样本及筛选条件用于演示,不构成投资建议或任何证券买卖推荐。

数据样本采集于 2026 年 10 月 2 日。

接口文档:docs.tickdb.ai

目录
相关文章
|
2天前
|
人工智能 自然语言处理 数据挖掘
阿里云千问办公企业版购买流程:填写组织名称、管理员手机号、企业邮箱获取组织ID,并下单全流程
千问办公(QwenWork)是阿里推出的AI智能办公平台,支持自然语言驱动的数据分析、PPT生成、视频剪辑、网页搭建等,直接输出可用成果。企业版含席位与积分包(需绑定有效席位),提供完整购买与管理流程。(239字)
39 2
|
1天前
|
人工智能 运维 前端开发
接入多家模型供应商之后,我总结的 7 条铁律
AI 应用接了第二家模型供应商之后,事情就不再是"多加一个接口"那么简单——不是调不通,是钱会算错。这篇讲我们定下来的 7 条规则:幂等键、任务落库时机、备用线路的切换边界、退款、凭据隔离、付款来源固化、密钥不进浏览器。
|
3天前
|
人工智能 开发工具 开发者
首月只卖6份,半年月流水18万:他把音色玄学做成AI查询生意
21岁吉他爱好者用AI一周做出音色参数工具,首月仅售6份,半年后月流水达2.5万美元、服务15万吉他手。全程0广告,靠精准痛点定位+每日垂直内容冷启动。本质是将老师傅隐性经验结构化,验证了“一人公司=杠杆思维,非孤军奋战”。
|
7天前
|
人工智能 JSON 编解码
【2026最新版】ComfyUI本地部署教程,新手也能看懂!
ComfyUI是本地运行的AI绘画工具,采用节点式工作流设计:通过拖拽连接“加载模型”“提示词编码”“采样”“解码”等模块,实现高度可控的文生图。新手推荐使用秋叶整合包,一键启动、内置模型管理与插件安装器,轻松上手。(239字)
|
6天前
|
人工智能 运维 IDE
阿里云Qoder CN最新活动:开通专业版或高级版,首月Credits翻倍,续费加赠1000Credits
本文聚焦阿里云Qoder CN 2026年9月限时Credits加赠活动,面向个人版专业版、高级版、旗舰版月付用户,推出首月额度翻倍、续费/升级额外加赠1000 Qwen专属Credits的双重算力补贴。完整拆解活动时间窗口、适用边界、加赠额度明细与30天生命周期管理规则,帮助符合条件的用户在窗口期内完成理性订阅决策,低成本从免费体验向AI生产环境平滑迁移。
|
8天前
|
人工智能 数据挖掘 Linux
千问办公官网入口:qwenwork.cn (一键直达)注册送2000积分,支持免费使用!
千问办公(QwenWork)是阿里云推出的AI智能办公平台,支持网页端免下载即用,也提供Windows/Mac/Linux客户端。新用户注册送2000积分,个人版免费可用,企业版198元/席/月起。阿里千问办公QwenWork官网:https://t.aliyun.com/U/0VCTGt 阿里AI工作平台,一句话完成数据分析、PPT 生成、视频剪辑、网页搭建等复杂任务
743 1
|
7天前
|
人工智能 Linux 开发者
【2026国内使用】Codex安装过程一篇讲透(Win/Mac/Linux全支持)
Codex是OpenAI推出的AI编程智能体,可读取本地项目、理解需求并自动修改代码。支持桌面GUI、命令行(CLI)及VS Code/Cursor插件三种形态,覆盖可视化操作、终端高效开发与编辑器无缝集成场景,助开发者用自然语言驱动编码全流程。(239字)
【2026国内使用】Codex安装过程一篇讲透(Win/Mac/Linux全支持)
|
14天前
|
人工智能 自然语言处理 测试技术
Google 开源 ARTEMIS:AI Agent 如何接管 Android 真机测试?
Google开源的ARTEMIS是一款AI驱动的Android自动化测试框架,支持自然语言指令、跨App长流程操作、多模态控件识别(Accessibility+OCR+视觉模型),原生集成MCP协议,可无缝接入Antigravity等AI编程环境,实现“描述目标→自主规划→真机执行→结果分析”闭环,标志着移动端测试迈向AI Agent时代。
|
22天前
|
缓存 Shell Linux
dsh 更新了版本没变怎么办?DeepSeek Harness 多份安装、PATH 与缓存排查
dsh 更新了版本没变,先分清三层:磁盘上的包、PATH 命中的命令、正在跑的进程。最常见是服务没重启与多份安装;本文给 which -a、npm root -g、hash -r 与缓存、镜像滞后的逐项排查。
206 3
|
2月前
|
JavaScript API 开发工具
DeepSeek Harness 0.1.1-rc.1 发布:我的插件和启动器已完成适配
DeepSeek Harness 发布 0.1.1-rc.1,本文整理官方版本状态,并介绍 dsh-billing、Error Lens、Git Inspect、Provider Probe、Concurrency Meter 与 dsh-launcher 的兼容更新。
DeepSeek Harness 0.1.1-rc.1 发布:我的插件和启动器已完成适配

热门文章

最新文章