大家好,这是我们团队关于量化交易系统搭建的第 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))写在最后
搞定数据获取,是量化交易入门的第一块敲门砖。当你能熟练地把这些数据存取自如时,你离写出自己的第一个盈利策略就不远了。动手试一下吧!
共同学习,写下你的评论
评论加载中...
作者其他优质文章
