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

Python 趣味项目:50行代码,带你自制一个“加密货币心电图”

标签:
人工智能 API

很多想学量化交易的同学,一上来就被复杂的数学模型和枯燥的 API 文档劝退了。其实,量化最有趣的地方在于——你可以用代码重新定义你观察世界的方式。

今天我们不讲枯燥的理论,来做一个好玩且实用的小项目:用 Python 给以太坊(ETH)画一张实时的“心电图”。看着价格在屏幕上实时跳动,那种掌控感是非常棒的。

我们需要准备什么?

  1. Python 环境(Anaconda 或原生都可以)。

  2. 绘图库matplotlib,Python 数据可视化的神器。

  3. 数据源:我们需要一个能实时“说话”的接口,而不是需要我们不停去问(轮询)的接口。这里我们用 WebSocket 协议,配合 AllTick 的数据服务,它的格式非常适合新手练手,没有复杂的鉴权坑。

步骤解析

第一步:建立连接我们像打电话一样,拨通交易所的数据线路。

第二步:收集数据电话接通后,对方会不断报价格。我们需要拿个小本子(List)把这些数字记下来,太旧的数字就扔掉。

第三步:画出来指挥电脑每秒钟根据本子上的数字重新画一次线。


完整代码实现复制下面的代码,直接运行,你就能拥有一个属于自己的行情终端:

import websocket
import json
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
from datetime import datetime

# 用于存储时间和价格
times, prices = [], []

# WebSocket 消息回调
def on_message(ws, message):
    data = json.loads(message)
    price = float(data['price'])
    timestamp = datetime.fromtimestamp(data['timestamp'])
    
    times.append(timestamp)
    prices.append(price)
    
    # 保留最近 50 条数据
    if len(times) > 50:
        times.pop(0)
        prices.pop(0)

def on_open(ws):
    subscribe_msg = {
        "type": "subscribe",
        "symbol": "ETHUSD"
    }
    ws.send(json.dumps(subscribe_msg))

# 动态绘图函数
def animate(i):
    plt.cla()
    plt.plot(times, prices, color='orange', marker='o')
    plt.title("ETH 实时走势图")
    plt.xlabel("时间")
    plt.ylabel("价格(USD)")
    plt.xticks(rotation=45)
    plt.tight_layout()

# WebSocket 地址示例(AllTick API)
ws_url = "wss://ws.alltick.co/realtime"

ws = websocket.WebSocketApp(ws_url, on_message=on_message, on_open=on_open)

# 用线程运行 WebSocket
from threading import Thread
Thread(target=ws.run_forever, daemon=True).start()

# 实时刷新可视化
plt.show()

学习要点

  • 注意 times.pop(0) 这一行,这就是“滑动窗口”的概念,保证我们的内存不会爆掉。

  • 尝试修改 ws_url 中的代码,你也可以获取 BTC 或者其他资产的行情。

编程是为了解决问题,也是为了发现乐趣。希望这个小 demo 能打开你量化之路的大门。

https://img1.sycdn.imooc.com/3197db6908718d4616000893.jpg


点击查看更多内容
TA 点赞

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

评论

作者其他优质文章

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

100积分直接送

付费专栏免费学

大额优惠券免费领

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

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

帮助反馈 APP下载

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

公众号

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

举报

0/150
提交
取消