为了账号安全,请及时绑定邮箱和手机立即绑定

手把手教你写爬虫:Python怎么实时抓取美股交易数据?

标签:
API

很多同学在做金融数据分析的项目时,都会问我一个问题:“怎么才能像大公司的交易员那样,看到股票价格实时在跳动?”今天我们就来聊聊这个话题,带大家用Python实现一个美股Tick数据的抓取小工具。

什么是Tick数据?简单来说,就是交易所里发生的每一笔买卖。它比我们平时看的K线图要精细得多。对于想要开发即时行情软件或者交易机器人的同学来说,这是最基础的“原材料”。

为什么不推荐用普通的爬虫?如果你用 requests.get 去循环请求网页,效率太低了。这就像你每隔一秒钟就给朋友打个电话问“现在几点了”,朋友不烦你,服务器也会烦你。 正确的方法是用 WebSocket。这就好比你和服务器之间通着电话不挂断,一旦有新价格,服务器立马告诉你。

动手实操:连接数据源为了演示方便,我们这里使用 AllTick API 作为数据源,它的接口文档比较清晰,连接也比较稳定,适合练手和开发中小型项目。

首先,我们需要引入 websocket 库。来看看具体的代码怎么写:

import websocket
import json

# AllTick 实时美股 tick WebSocket 地址
WS_URL = "wss://api.alltick.co/market/ws"

def on_message(ws, message):
    data = json.loads(message)
    # 打印每条 tick 数据
    print(f"{data['symbol']} 价格: {data['price']} 时间: {data['timestamp']}")

def on_open(ws):
    # 订阅苹果股票 AAPL 的 tick 数据
    subscribe_msg = {
        "type": "subscribe",
        "symbol": "AAPL"
    }
    ws.send(json.dumps(subscribe_msg))

ws = websocket.WebSocketApp(
    WS_URL,
    on_message=on_message,
    on_open=on_open
)
ws.run_forever()

运行这段代码,你就会发现控制台开始疯狂输出数据了,这就是实时的力量!

进阶:让数据“画”出来光看数字可能没感觉。我们可以结合 matplotlib 这个库,把抓取到的价格实时画成折线图。这就需要用到一个小技巧:用 deque(双向队列)来只保存最新的100条数据,旧的数据自动丢弃,这样电脑就不会卡。

from collections import deque
import matplotlib.pyplot as plt

tick_cache = deque(maxlen=100)  # 缓存最近 100 条 tick

# 假设 on_message 回调中加入
tick_cache.append(data['price'])

plt.plot(list(tick_cache))
plt.pause(0.01)
plt.clf()

写在最后的小建议

  1. 模块化:写代码的时候,把“连网络”和“处理数据”的代码分开写,这样条理更清楚。

  2. 别贪多:刚开始练习时,先订阅一个股票(比如 AAPL),等程序跑通了再尝试订阅多个。

学会了这一招,你的量化交易入门之路就算迈出了坚实的一步!

https://img1.sycdn.imooc.com/3193ef690865b09d16000893.jpg

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

举报

0/150
提交
取消