
为什么你抓不到真正的实时数据?
很多人兴冲冲装了tushare,想拿实时股票价格,结果发现返回的数据总是慢半拍,甚至直接报错。这不能怪tushare,得先搞清楚它的定位——tushare本质是一个金融数据社区,靠积分制提供数据。免费账户能拿到的所谓“实时”,其实是15分钟延迟的行情。真正逐笔的实时Tick数据,需要升级到付费权限,或者换用其他专门做低延迟推送的接口。
对于做股票和期货的普通人,如果你只是想写个策略回测,或者盯盘时手动看看价格,15分钟延迟完全够用。非要毫秒级响应,那得走券商柜台或者交易所直连,成本不是小数目。
开通与基础准备
先注册tushare账号,拿到token。免费账户有基础积分,可以调用大部分日线、分钟线接口。实时数据接口主要是pro_bar,它支持股票、期货、基金。调用前需要设置token:

import tushare as ts
ts.set_token('你的token')
pro = ts.pro_api()
注意:tushare的免费实时接口有频率限制,每分钟最多调多少次,具体看你的积分等级。频繁请求会被封IP几分钟,别问我是怎么知道的。
用pro_bar抓实时行情
pro_bar的参数里,freq设为'1min'或'5min',asset设为'E'(股票)或'C'(期货)。想要最新一根K线,可以这样:
df = ts.pro_bar(ts_code='000001.SZ', freq='1min', asset='E',
start_date='2025-01-01 09:30:00',
end_date='2025-01-01 15:00:00')
print(df.head())
返回的DataFrame里,trade_time是时间,close是收盘价,vol是成交量。如果你只想要最新价格,可以取df.iloc[0],因为tushare默认按时间倒序排列。
期货类似,把ts_code换成'IF2501.CFX',asset改成'C'。注意期货有夜盘,时间范围要相应调整。
实时数据的坑与替代方案
tushare免费版的实时数据有几个硬伤:
延迟:股票15分钟,期货可能更久。
限频:免费账户每分钟只能调几次,想监控多只股票根本不够。
缺失:集合竞价、盘后固定价格交易等时段可能没数据。
想绕过这些限制,可以组合使用其他免费源。比如新浪财经的实时接口,用requests直接抓hq.sinajs.cn,速度飞快且无延迟,但格式是字符串,需要自己解析。或者用akshare,它封装了多个源,股票期货都能拿,缺点是偶尔不稳定。
对于量化交易,建议分层获取数据:日线用tushare,分钟线用akshare,tick级用付费的CTP接口或券商API。别指望一个免费工具包打天下。
期货实时数据的特殊处理
期货主力合约会换月,直接写死IF2501很快会失效。可以用tushare的fut_mapping接口查主力合约代码,或者用ts_code里的连续合约如IF.CFX,但连续合约的价格是拼接的,不适合实盘。
期货的实时行情包含买卖一档,tushare的pro_bar只给K线,不给盘口。要看盘口得用realtime_quote接口,但那个需要更高积分。普通散户做趋势跟踪,K线足够;做高频套利,必须上盘口数据。
一个简单的实时监控脚本
下面这个脚本每30秒拉一次最新分钟线,打印股票和期货的最新价。注意加time.sleep避免触发限频。
import tushare as ts
import time
ts.set_token('你的token')
pro = ts.pro_api()
codes = ['000001.SZ', '600519.SH', 'IF2501.CFX']
while True:
for code in codes:
try:
df = ts.pro_bar(ts_code=code, freq='1min', asset='E' if code.endswith(('SZ','SH')) else 'C')
if not df.empty:
latest = df.iloc[0]
print(f"{code} 最新价 {latest['close']} 时间 {latest['trade_time']}")
except Exception as e:
print(f"{code} 获取失败: {e}")
time.sleep(30)
跑起来后你会发现,免费账户经常报“抱歉,您没有访问该接口的权限”。解决办法是攒积分,或者换用ts.get_realtime_quotes()——这个旧接口反而对免费用户友好,但只支持股票,不支持期货。
做股票日线级别策略,tushare免费版绰绰有余。做期货日内,tushare的延迟会让你错过开平仓点,建议直接上CTP或者买tushare的积分套餐。量化交易的核心不是数据多快,而是策略逻辑是否经得起推敲。数据慢15分钟,照样能跑中低频趋势策略。别被“实时”两个字绑架,先想清楚你的持仓周期。