-
Notifications
You must be signed in to change notification settings - Fork 0
Closed
Labels
Description
需求描述
作为策略开发者,我想通过一次调用获取多个币种在指定时间区间内的 K 线数据(例如 1h 周期最近 3 天),以便进行批量分析或下游处理。
验收标准
- MCP 新增工具,可接收币种列表、周期、开始/结束时间或最近天数参数
- 返回结构按币种组织,单个币种包含按时间排序的标准 OHLCV 字段
- 未显式提供结束时间时默认使用当前时间戳
- 参数冲突或非法值返回结构化错误信息
- 至少有 1 个单元测试覆盖服务层逻辑,1 个集成测试验证工具返回结构
技术方案
影响范围
- 修改文件:
services/hyperliquid_services.py,main.py - 新增文件: 无
- 依赖变更: 无
实现步骤
-
在
services/hyperliquid_services.py实现get_candles_snapshot_bulk方法:- 校验
coins、interval、时间参数 - 支持
start_time/end_time或days互斥输入 - 遍历币种调用
Info.candles_snapshot并格式化字段(open/high/low/close/volume/trade_count/timestamp) - 返回统一的
{"success": True, "data": {...}}结构,捕获异常返回{"success": False, ...}
- 校验
-
在
main.py注册 MCP 工具get_candles_snapshot:- 使用 Pydantic 模型描述输入(coins、interval、days、start_time、end_time、limit)
- 调用服务层方法并根据
limit对结果做可选截断 - 对参数冲突给出明确错误提示
-
添加测试:
- 单元测试(例如
tests/unit/test_hyperliquid_services.py)使用 monkeypatch 模拟 SDK 返回,验证参数处理和输出结构 - 集成测试调用 MCP 工具验证返回格式,可在需要时跳过真实网络
- 单元测试(例如
测试策略
- 单元测试覆盖参数校验和数据整形
- 集成测试验证 MCP 工具响应结构
- 手动测试:运行
uv run hyperliquid-mcp stdio,请求多币种 1h 数据 3 天区间
工作量评估
预计 2-3 小时,复杂度:中等