股票代币实时行情接口接入教程:从 REST 查询到 WebSocket 订阅

发布时间:2026/10/3 7:10:21

股票代币实时行情接口接入教程:从 REST 查询到 WebSocket 订阅 2021 年 1 月GameStopGME逼空行情在美股盘后继续发酵。交易所已收盘散户只能盯着隔夜期货猜测走势而持有 GMEUSDT 股票代币的交易者却能在链上继续买卖捕捉盘后的价格发现机会。这就是股票代币的核心价值把传统股票搬到区块链上让它像加密货币一样 24 小时不间断交易。对于想要构建全天候行情监控或交易系统的开发者来说股票代币行情接口是一个值得关注的新数据品类。一、什么是股票代币股票代币Tokenized Stocks是由链上机构发行的、锚定真实上市公司股价的数字资产。每枚代币对应一定比例的真实股票价格在美股交易时段与标的股票高度联动盘后则由链上供需决定。与传统股票行情接口相比股票代币行情有几个显著特点7×24 小时连续交易不受交易所开盘时间限制盘前、盘后、节假日均有成交USDT 计价价格以 USDT 结算无需换汇盘口为一档股票代币的买卖盘口只提供最优一档买一/卖一不同于 A 股、港股的五档或十档覆盖股票 ETF 贵金属除个股外还包括 SPYUSDT标普 500 ETF、QQQUSDT纳斯达克 100 ETF、XAUUSDT现货黄金等二、股票代币品种Infoway API 目前支持64 个股票代币覆盖科技、金融、能源、消费等主要板块同时包含主流 ETF 和贵金属科技股AAPLUSDT苹果、NVDAUSDT英伟达、MSFTUSDT微软、GOOGLUSDT谷歌、METAUSDTMeta、TSLAUSDT特斯拉、AMDUSDTAMD、INTCUSDT英特尔、QCOMUSDT高通、TSMUSDT台积电、ASML阿斯麦…金融股JPMUSDT摩根大通、BACUSDT美国银行、BRKBUSDT伯克希尔 B 类、COINUSDTCoinbase、HOODUSDTRobinhood…能源 / 消费CVXUSDT雪佛龙、OXYUSDT西方石油、AMZNUSDT亚马逊、COSTUSDT好市多、NFLXUSDTNetflix…ETFSPYUSDT标普 500、QQQUSDT纳斯达克 100、SOXLUSDT三倍做多半导体、EWJUSDTMSCI 日本、EWYUSDTMSCI 韩国贵金属XAUUSDT现货黄金、XAGUSDT现货白银、XCUUSDT现货铜、XPTUSDT铂金、XPDUSDT钯金通过接口获取完整列表importrequests API_KEYyour_api_keyBASE_URLhttps://data.infoway.ioresprequests.get(f{BASE_URL}/common/basic/symbols,headers{apiKey:API_KEY},params{type:CRYPTO})all_symbolsresp.json()[data]# 股票代币的 symbol 均以 USDT 结尾过滤即可token_stocks[sforsinall_symbolsifs[symbol].endswith(USDT)]print(f股票代币品种数量{len(token_stocks)})三、REST API 快速上手股票代币与加密货币共用同一套接口路径businesscrypto即可访问。3.1 实时成交明细defget_token_trades(symbols:list[str])-list[dict]:查询股票代币最新成交明细codes,.join(symbols)resprequests.get(f{BASE_URL}/crypto/batch_trade/{codes},headers{apiKey:API_KEY})resp.raise_for_status()returnresp.json()[data]tradesget_token_trades([TSLAUSDT,NVDAUSDT,AAPLUSDT])fortintrades:direction{0:中性,1:买入,2:卖出}.get(t[td],未知)print(f{t[s]}: 价格{t[p]}USDT 成交量{t[v]}股 方向{direction})注意v字段单位为股票份额数股而非手。v6.251表示成交 6.251 股 AAPL 代币。3.2 实时买卖盘口一档股票代币的盘口只有最优一档返回结构与多档盘口相同但数组长度为 1defget_token_depth(symbols:list[str])-list[dict]:查询股票代币一档买卖盘口codes,.join(symbols)resprequests.get(f{BASE_URL}/crypto/batch_depth/{codes},headers{apiKey:API_KEY})resp.raise_for_status()returnresp.json()[data]depth_listget_token_depth([TSLAUSDT,PDDUSDT])foritemindepth_list:ask_priceitem[a][0][0]# 卖一价ask_volitem[a][1][0]# 卖一量bid_priceitem[b][0][0]# 买一价bid_volitem[b][1][0]# 买一量spreadfloat(ask_price)-float(bid_price)print(f{item[s]}: 卖一{ask_price}({ask_vol}股) 买一{bid_price}({bid_vol}股) 价差{spread:.5f})3.3 K 线数据importtimedefget_token_kline(symbol:str,kline_type:int1,num:int100)-list[dict]: 获取股票代币 K 线 kline_type: 11分钟, 51小时, 8日K resprequests.post(f{BASE_URL}/crypto/v2/batch_kline,headers{apiKey:API_KEY},json{klineType:kline_type,klineNum:num,codes:symbol})resp.raise_for_status()dataresp.json()[data]returndata[0][respList]ifdataelse[]# 获取特斯拉代币最近 50 根 1 小时 K 线klinesget_token_kline(TSLAUSDT,kline_type5,num50)forkinklines[:5]:tstime.strftime(%m-%d %H:%M,time.localtime(int(k[t])))print(f{ts}| O:{k[o]}H:{k[h]}L:{k[l]}C:{k[c]}涨跌:{k[pc]})四、WebSocket 实时订阅含断线重连股票代币使用businesscrypto的 WebSocket 地址wss://data.infoway.io/ws?businesscryptoapikeyYOUR_API_KEY以下是完整 Python 客户端同时订阅 TSLA、NVDA、AAPL 三只代币的成交明细 盘口 1 分钟 K 线importos,asyncio,json,uuid,loggingfromtypingimportOptionalimportwebsocketsfromwebsockets.asyncio.clientimportClientConnectionfromwebsockets.exceptionsimportConnectionClosed logging.basicConfig(levellogging.INFO,format%(asctime)s - %(levelname)s - %(message)s)loggerlogging.getLogger(tokenstock-ws)REQ_TRADE10000REQ_DEPTH10003REQ_KLINE10006REQ_HEARTBEAT10010PUSH_TRADE,PUSH_DEPTH,PUSH_KLINE10002,10005,10008ACK_CODES{10001,10004,10007}SUBSCRIBE_SYMBOLSTSLAUSDT,NVDAUSDT,AAPLUSDTclassTokenStockWSClient:股票代币行情 WebSocket 客户端指数退避重连def__init__(self,api_key:str):self.ws_urlfwss://data.infoway.io/ws?businesscryptoapikey{api_key}self.ws:Optional[ClientConnection]Noneself.runningTrueself.reconnect_base,self.reconnect_max5,60self.heartbeat_interval30self.heartbeat_task:Optional[asyncio.Task]Noneasyncdef_send(self,msg:dict)-None:awaitself.ws.send(json.dumps(msg))asyncdef_subscribe_all(self)-None:tlambda:str(uuid.uuid4())awaitself._send({code:REQ_TRADE,trace:t(),data:{codes:SUBSCRIBE_SYMBOLS}})awaitself._send({code:REQ_DEPTH,trace:t(),data:{codes:SUBSCRIBE_SYMBOLS}})awaitself._send({code:REQ_KLINE,trace:t(),data:{arr:[{type:1,codes:SUBSCRIBE_SYMBOLS}]}})logger.info(已订阅股票代币%s,SUBSCRIBE_SYMBOLS)def_start_heartbeat(self)-None:self._cancel_heartbeat()asyncdef_loop():try:whileTrue:awaitasyncio.sleep(self.heartbeat_interval)ifself.wsisNoneorself.ws.close_codeisnotNone:breakawaitself._send({code:REQ_HEARTBEAT,trace:str(uuid.uuid4())})except(ConnectionClosed,asyncio.CancelledError):passself.heartbeat_taskasyncio.create_task(_loop())def_cancel_heartbeat(self)-None:ifself.heartbeat_taskandnotself.heartbeat_task.done():self.heartbeat_task.cancel()self.heartbeat_taskNonedef_on_message(self,raw:str)-None:try:msgjson.loads(raw)exceptjson.JSONDecodeError:returncode,datamsg.get(code),msg.get(data,{})ifcodePUSH_TRADE:direction{1:买入,2:卖出}.get(data.get(td),中性)logger.info([成交] %s 价格%s USDT 量%s股 方向%s,data.get(s),data.get(p),data.get(v),direction)elifcodePUSH_DEPTH:# 股票代币只有一档取 [0][0] 即可ask1data[a][0][0]ifdata.get(a)elseN/Abid1data[b][0][0]ifdata.get(b)elseN/Alogger.info([盘口] %s 卖一%s 买一%s,data.get(s),ask1,bid1)elifcodePUSH_KLINE:logger.info([K线] %s 收%s USDT 涨跌%s,data.get(s),data.get(c),data.get(pfr))elifcodeinACK_CODES:logger.info(订阅确认 code%s,code)asyncdef_connect_once(self)-None:asyncwithwebsockets.connect(self.ws_url)asws:self.wsws logger.info(WebSocket 连接成功)awaitself._subscribe_all()self._start_heartbeat()try:asyncformessageinws:self._on_message(message)finally:self._cancel_heartbeat()self.wsNoneasyncdefstart(self)-None:backoffself.reconnect_basewhileself.running:try:awaitself._connect_once()backoffself.reconnect_baseexceptConnectionClosedase:logger.warning(连接关闭: %s,e)exceptExceptionase:logger.error(连接异常: %s,e)ifnotself.running:breaklogger.info(%.0f 秒后重连...,backoff)awaitasyncio.sleep(backoff)backoffmin(backoff*2,self.reconnect_max)asyncdefmain():api_keyos.environ.get(INFOWAY_API_KEY,YOUR_API_KEY)awaitTokenStockWSClient(api_key).start()if__name____main__:try:asyncio.run(main())exceptKeyboardInterrupt:print(退出)五、使用注意事项5.1 盘口只有一档股票代币的深度数据中a卖盘和b买盘数组长度均为1直接取[0][0]即可无需像股票接口那样遍历多档。5.2 美股交易时段 vs 盘后时段的行为差异美股开盘期间北京时间 21:30–04:00夏令时提前 1 小时代币价格与标的股票联动紧密价差极小盘后时段流动性下降价差可能扩大。构建策略时建议用时间段过滤importdatetime,pytzdefis_us_market_open()-bool:判断当前是否处于美股正式交易时段含夏令时自动切换ny_tzpytz.timezone(America/New_York)now_nydatetime.datetime.now(ny_tz)ifnow_ny.weekday()5:# 周末returnFalsemarket_opennow_ny.replace(hour9,minute30,second0,microsecond0)market_closenow_ny.replace(hour16,minute0,second0,microsecond0)returnmarket_opennow_nymarket_close5.3 跨接口联动获取标的公司财报数据股票代币的底层是真实上市公司可通过财报接口查询对应股票的基本面数据Symbol 格式切换回标准股票代码即可defget_underlying_financials(token_symbol:str)-dict:通过代币 Symbol如 TSLAUSDT查询标的股票财务数据tickertoken_symbol.replace(USDT,)# TSLAUSDT → TSLAus_symbolf{ticker}.US# → TSLA.USresprequests.get(f{BASE_URL}/common/basic/financial/statistics,headers{apiKey:API_KEY},params{symbol:us_symbol,type:STOCK_US})resp.raise_for_status()returnresp.json()[data]statsget_underlying_financials(NVDAUSDT)foriteminstats[:3]:print(f{item[itemName]}:{item.get(currentValue)})5.4 ETF 和贵金属代币的特殊性SPYUSDT、QQQUSDT等 ETF 代币没有对应的个股财报接口XAUUSDT黄金、XAGUSDT白银等贵金属代币同样不支持财报查询但可通过/common/batch_trade/获取实时报价逻辑与黄金现货行情一致。
延伸阅读

更多相关文章

2026/10/4 1:33:50

从空间转录组到PCF80:口腔组织研究如何补充蛋白层证据?

空间转录组让研究者能够在组织原位观察基因表达分布,但在口腔组织微环境研究中,转录信号并不能完全替代蛋白证据。免疫检查点分子、细胞表面标志物、MHC分子、基质重塑蛋白和多种功能状态指标,最终都需要在蛋白层面获得验证。PCF80基于80抗体…

2026/10/1 19:53:24

如何5分钟让Zotero拥有智能参考文献管理能力

如何5分钟让Zotero拥有智能参考文献管理能力 【免费下载链接】zotero-reference PDF references add-on for Zotero. 项目地址: https://gitcode.com/gh_mirrors/zo/zotero-reference 你是否曾经在阅读学术论文时,为了查找某个参考文献而反复翻页&#xff1f…

2026/10/4 1:31:06

ADS重装失败排查:从Error 1722到License冲突的完整解决指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:31:06

Matlab双目相机标定实战:从张正友法到工业部署

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:31:06

基于MRAM与PIC单片机的工业数据掉电存储方案设计

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:26:06

LaTeX Beamer幻灯片制作:主题、配色与模板搭建实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 0:01:02

Jev+Agent接管浏览器:browser-use实战与jev-ultrafast性能优化

1. 从“Jev”说起:为什么我要把Agent接进浏览器“Jev”这个词最近在圈子里出现的频率越来越高,很多人第一次听到会以为是某个新模型的名字,其实它更像是一种思路——把Jev模型的能力当作底座,通过Agent的方式去接管浏览器&#xf…

2026/10/4 0:01:02

多智能体集群实战:DeepAgents编排、MCP与A2A协议及Skills体系

1. 从"单兵作战"到"集群协同":多智能体编排到底在解决什么问题如果你最近在折腾 Agent 相关的东西,大概率会有一种感觉:单个 Agent 能做的事情,其实很快就摸到天花板了。你给它一个提示词,挂几个工…

2026/10/4 1:01:05

无源低通滤波器设计实战:从RC到LC,手把手教你避开那些坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 0:01:02

Jev+Agent接管浏览器:browser-use实战与jev-ultrafast性能优化

1. 从“Jev”说起:为什么我要把Agent接进浏览器“Jev”这个词最近在圈子里出现的频率越来越高,很多人第一次听到会以为是某个新模型的名字,其实它更像是一种思路——把Jev模型的能力当作底座,通过Agent的方式去接管浏览器&#xf…

2026/10/4 0:01:02

多智能体集群实战:DeepAgents编排、MCP与A2A协议及Skills体系

1. 从"单兵作战"到"集群协同":多智能体编排到底在解决什么问题如果你最近在折腾 Agent 相关的东西,大概率会有一种感觉:单个 Agent 能做的事情,其实很快就摸到天花板了。你给它一个提示词,挂几个工…

2026/10/4 1:01:05

无源低通滤波器设计实战:从RC到LC,手把手教你避开那些坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑