Install
openclaw skills install okx-data-collector采集和分析OKX交易所的实时tick及多周期历史K线数据,支持策略需求分析和存储容量预估。
openclaw skills install okx-data-collectorOKX 数据采集与分析技能 - 支持实时 WebSocket 采集、REST API 历史补全、回测数据需求分析。
查看 OKX 数据可获取性和回测建议:
cat ~/.jvs/.openclaw/workspace/skills/okx-data-collector/OKX_DATA_ANALYSIS.md
# 采集 BTC 永续合约 1H 数据,最近 365 天
cd ~/.jvs/.openclaw/workspace/skills/okx-data-collector
python3 fetch_history.py --symbol BTC-USDT-SWAP --bar 1H --days 365 --output ./data
# 采集 4H 数据,最近 5 年
python3 fetch_history.py --symbol BTC-USDT-SWAP --bar 4H --days 1825 --output ./data
# 采集日线数据,最近 10 年
python3 fetch_history.py --symbol BTC-USDT-SWAP --bar 1D --days 3650 --output ./data
# 创建采集脚本
cat > batch_fetch.sh << 'EOF'
#!/bin/bash
SYMBOLS=("BTC-USDT-SWAP" "ETH-USDT-SWAP")
OUTPUT_DIR="./data"
for symbol in "${SYMBOLS[@]}"; do
# 基础配置
python3 fetch_history.py -s $symbol -b 1H -d 730 -o $OUTPUT_DIR
python3 fetch_history.py -s $symbol -b 4H -d 1825 -o $OUTPUT_DIR
python3 fetch_history.py -s $symbol -b 1D -d 3650 -o $OUTPUT_DIR
done
EOF
chmod +x batch_fetch.sh
./batch_fetch.sh
配合 tencent-cos-data-collector skill 进行实时采集:
# 实时采集 tick 数据并上传 COS
# 参考 tencent-cos-data-collector skill 的文档
| 周期 | 采集时长 | 用途 |
|---|---|---|
| 1m | 90 天 | 高频回测 |
| 5m | 365 天 | 日内策略 |
| 1H | 2 年 | 波段策略 |
| 4H | 5 年 | 趋势策略 |
| 1D | 10 年 | 因子回测 |
| 周期 | 采集时长 | 用途 |
|---|---|---|
| 1m | 365 天 | 完整高频 |
| 5m | 2 年 | 日内策略 |
| 15m | 3 年 | 中频策略 |
| 1H | 5 年 | 波段/趋势 |
| 4H | 8 年 | 长期趋势 |
| 1D | 开市至今 | 因子/宏观 |
okx-data-collector/
├── SKILL.md # 本说明文件
├── OKX_DATA_ANALYSIS.md # 详细数据分析报告
├── fetch_history.py # 历史数据采集脚本
├── data/ # 采集的数据输出目录
└── README.md # 使用文档
GET /api/v5/market/candlesbefore, after (毫秒时间戳)wss://ws.okx.com:8443/ws/v5/public[
{
"ts": "1597026383085",
"o": "11768.6",
"h": "11770",
"l": "11764.7",
"c": "11768.6",
"vol": "66.1636",
"volCcy": "778614.3299"
}
]
JSON: 原始 API 响应格式 CSV:
timestamp,open,high,low,close,volume
2026-04-01 12:00:00,68500.5,68520.0,68480.0,68510.0,1234.56
DolphinDB (推荐):
create table kdata(
symbol: SYMBOL,
timestamp: TIMESTAMP,
open: DOUBLE,
high: DOUBLE,
low: DOUBLE,
close: DOUBLE,
volume: DOUBLE
) PARTITION BY (symbol, HOUR(timestamp))
ClickHouse:
CREATE TABLE kdata (
symbol String,
timestamp DateTime,
open Float64,
high Float64,
low Float64,
close Float64,
volume Float64
) ENGINE = MergeTree()
PARTITION BY toYYYYMM(timestamp)
ORDER BY (symbol, timestamp)
# 检查网络连接
curl -I https://www.okx.com/api/v5/market/candles?instId=BTC-USDT&bar=1D&limit=1
# 检查 API 状态
# 访问 OKX 状态页面
# 检查缺失时间段
python3 -c "
import json
data = json.load(open('data/BTC-USDT-SWAP_1H_365d.json'))
timestamps = [int(c[0]) for c in data]
gaps = []
for i in range(1, len(timestamps)):
gap = timestamps[i] - timestamps[i-1]
if gap > 3600000 * 1.5: # 大于 1.5 倍间隔
gaps.append((timestamps[i-1], timestamps[i], gap))
print(f'发现 {len(gaps)} 个数据缺口')
"