如何用choice的api接口获取实时行情数据

企业微信

为什么需要实时行情数据

做股票短线、期货日内交易,行情延迟一秒就可能错过最佳买卖点。Choice 作为国内主流金融终端,提供了 API 接口让程序直接拉取数据。很多人第一次接触 Choice API 时,会被订阅、回调这些概念绕晕。这篇文章用大白话拆解怎么用 Choice 的 API 拿到实时行情,股票和期货都覆盖到,最后附上能直接跑的代码。

先搞清楚 Choice API 的两种模式

Choice 的实时行情接口分为两种:快照模式和订阅推送模式。

快照模式就像拍照,你调一次接口,它返回当前时刻的行情切片。适合低频策略,比如每分钟检查一次持仓。缺点是数据不是连续流,高频交易用不了。

如何用choice的api接口获取实时行情数据

订阅推送模式才是真正的实时行情。你告诉 Choice 要订阅哪些股票或期货合约,它就会在行情变化时主动把数据推给你。这就像你关注了某个主播,他一开播你就收到通知。期货 tick 级数据必须用这种方式。

准备工作 三件事必须提前做

申请 API 权限

Choice 的 API 不是默认开放的。你需要联系客户经理开通量化接口权限,拿到账号密码和服务器地址。个人用户通常需要购买相应套餐,机构用户权限更全。没有权限的话,后面代码写得再漂亮也跑不通。

安装 Python 环境

Choice API 支持多种语言,Python 最方便。推荐 Python 3.7 以上版本。安装官方提供的 ctypes 或 comtypes 包,通常随终端安装包一起提供。确认终端已经登录,并且 API 服务处于开启状态。

理解异步回调

订阅推送是异步的。你发起订阅请求后,程序不会停在那里等,而是继续往下走。行情来了,Choice 会调用你事先写好的回调函数。这个回调函数里写什么,决定了你怎么处理数据。把处理逻辑写得太重,比如回调里做复杂计算,会卡住整个推送通道。正确做法是回调里只存数据,另开线程处理。

股票实时行情获取实战

下面代码演示订阅两只股票的实时行情。注意 API 的具体函数名可能随版本更新,以官方文档为准。


from ChoiceAPI import ChoiceQuote

import time

# 初始化连接

quote = ChoiceQuote()

quote.login(username='你的账号', password='你的密码')

# 定义回调函数

def on_stock_quote(data):

    # data 包含股票代码、最新价、买卖盘、成交量等

    print(f"股票 {data['code']} 最新价 {data['last']} 成交量 {data['volume']}")

# 订阅股票

quote.subscribe_stock(

    codes=['600519.SH', '000001.SZ'],

    callback=on_stock_quote

)

# 保持主线程运行

while True:

    time.sleep(1)

运行后,只要贵州茅台和平安银行有行情变化,回调函数就会打印最新价格。股票行情通常是 3 秒一个快照,不是逐笔推送,这点和期货不同。

期货实时行情获取实战

期货是 tick 级推送,每笔成交都会触发回调。代码结构类似,但订阅函数不同。


from ChoiceAPI import ChoiceQuote

import time

quote = ChoiceQuote()

quote.login(username='你的账号', password='你的密码')

def on_future_tick(data):

    # data 包含合约、最新价、买卖一档、现手、持仓量等

    print(f"期货 {data['code']} 最新价 {data['last']} 现手 {data['volume']} 持仓 {data['open_interest']}")

# 订阅期货合约

quote.subscribe_future(

    codes=['IF2312.CFE', 'AU2312.SHF'],

    callback=on_future_tick

)

while True:

    time.sleep(1)

IF 是沪深300股指期货,AU 是黄金期货。期货行情变化极快,回调函数里只做数据入队或写内存,不要直接写数据库。

常见坑与避坑指南

权限不足导致订阅失败

如果代码没报错但收不到数据,先检查账号是否有实时行情权限。很多套餐只包含历史数据,实时行情需要额外开通。

回调阻塞

回调函数里做耗时操作,比如网络请求或复杂计算,会导致后续行情积压甚至丢失。务必用生产者消费者模式,回调只负责把数据放进队列,另一个线程从队列取出处理。

频繁重连

网络波动时 Choice API 可能断开。需要实现自动重连逻辑:捕获异常后等待几秒重新登录并重新订阅。重连后要重新订阅所有合约,因为断线期间订阅关系会失效。

行情时间戳对齐

股票和期货的行情时间戳精度不同。股票是毫秒级,期货是微秒级。做跨品种策略时,注意统一时间基准,否则回测和实盘会对不上。

从实时行情到交易信号

拿到实时行情只是第一步。接下来要计算指标、生成信号、发送委托。建议把行情模块和交易模块分开,行情模块只负责稳定接收数据,交易模块订阅行情模块的输出。这样任何一方升级都不会影响另一方。

对于期货高频策略,还要考虑 tick 数据的存储。每天一个合约的 tick 数据可能上百万条,用内存数据库如 Redis 暂存,收盘后再落地到磁盘。

Choice API 的实时行情功能足够强大,关键是理解订阅推送模型,处理好异步回调。把上面的代码跑通,再根据自己策略调整订阅列表和处理逻辑,就能搭建起一个可用的实时行情系统。

转载请注明出处:https://www.lianghuajiaoyi.top/wenzhang/Choice-_-API-932.html