
从零开始用Tushare抓取股票实时成交
很多人想自己写个脚本盯着盘面,看某只股票此刻成交了多少、成交价是多少。Tushare这个数据接口库,是国内很多量化新手和散户的第一选择。它把复杂的金融数据包装成了简单的函数调用,用几行Python代码就能拿到实时行情。今天不讲虚的,直接告诉你Tushare怎么拿股票实时成交信息,以及期货上有什么区别。
为什么Tushare能拿实时数据
Tushare本质上是一个数据代理。它从交易所、行情商那里买来数据,再通过API分发给用户。实时成交信息属于高频数据,延迟通常在几秒到几十秒。免费用户拿到的是快照数据,也就是每隔几秒更新一次的最新成交价、成交量。付费或者高积分用户能拿到更细的逐笔成交。

积分是Tushare的门槛。注册后默认100积分,只能调基础接口。实时行情接口通常需要至少2000积分。获取积分的方式有完善个人信息、邀请好友、充值会员。想零成本用,就得花点时间攒积分。
股票实时成交接口怎么调
Tushare的实时行情接口叫realtime_quote,属于ts模块。调用前需要设置token,也就是你的身份凭证。代码非常短:
import tushare as ts
ts.set_token('你的token')
pro = ts.pro_api()
df = ts.realtime_quote(ts_code='000001.SZ')
print(df)
返回的DataFrame里包含这些关键字段:
NAME:股票名称TS_CODE:股票代码PRICE:最新成交价VOLUME:成交量(手)AMOUNT:成交额(元)BID:买一价ASK:卖一价OPEN:开盘价HIGH:最高价LOW:最低价PRE_CLOSE:昨收价TIME:数据时间戳
成交信息主要看PRICE、VOLUME、AMOUNT。VOLUME是累计成交量,单位是手,1手等于100股。AMOUNT是累计成交金额,单位是元。这两个数字是动态变化的,每次调用都会刷新。
想同时拿多只股票,把ts_code换成逗号分隔的字符串就行:
df = ts.realtime_quote(ts_code='000001.SZ,600000.SH')
返回结果会按股票代码分行。
实时成交信息的更新频率和限制
Tushare的实时接口不是真正的逐笔推送。它采用轮询模式,你调用一次,它返回当前快照。快照的更新频率取决于Tushare服务器从上游拉数据的节奏,免费用户大概每3到5秒更新一次。想更快,得用付费的level-2数据,Tushare也提供了对应的接口,但积分要求极高。
每分钟调用次数有限制。免费用户每分钟最多调用500次,超过会报错。写循环抓数据时,记得加time.sleep(3),避免被封。实时接口在收盘后返回的是当天最后一条快照,不会继续更新。
期货实时成交信息有什么不同
期货的实时行情接口也是realtime_quote,但传入的代码格式不同。股票是000001.SZ,期货是AU2312.SHF这种格式,交易所后缀有SHF、DCE、CZC、CFE。返回字段多了几个期货特有的:
BID_VOL:买一量ASK_VOL:卖一量OI:持仓量SETTLE:结算价
期货的成交信息同样看PRICE、VOLUME、AMOUNT。VOLUME是双边计算,也就是成交1手,买卖双方各算1手,总成交量显示为2。股票是单边计算,成交1手就是1手。这一点做跨品种策略时容易踩坑。
期货有夜盘。夜盘期间调用realtime_quote,返回的是夜盘的最新成交。白天收盘后,夜盘开盘前,接口返回的是下午收盘时的快照。想抓连续数据,得自己判断交易时段。
用实时成交信息做简单监控
拿到实时成交信息后,可以做很多事。监控某只股票是否放量:把当前VOLUME和过去5分钟平均成交量对比,突然放大3倍就报警。监控价格突破:当前PRICE超过开盘价2%就记录。这些逻辑用pandas一行就能算。
import time
import tushare as ts
import pandas as pd
ts.set_token('你的token')
while True:
df = ts.realtime_quote(ts_code='000001.SZ')
price = df['PRICE'].values[0]
volume = df['VOLUME'].values[0]
print(f'最新价 {price} 成交量 {volume}')
time.sleep(5)
这个循环每5秒抓一次,打印最新价和成交量。实际用的时候,把print换成写入数据库或者发送通知。
常见报错和解决办法
报错抱歉,您没有访问该接口的权限,说明积分不够。去Tushare官网看实时行情接口需要多少积分,通常2000分起步。报错频率超限,降低调用频率,加长sleep时间。报错股票代码错误,检查后缀是否写对。深交所是SZ,上交所是SH,期货是SHF、DCE等。
数据为空,可能是非交易时段。股票交易时间9:30到11:30,13:00到15:00。期货还有夜盘21:00到次日凌晨2:30。非交易时段调用,返回的是上一个交易时段的最后快照。
替代方案和注意事项
Tushare不是唯一的实时数据源。新浪财经、腾讯财经的公开接口也能抓实时成交,免费且无需积分。但那些接口没有官方维护,随时可能失效。Tushare胜在稳定、字段规范、有文档。对于写量化策略回测和实盘监控,Tushare足够用。
注意数据延迟。免费实时数据延迟几秒,做日内高频不够。做日间波段或者大趋势跟踪,几秒延迟无所谓。期货主力合约切换时,代码会变,记得手动更新或者写逻辑自动识别。
最后提醒一句,实时成交信息只是盘面的一小部分。光看成交量和价格,容易掉进主力对倒的陷阱。结合盘口挂单、大单流向、板块联动一起看,胜率更高。