市场数据工具

📎 引用文件

本文引用的文件 - agent/src/market_data.py - agent/src/tools/market_data_tool.py - agent/src/tools/technical_indicator_tool.py - agent/src/tools/pattern_tool.py - agent/src/tools/orderbook_depth_tool.py - agent/backtest/loaders/registry.py

目录

  1. 简介
  2. 项目结构
  3. 核心组件
  4. 架构总览
  5. 详细组件分析
  6. 依赖关系分析
  7. 性能考虑
  8. 故障排查指南
  9. 结论
  10. 附录

简介

本文件为 Vibe-Trading 的“市场数据工具”提供系统化文档,覆盖以下能力: - 多源市场数据获取与自动路由(股票、ETF、指数、加密货币、外汇等) - 技术指标计算(RSI、MACD、布林带、SMA、EMA) - K线形态识别(头肩顶/底、双顶/底、三角形、喇叭口、K线形态、支撑阻力等) - 订单簿深度分析与冲击成本估算(加密货币现货 L2 快照) - 数据源适配机制与回退链策略 - 数据质量保障、性能优化建议与常见错误处理 - 通过组合多个工具完成复杂市场分析任务

项目结构

围绕市场数据的代码主要分布在以下位置: - 共享市场数据获取与路由:agent/src/market_data.py - 工具封装层:agent/src/tools/*(行情、技术指标、形态识别、订单簿深度) - 数据源注册与回退链:agent/backtest/loaders/registry.py

graph TB A["调用方<br/>Agent/CLI/API"] --> B["MarketDataTool<br/>get_market_data"] B --> C["fetch_market_data<br/>统一入口"] C --> D["detect_source<br/>按符号规则选择首选源"] C --> E["_detect_market<br/>市场类型判定"] C --> F["FALLBACK_CHAINS<br/>按市场类型的回退链"] F --> G["Loader 实例化与 fetch()"] G --> H["标准化 OHLCV 记录"] H --> I["cap_rows<br/>行裁剪/采样"] I --> J["返回 JSON含 provenance"]

图表来源 - agent/src/market_data.py:97-223 - agent/backtest/loaders/registry.py:136-155

章节来源 - agent/src/market_data.py:1-229 - agent/backtest/loaders/registry.py:1-249

核心组件

章节来源 - agent/src/tools/market_data_tool.py:11-104 - agent/src/tools/technical_indicator_tool.py:157-283 - agent/src/tools/pattern_tool.py:323-411 - agent/src/tools/orderbook_depth_tool.py:285-445

架构总览

系统采用“工具层 + 统一数据获取 + 数据源注册/回退链”的分层设计。工具层负责参数校验与结果格式化;统一数据获取负责跨市场、跨源的兼容与健壮性;数据源层提供具体实现并通过注册表与回退链管理可用性。

classDiagram class MarketDataTool { +name : "get_market_data" +parameters : object +execute(**kwargs) str } class TechnicalIndicatorTool { +name : "technical_indicators" +parameters : object +execute(**kwargs) str } class PatternTool { +name : "pattern" +parameters : object +execute(**kwargs) str } class OrderBookDepthTool { +name : "orderbook_depth" +parameters : object +execute(**kwargs) str } class MarketDataCore { +fetch_market_data(...) dict +detect_source(code) str +cap_rows(records, max_rows) list|dict } class LoaderRegistry { +VALID_SOURCES set +FALLBACK_CHAINS map +get_loader_cls_with_fallback(source) Type +resolve_loader(market) DataLoader } MarketDataTool --> MarketDataCore : "调用" TechnicalIndicatorTool --> MarketDataCore : "拉取收盘价" PatternTool --> MarketDataCore : "可选读本地OHLCV" OrderBookDepthTool --> LoaderRegistry : "通过CCXT/交易所接口" MarketDataCore --> LoaderRegistry : "按市场/源选择"

图表来源 - agent/src/tools/market_data_tool.py:11-104 - agent/src/tools/technical_indicator_tool.py:157-283 - agent/src/tools/pattern_tool.py:323-411 - agent/src/tools/orderbook_depth_tool.py:285-445 - agent/backtest/loaders/registry.py:136-249

详细组件分析

统一市场数据获取(fetch_market_data)

sequenceDiagram participant U as "调用方" participant T as "MarketDataTool" participant M as "fetch_market_data" participant R as "LoaderRegistry" participant L as "具体Loader" U->>T : execute(codes,start,end,interval,source,max_rows) T->>M : fetch_market_data(...) M->>M : detect_source / _detect_market M->>R : get_loader_cls_with_fallback(首选/回退) R-->>M : LoaderClass M->>L : fetch(codes,start,end,interval) L-->>M : DataFrame/records M->>M : cap_rows + _json_safe M-->>T : 标准化结果(JSON) T-->>U : JSON字符串

图表来源 - agent/src/market_data.py:97-223 - agent/backtest/loaders/registry.py:196-249

章节来源 - agent/src/market_data.py:16-57 - agent/src/market_data.py:66-84 - agent/src/market_data.py:97-223 - agent/backtest/loaders/registry.py:136-155

技术指标工具(technical_indicators)

flowchart TD Start(["开始"]) --> Fetch["拉取收盘价序列<br/>不截断"] Fetch --> Valid{"数据有效?"} Valid -- 否 --> Err["返回错误"] Valid -- 是 --> Calc["计算指标<br/>RSI/MACD/BB/SMA/EMA"] Calc --> Out["返回结构化JSON"] Err --> End(["结束"]) Out --> End

图表来源 - agent/src/tools/technical_indicator_tool.py:39-87 - agent/src/tools/technical_indicator_tool.py:90-154 - agent/src/tools/technical_indicator_tool.py:200-283

章节来源 - agent/src/tools/technical_indicator_tool.py:157-283

K线形态识别(pattern)

flowchart TD S(["开始"]) --> Read["读取ohlcv_*.csv"] Read --> Check{"存在数据?"} Check -- 否 --> E1["返回错误:无数据"] Check -- 是 --> Select["选择模式集合"] Select --> Loop["逐代码执行模式函数"] Loop --> Agg["聚合结果"] Agg --> Ret["返回JSON"] E1 --> End(["结束"]) Ret --> End

图表来源 - agent/src/tools/pattern_tool.py:24-131 - agent/src/tools/pattern_tool.py:161-288 - agent/src/tools/pattern_tool.py:323-411

章节来源 - agent/src/tools/pattern_tool.py:323-411

订单簿深度分析(orderbook_depth)

sequenceDiagram participant U as "调用方" participant O as "OrderBookDepthTool" participant X as "交易所/CCXT" U->>O : 请求订单簿快照 O->>X : 获取L2深度 X-->>O : bids/asks + 元数据 O->>O : 校验空盘/单边/交叉 O->>O : 计算价差/不平衡/冲击成本 O-->>U : 返回结构化JSON

图表来源 - agent/src/tools/orderbook_depth_tool.py:285-445

章节来源 - agent/src/tools/orderbook_depth_tool.py:285-445

依赖关系分析

graph LR A["符号"] --> B["detect_source"] B --> C["市场类型(_detect_market)"] C --> D["FALLBACK_CHAINS"] D --> E["get_loader_cls_with_fallback"] E --> F["Loader.fetch()"] F --> G["标准化结果"]

图表来源 - agent/src/market_data.py:16-57 - agent/backtest/loaders/registry.py:136-155 - agent/backtest/loaders/registry.py:196-249

章节来源 - agent/backtest/loaders/registry.py:23-59 - agent/backtest/loaders/registry.py:136-155 - agent/backtest/loaders/registry.py:196-249

性能考虑

[本节为通用指导,无需特定文件引用]

故障排查指南

章节来源 - agent/src/market_data.py:198-223 - agent/src/tools/technical_indicator_tool.py:218-252 - agent/src/tools/orderbook_depth_tool.py:409-445 - agent/backtest/loaders/registry.py:221-249

结论

Vibe-Trading 的市场数据工具以统一的 fetch_market_data 为核心,结合按市场与符号的智能路由与回退链,提供了稳定、可扩展的多源数据接入能力。配合技术指标、K线形态与订单簿深度分析工具,用户可快速完成从数据获取到微观结构分析的完整工作流。通过合理的参数配置与性能优化,能够在保证数据质量的同时获得良好的扩展性与鲁棒性。

[本节为总结性内容,无需特定文件引用]

附录

工具参数与返回结构速查

数据源适配与回退链要点

组合示例(思路说明)

[本节为概念性示例,无需特定文件引用]