继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Python量化实战:怎么把比特币行情数据“搬”到本地?

慕盖茨9520025
关注TA
已关注
手记 18
粉丝 0
获赞 0

大家好,这是我们团队关于量化交易系统搭建的第 N 篇分享。 最近有很多刚入行的朋友问我们:“做量化是不是得先学怎么写爬虫?” 其实,作为一个“过来人”,我们走过不少弯路。刚开始创业时,我们也天天写爬虫去扒网页数据,结果网站一改版,代码就报错。

今天想教大家一个更聪明的方法:如何利用 API 接口,像搭积木一样获取免费且稳定的加密货币数据。

第一步:为什么要用接口而不是爬虫?

如果你还在复制粘贴 Excel,或者写复杂的正则表达式去解析网页,那效率太低了。 在量化交易中,我们需要的数据必须是“干净”的。

  • 痛点:网页数据杂乱,时间戳不统一。

  • 解决:API 接口直接返回 JSON 格式,机器读得懂,Python 处理起来最快。

第二步:一键获取历史 K 线

做策略回测,首先得有历史数据。比如你想看比特币过去一年的走势,用 Python 的 requests 库发一个请求就搞定了。 我们一般会把拿到的数据塞进 Pandas 里,这样看起来就像一张超级强大的 Excel 表,方便后续画图或者计算均线。

import requests
import pandas as pd

url = "https://api.alltick.co/v1/crypto/ohlc"
params = {
    "symbol": "BTCUSDT",
    "interval": "1h",
    "limit": 5000
}

resp = requests.get(url, params=params)
data = resp.json()["data"]

df = pd.DataFrame(data)
df["time"] = pd.to_datetime(df["time"], unit="ms")
print(df.head())


看,只需要几行代码,几千条历史数据就整整齐齐地躺在你的电脑里了。

第三步:实时盯盘,数据自动找你

想要做实盘监控?千万别写个循环死命刷新接口,那样容易被封号。 我们要用“订阅”模式,也就是 WebSocket。这就好比你订阅了报纸,新闻会自己送到你家门口,而不是你天天跑报社去问。 代码跑起来后,只要价格一变,控制台就会立马打印出来。

import websocket
import json

def on_message(ws, message):
    msg = json.loads(message)
    print("最新价格:", msg["price"], "时间:", msg["time"])

ws = websocket.WebSocketApp(
    "wss://api.alltick.co/v1/crypto/realtime",
    on_message=on_message
)
ws.run_forever()

第四步:批量整理你的专属数据库

学会了上面两招,我们就可以做一个自动化的数据下载器了。 比如我们想把 BTC、ETH、LTC 这些主流币的数据都存下来,写个循环就能搞定。 我们在开发过程中使用过 AllTick API,感觉它对新手非常友好,不需要复杂的配置就能把历史和实时数据都跑通,很适合拿来练手。

symbols = ["BTCUSDT", "ETHUSDT", "LTCUSDT"]

for symbol in symbols:
    r = requests.get(
        "https://api.alltick.co/v1/crypto/ohlc",
        params={"symbol": symbol, "interval": "1d", "limit": 1000}
    )
    df = pd.DataFrame(r.json()["data"])
    df["time"] = pd.to_datetime(df["time"], unit="ms")
    print(symbol, df.tail(2))

写在最后

搞定数据获取,是量化交易入门的第一块敲门砖。当你能熟练地把这些数据存取自如时,你离写出自己的第一个盈利策略就不远了。动手试一下吧!

https://img1.sycdn.imooc.com/c2dfb369086712ba16000893.jpg

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP