区域数据源

📎 引用文件

本文引用的文件 - china_a.py - korea_equity.py - mootdx_loader.py - sina_loader.py - tencent_loader.py - pykrx_loader.py - cn_adjust.py - global_equity.py - market_data_tool.py

目录

  1. 简介
  2. 项目结构
  3. 核心组件
  4. 架构总览
  5. 详细组件分析
  6. 依赖关系分析
  7. 性能与回测注意事项
  8. 故障排查指南
  9. 结论
  10. 附录:跨区域对比与组合构建

简介

本文件面向 Vibe-Trading 的区域数据源集成,聚焦中国 A 股市场(MooTDX、新浪财经、腾讯财经)、韩国股市(KRX)及其他区域市场的特殊处理方式。内容涵盖: - 各区域市场的交易规则差异(T+1/T+0、涨跌停/限制幅度、最小交易单位、做空限制等) - 数据格式差异与本地化适配(列名、复权方式、时间序列索引、符号约定) - 复权因子处理、停牌股票过滤、涨跌停限制的实现要点 - 区域市场特有的技术指标计算与回测注意事项 - 跨区域数据对比分析与投资组合构建方法

项目结构

围绕“数据加载器 + 回测引擎”的解耦设计: - 数据加载器:按区域提供 OHLCV 数据,统一输出标准列(open/high/low/close/volume),并处理来源特有格式与复权。 - 回测引擎:按区域实现交易规则(涨跌停、T+1、最小手数、佣金税费、滑点、价格网格)。 - 工具层:自动路由 source="auto",根据代码后缀识别市场并选择合适的数据源。

graph TB subgraph "数据加载器" M["MooTDX(A股)"] S["新浪财经(美股)"] T["腾讯财经(A/H股)"] K["pykrx(KRX)"] end subgraph "回测引擎" CA["ChinaAEngine(A股)"] KR["KoreaEquityEngine(KRX)"] GE["GlobalEquityEngine(US/HK/CA)"] end Tool["市场数据工具(source=auto)"] --> M Tool --> S Tool --> T Tool --> K M --> CA S --> GE T --> GE K --> KR

图表来源 - mootdx_loader.py:66-148 - sina_loader.py:122-201 - tencent_loader.py:35-159 - pykrx_loader.py:76-194 - china_a.py:20-93 - korea_equity.py:139-317 - global_equity.py:1-45 - market_data_tool.py:51-79

章节来源 - mootdx_loader.py:66-148 - sina_loader.py:122-201 - tencent_loader.py:35-159 - pykrx_loader.py:76-194 - china_a.py:20-93 - korea_equity.py:139-317 - global_equity.py:1-45 - market_data_tool.py:51-79

核心组件

章节来源 - china_a.py:20-93 - korea_equity.py:139-317 - mootdx_loader.py:66-148 - sina_loader.py:122-201 - tencent_loader.py:35-159 - pykrx_loader.py:76-194 - cn_adjust.py:27-78

架构总览

区域数据流从“数据加载器”到“回测引擎”,再到“策略信号与执行”。不同区域在数据格式、复权方式、交易规则上存在差异,需分别适配。

sequenceDiagram participant User as "用户/策略" participant Tool as "市场数据工具" participant Loader as "区域数据加载器" participant Engine as "区域回测引擎" participant Market as "目标市场规则" User->>Tool : 请求代码列表与区间 Tool->>Loader : 按代码后缀选择source(auto) Loader-->>Tool : 标准化OHLCV DataFrame Tool->>Engine : 传入数据与配置 Engine->>Market : 应用涨跌停/T+1/最小手数/费用 Engine-->>User : 回测结果(净值、指标、成交明细)

图表来源 - market_data_tool.py:51-79 - mootdx_loader.py:66-148 - sina_loader.py:122-201 - tencent_loader.py:35-159 - pykrx_loader.py:76-194 - china_a.py:20-93 - korea_equity.py:139-317

详细组件分析

中国 A 股市场(MooTDX、新浪财经、腾讯财经)

flowchart TD Start(["开始"]) --> CheckShort{"方向=做空?"} CheckShort --> |是| Block["拒绝(不允许做空)"] CheckShort --> |否| CheckT1{"方向=卖出且为当日买入?"} CheckT1 --> |是| BlockT1["拒绝(T+1)"] CheckT1 --> |否| CheckLimit{"是否触及涨跌停?"} CheckLimit --> |是| BlockLimit["拒绝(涨停/跌停)"] CheckLimit --> |否| Execute["允许成交"] Block --> End(["结束"]) BlockT1 --> End BlockLimit --> End Execute --> End

图表来源 - china_a.py:40-93 - china_a.py:115-193

章节来源 - china_a.py:20-93 - china_a.py:115-193 - mootdx_loader.py:66-148 - tencent_loader.py:35-159 - cn_adjust.py:27-78

韩国股市(KRX)

classDiagram class KoreaEquityEngine { +price_limit : float +slippage_rate : float +kr_brokerage : float +kr_tax_sell : float +can_execute(symbol, direction, bar) bool +round_size(raw_size, price) float +calc_commission(size, price, direction, is_open) float +apply_slippage(price, direction) float -_base_price(symbol, bar) float? } class BaseEngine { <<abstract>> +limit_band(symbol, bar, limit) (float,float)? +prospective_fill_price(bar, direction) float? } KoreaEquityEngine --|> BaseEngine : "继承"

图表来源 - korea_equity.py:139-317 - korea_equity.py:61-137

章节来源 - korea_equity.py:139-317 - pykrx_loader.py:76-194

其他区域市场(美股、港股、全球权益)

章节来源 - sina_loader.py:122-201 - tencent_loader.py:35-159 - global_equity.py:1-45

依赖关系分析

graph LR MT["MooTDX"] --> CA["ChinaAEngine"] TN["腾讯财经"] --> GE["GlobalEquityEngine"] SN["新浪财经"] --> GE PK["pykrx"] --> KR["KoreaEquityEngine"] Tool["市场数据工具"] --> MT Tool --> TN Tool --> SN Tool --> PK

图表来源 - mootdx_loader.py:66-148 - tencent_loader.py:35-159 - sina_loader.py:122-201 - pykrx_loader.py:76-194 - china_a.py:20-93 - korea_equity.py:139-317 - global_equity.py:1-45 - market_data_tool.py:51-79

章节来源 - mootdx_loader.py:66-148 - tencent_loader.py:35-159 - sina_loader.py:122-201 - pykrx_loader.py:76-194 - china_a.py:20-93 - korea_equity.py:139-317 - global_equity.py:1-45 - market_data_tool.py:51-79

性能与回测注意事项

[本节为通用指导,不直接分析具体文件]

故障排查指南

章节来源 - mootdx_loader.py:124-148 - pykrx_loader.py:118-144 - tencent_loader.py:62-85 - sina_loader.py:161-181 - korea_equity.py:205-228 - cn_adjust.py:54-78

结论

Vibe-Trading 的区域数据源集成通过“数据加载器 + 回测引擎”的解耦架构,实现了对中国 A 股、韩国 KRX 以及其他区域市场的差异化适配。关键要点包括: - 严格的市场规则建模(T+1、涨跌停、最小单位、费用) - 标准化的数据格式与复权处理 - 精确的价格网格与涨跌停检查 - 可靠的加载器容错与速率控制 这些能力为跨区域数据对比与投资组合构建提供了坚实基础。

[本节为总结性内容,不直接分析具体文件]

附录:跨区域对比与组合构建

章节来源 - global_equity.py:1-45 - cn_adjust.py:27-78 - korea_equity.py:139-317 - mootdx_loader.py:66-148 - tencent_loader.py:35-159 - sina_loader.py:122-201 - pykrx_loader.py:76-194