choice的api接口能在盘中实时获取股票数据吗
摘要:
choice的api接口可以盘中实时获取股票数据,但获取频率和实时性因套餐类型而异。普通用户有延迟,高频交易需额外付费,普通散户手动操作足够。合理设置轮询频率是关键。

Choice API 到底能不能在盘中给你实时股票数据
很多人用 Choice 终端看行情,觉得数据挺快。到了自己写程序想用 API 拉数据,就冒出一个问题:这个接口到底能不能在盘中实时拿到股票数据?
答案分两层。第一层,能。第二层,能到什么程度,取决于你买的套餐和你写代码的方式。
实时行情和“实时”两个字的水分
先掰扯清楚什么叫实时。交易所每三秒推一次快照,这是官方 tick 数据。Choice 作为金融数据服务商,从交易所拿到数据后再分发给终端和 API。这中间有一个传输和处理的延迟。
普通 Choice 用户通过 API 拿到的股票数据,通常是快照数据,延迟从几秒到十几秒不等。如果你买的是 Level-2 高速行情套餐,延迟可以压到毫秒级。但那个价格不是普通散户随便掏的。

一个简单判断方法:打开 Choice 终端,看某只股票的盘口,同时用 API 拉同一只股票的现价。如果两个价格一致或者差一分钱,说明延迟很小。如果差了几毛钱,那就是快照数据有延迟。
API 调用的正确姿势
Choice 的 Python 接口叫 EmQuantAPI。装好之后,初始化、登录、订阅,三步走。想在盘中持续拿数据,不能傻乎乎地写个循环一秒调一次。那样会把接口调崩,或者触发频率限制。
正确的做法是用订阅模式。你告诉接口你要哪些股票,接口主动把数据推给你。
from EmQuantAPI import c
import time
# 登录
login_result = c.start()
# 订阅三只股票
codes = "600519.SH,000001.SZ,300750.SZ"
indicators = "NO,PRICE,NOW" # 股票代码,最新价,现价
c.subscribe(codes, indicators, "push_data_callback")
# 回调函数处理推送数据
def push_data_callback(indicator, code, value):
print(f"{code} 的 {indicator} 是 {value}")
# 保持程序运行
while True:
time.sleep(1)
这段代码的意思是:你订阅之后,Choice 服务器那边一有最新数据就主动推给你。你的程序不用反复问“到了没到了没”,省事也省资源。
有人会问,那我调 csd 或者 css 函数行不行?行,但那是历史数据或者截面数据。csd 是日级序列,css 是某一天的截面。盘中你想拿实时价格,用 csq 或者订阅接口。
为什么你的 API 拿不到实时数据
三个最常见的原因。
第一个,套餐没买对。 Choice 的实时行情接口是单独收费的。你只买了基础数据服务,API 返回的现价可能是延迟十五分钟的数据。代码写得再漂亮也没用。
第二个,调用频率超了。 有些用户用循环一秒钟调十次 csq,接口直接返回空值或者报错。Choice 对免费和低配账户有调用频率限制,一般是每分钟几十次到几百次。想高频拿数据,得用订阅模式,不能硬轮询。
第三个,非交易时段测试。 你在晚上或者周末跑程序,拿到的当然是上一个交易日的收盘价。盘中测试才准。
真正做量化的人怎么用
做股票量化的人,对数据实时性要求高。他们一般不会直接拿 Choice 的 API 做高频策略。Choice 更适合做数据清洗、因子计算、日级回测。盘中实时下单,很多人用 CTP 或者券商自己的交易接口。
期货量化对实时性要求更高。Choice 也有期货数据,但同样分延迟套餐和实时套餐。做期货日内策略的人,会同时接多家数据源做交叉验证。Choice 是其中一家,但不是唯一一家。
普通散户用 Choice API 做什么?监控持仓股票的价格异动。比如你持有五只股票,写个脚本每十秒拉一次现价,跌破某个价位就发微信提醒。这个场景下,几秒的延迟完全能接受。
一个测试实时性的小脚本
from EmQuantAPI import c
import time
c.start()
while True:
data = c.csq("600519.SH", "PRICE,NOW")
print(f"时间 {time.strftime('%H:%M:%S')} 最新价 {data}")
time.sleep(5)
跑这个脚本,同时打开 Choice 终端看贵州茅台的盘口。如果两边价格基本同步,说明你的 API 是实时推送。如果 API 那边明显滞后,检查你的套餐权限。
别被“实时”两个字忽悠了
金融数据行业里,实时是一个相对概念。交易所的实时是毫秒级,数据商的实时是秒级,你手机上的实时是十秒级。做股票和期货,先搞清楚自己的策略需要什么级别的实时性。
日内高频策略,需要毫秒级,Choice 基础 API 满足不了。分钟级波段策略,需要秒级,Choice 高速套餐可以。日级趋势策略,需要分钟级,Choice 普通 API 都够用。
花多少钱办多少事。你花几千块一年买的 API 服务,不可能拿到几十万一年才有的 tick 级数据。理解这个前提,再去写代码,就不会纠结“为什么我的 API 不是真·实时”了。
声明
转载声明:欢迎分享本文,转载请注明出处!
点击复制: