Skip to content

[Feature] 批量获取市场 K 线数据工具 #23

@jamiesun

Description

@jamiesun

需求描述

作为策略开发者,我想通过一次调用获取多个币种在指定时间区间内的 K 线数据(例如 1h 周期最近 3 天),以便进行批量分析或下游处理。

验收标准

  • MCP 新增工具,可接收币种列表、周期、开始/结束时间或最近天数参数
  • 返回结构按币种组织,单个币种包含按时间排序的标准 OHLCV 字段
  • 未显式提供结束时间时默认使用当前时间戳
  • 参数冲突或非法值返回结构化错误信息
  • 至少有 1 个单元测试覆盖服务层逻辑,1 个集成测试验证工具返回结构

技术方案

影响范围

  • 修改文件: services/hyperliquid_services.py, main.py
  • 新增文件: 无
  • 依赖变更: 无

实现步骤

  1. services/hyperliquid_services.py 实现 get_candles_snapshot_bulk 方法:

    • 校验 coinsinterval、时间参数
    • 支持 start_time/end_timedays 互斥输入
    • 遍历币种调用 Info.candles_snapshot 并格式化字段(open/high/low/close/volume/trade_count/timestamp)
    • 返回统一的 {"success": True, "data": {...}} 结构,捕获异常返回 {"success": False, ...}
  2. main.py 注册 MCP 工具 get_candles_snapshot

    • 使用 Pydantic 模型描述输入(coins、interval、days、start_time、end_time、limit)
    • 调用服务层方法并根据 limit 对结果做可选截断
    • 对参数冲突给出明确错误提示
  3. 添加测试:

    • 单元测试(例如 tests/unit/test_hyperliquid_services.py)使用 monkeypatch 模拟 SDK 返回,验证参数处理和输出结构
    • 集成测试调用 MCP 工具验证返回格式,可在需要时跳过真实网络

测试策略

  • 单元测试覆盖参数校验和数据整形
  • 集成测试验证 MCP 工具响应结构
  • 手动测试:运行 uv run hyperliquid-mcp stdio,请求多币种 1h 数据 3 天区间

工作量评估

预计 2-3 小时,复杂度:中等

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions