四步快速缩小故障范围
按依赖层级从外向内逐层验证,避免对无效凭证进行盲目重试导致套餐限流。
状态码与业务码定位
区分鉴权失败与频率限制
先检查 HTTP 状态码与响应体中 ret。401 为 Token 错误或未授权,429/605 为调用频率超限。请勿对 401 凭证错误进行无限重试。
凭证完整度核验
确认 Token 与环境变量
核对代码中读取的 Token 是否为空、首尾是否有多余空格或换行,确认本地环境与生产服务器的环境变量均已正确加载。
接口与市场类型匹配
核实服务地址与标的格式
股票数据必须使用 quote-stock-b-api(如 700.HK, AAPL.US);外汇与贵金属使用 quote-b-api(如 EURUSD)。地址与标的不匹配将直接报错。
交易时段与长连接心跳
排除休市无成交与超时断开
各市场交易所休市与午间停盘期间无成交数据推送。WebSocket 连接需定时发送心跳包(cmd_id: 22000),并在自动重连后重新发起订阅。
常见问题排查指南
深入各个技术维度的详细成因分析、生产排查步骤与完整可执行代码。
行情 API 鉴权失败与限流如何排查
按“HTTP 状态 → 业务返回码 → Token → 频率”的顺序排查行情 API 鉴权失败与限流问题,附带退避重试代码。
排查重点:
- 按“HTTP 状态 → 业务返回码 → Token → 频率”四级判断
- 附带带随机抖动的 Python 指数退避重试(Exponential Backoff)实现
- 多标的单次批量合并查询(symbol_list)降低 80% 请求频次
WebSocket 已连接但没有数据怎么办
WebSocket 连接成功却收不到行情时,按订阅消息、代码格式、交易时段、心跳和权限五个方面逐项排查。
排查重点:
- 排查订阅报文(cmd_id: 22004)格式与服务端接收应答
- 交易所交易时段、夏令时与午间停盘状态核实
- 全天活跃品种(外汇 EURUSD)5 行代码最小可用连通性验证
美股行情的时间戳与交易时段怎么处理
处理美股行情时间的正确方式:统一保存 UTC,按美东时区展示,正确应对夏令时切换与盘前盘后时段。
排查重点:
- 13 位毫秒级与 10 位秒级时间戳的自动识别与单位归一化
- 美股夏令时(北京时间 21:30)与冬令时(22:30)开盘对照表
- 防止美股跨午夜交易导致单交易日 K 线被错误切分为两天
常见错误码与现象速查表
遇到报错或异常时,对照下方表格快速定位可能原因并采取对应措施。
| 状态 / 错误码 | 常见现象 | 最可能成因 | 排查与修复方法 | 对应指南 |
|---|---|---|---|---|
ret: 401 / HTTP 401 | token invalid (鉴权失败) | Token 未传、格式不正确、已过期,或首尾含多余空格换行 | 打印 Token 长度与首尾字符核验;在 AllTick 控制台确认 Token 状态与可用市场 | 鉴权排查指南 |
ret: 429 / 605 | Too Many Requests (频率超限) | 超过套餐规定的每秒或每分钟请求频次上限,或多进程共享同一 Token 叠加频率 | 加入指数退避重试(Exponential Backoff);合并多个单品种为单个批量请求 | 限流排查指南 |
ret: 600 | code invalid (标的代码无效) | 标的代码拼写错误、后缀缺失,或使用了错误的接口路径(如用外汇接口查股票) | 仔细核对接口文档:股票走 quote-stock-b-api,外汇走 quote-b-api;检查品种列表 | 代码格式核对 |
ret: 603 / 604 | level not enough / unauthorized | 单次请求标的数或 K 线根数超出当前套餐配额,或 Token 无该标的访问权限 | 核对套餐单次批量查询上限;在官网控制台确认已开通对应市场权限 | 配额说明 |
ret: 606 | Connection will be closed | WebSocket 连接数超过套餐上限,或同一连接内多个请求发送间隔小于 1~3 秒 | 控制并发连接数在套餐额度内;在长连接请求间增加至少 1 秒延时 | WebSocket 限制 |
ret: 400 / 402 | param invalid / query invalid | 请求 JSON 缺少 trace 追踪 ID,或 GET 请求中的 query 参数未进行标准 URL 编码 | 确认 query 为合规 JSON 字符串并进行 urlencode 编码,确保 trace 与 data 结构完整 | 参数规范 |
WS 连接成功但无推送 | No Push Data (无成交推送) | 未成功发送订阅报文(cmd_id: 22004)、品种处于休市时段,或未收到订阅应答 | 检查订阅报文格式及 seq_id 应答;工作日可临时改用外汇 EURUSD 自检通道验证 | WebSocket 排查 |
时间解析为 1970 年 | Timestamp Parsing Error | AllTick 的 tick_time 为 13 位毫秒时间戳,被按 10 位秒级时间戳解析 | 判断时间戳长度:若大于 10^12 则除以 1000 转换为秒,统一存储为 UTC 后再按时区展示 | 时间戳处理指南 |
5 行代码快速验证接口连通性
在本地或部署服务器运行此脚本,排除复杂业务代码干扰,直接验证 Token 有效性与网络延迟。
# AllTick Connectivity Self-Check
import os
import requests
API_TOKEN = os.getenv("ALLTICK_API_TOKEN", "YOUR_TOKEN_HERE")
BASE_URL = "https://quote.alltick.co/quote-stock-b-api/trade-tick"
params = {
"token": API_TOKEN,
"query": '{"trace":"diagnose-1","data":{"symbol_list":[{"code":"700.HK"}]}}'
}
response = requests.get(BASE_URL, params=params, timeout=5)
print(f"HTTP Status: {response.status_code}")
print(f"Response Body: {response.text}"){
"ret": 200,
"msg": "ok",
"trace": "diagnose-1",
"data": {
"tick_list": [
{
"code": "700.HK",
"price": "398.20",
"tick_time": "1712648400000"
}
]
}
}自行排查后仍未解决?
若按上述步骤排查后仍存在异常,请带上下列脱敏日志联系 AllTick 技术支持团队。官方技术工程师将在第一时间协助分析定位:
- 完整的请求接口地址(隐去 Token)
- 服务端返回的完整 HTTP 状态码与 JSON
- 发生报错的精确 UTC 时间与持续时长
- 使用的编程语言、第三方库及具体版本
准备好在生产环境中接入稳定行情了吗?
AllTick 提供覆盖美股、港股、外汇与大宗商品的毫秒级行情流,提供 99.95% 可用性保障与专业售后支持。