第三章:工具准备——必备软件与数据源
做跨市场套利,说白了就是跟数据打交道。你想想看,没有趁手的工具,再好的策略也跑不起来。这一章我带你把吃饭的家伙事儿备齐。
3.1 行情终端:你的第一双眼睛
我个人习惯同时开着三个终端。不是炫技,是真实需求。
| 终端 | 适用市场 | 我的使用场景 |
|---|---|---|
| Wind | A股、期货、债券 | 做股指期货与ETF套利时,看实时基差 |
| Bloomberg | 外汇、商品、美股 | 跨市场价差监控,数据最全 |
| TradingView | 加密货币、外汇 | 画图分析,社区策略参考 |
嗯,这里要注意:免费终端和付费终端的延迟差距很大。我在项目中遇到过,用免费行情做高频套利,结果滑点吃掉所有利润。如果你做的是日频或小时频策略,免费终端够用。但做分钟级套利,别省这个钱。
核心建议:至少准备一个付费行情源。Wind或Bloomberg二选一,别用同花顺免费版做套利决策。
3.2 API接口:让机器替你干活
手动下单?那是十年前的事了。现在做套利,必须用API。
我常用的API分三类:
- 交易所官方API——比如CTP(期货)、FIX协议(外汇)。延迟最低,但文档写得像天书。
- 数据服务商API——比如WindPy、Tushare。上手快,适合回测和策略开发。
- 量化平台API——比如QuantConnect、掘金。自带回测环境,省去搭系统的麻烦。
为什么会这样推荐?因为不同场景需求不同。做回测用数据服务商API,做实盘用交易所API。我见过有人用Tushare做实盘,结果行情延迟3秒,套利机会早没了。
我的经验:刚开始别贪多。先搞定一个交易所的API,跑通一个最简单的价差策略。等熟悉了再扩展。
3.3 数据库:你的记忆仓库
做套利离不开历史数据。没有数据库,你拿什么回测?
我个人习惯用这套组合:
- 时序数据库——InfluxDB或TimescaleDB。存Tick级行情,查询快。
- 关系型数据库——PostgreSQL。存交易记录、账户信息。
- 缓存层——Redis。存实时价差,减少数据库压力。
我曾经踩过一个坑:用MySQL存分钟级K线,结果数据量一上来,查询慢得像蜗牛。后来换成TimescaleDB,同样的查询快了10倍。
避坑指南:别把所有数据塞进一个数据库。行情数据用时序库,交易数据用关系库。混着用,后期维护会让你崩溃。
3.4 整体架构图
下面这张图是我自己搭建套利系统的标准架构。你照着搭,基本不会出大问题。
3.5 代码示例:快速搭建数据管道
下面这段代码,是我用来从交易所API拉取行情并存入数据库的模板。你改改API Key就能用。
import requests
import psycopg2
import json
from datetime import datetime
# 连接数据库
conn = psycopg2.connect(
host="localhost",
database="tick_data",
user="trader",
password="your_password"
)
cur = conn.cursor()
# 从交易所API拉取行情
def fetch_ticker(symbol):
url = f"https://api.exchange.com/v1/ticker?symbol={symbol}"
headers = {"X-API-Key": "your_api_key"}
response = requests.get(url, headers=headers)
return response.json()
# 存入数据库
def save_ticker(data):
query = """
INSERT INTO tick_data (symbol, price, volume, timestamp)
VALUES (%s, %s, %s, %s)
"""
cur.execute(query, (
data['symbol'],
data['last_price'],
data['volume'],
datetime.now()
))
conn.commit()
# 主循环
if __name__ == "__main__":
symbols = ["BTCUSDT", "ETHUSDT"]
for sym in symbols:
ticker = fetch_ticker(sym)
save_ticker(ticker)
print(f"{sym} 数据已保存")
小提示:生产环境记得加异常处理和重试机制。我刚开始写的时候没加,半夜API挂了,第二天发现数据库空了一整晚。
3.6 我的工具清单总结
最后给你一张清单,照着准备就行:
- 行情终端:Wind(A股/期货)+ TradingView(加密货币)
- API接口:CTP(期货实盘)+ Tushare(回测数据)
- 数据库:TimescaleDB(行情)+ PostgreSQL(交易)+ Redis(缓存)
- 编程环境:Python 3.9+,Anaconda发行版
- 回测框架:Backtrader或自研(后面章节会讲)
嗯,工具就这些。别贪多,先把这套跑通。下一章我们开始讲真正的套利策略——价差分析。