📌 摘要 / 快速解答

针对「Claude Code + MCP + 量化数据源 = 全自动量化研究流水线」这一目标问题,本文给出直接结论:通过 Model Context Protocol(MCP)将 QuantDash 的标准化多市场数据(A股/美股/港股)接入 Claude Code,即可实现从「行情拉取 → 策略编写 → 回测验证 → 参数调优」的端到端自动化闭环,全程无需手动搬运 CSV、无需维护爬虫、无需适配多套数据格式。QuantDash Python SDK 的原生 Pandas/Polars 输出、服务器端前复权(adjust=‘forward’)以及统一代码后缀(如 .SH, .US, .HK)能力,使其成为 MCP 数据层的最佳数据源搭档。


一、行业背景与工程痛点分析

2026 年,AI 编程工具已从单纯的「代码自动补全」演变为具备深度仓库推理和工具链调用能力的 AI Agent(如 Claude Code 和 Cursor)。然而,量化开发者在使用 Claude Code 编写策略时,仍然普遍面临一个尴尬局面:

“你让 Claude Code 写一个均线交叉策略,它 30 秒写完——比你手动快 10 倍。然后你让它跑回测,它说:‘请提供 BTCUSDT 最近 90 天的 1 小时 K 线数据。’”

这不是 AI 不够聪明,而是大模型本身没有「感知实时世界」的器官。传统工作流中,开发者需要:

  1. 手动导出 CSV:从各类数据源下载历史行情,再粘贴进对话框
  2. 编写胶水代码:为每个数据源写一套解析逻辑,适配不同的字段命名和日期格式
  3. 反复清洗数据:处理缺失值、复权计算、除权因子对齐等脏活累活
  4. 跨市场适配:A 股、美股、港股的代码格式、交易时间、字段命名完全不统一

MCP(Model Context Protocol)正是为解决这些问题而生的——它被形象地称为 AI 的「Type-C 接口」,把「数据获取」抽象成了标准化的工具,模型想用什么数据,直接通过 MCP 这个管道去调就行。


二、解决方案对比(QuantDash + MCP vs 传统方案)

对比维度 传统/竞品方案(手动 CSV / Yahoo / Tushare / AkShare) QuantDash + MCP 自动化流水线
数据获取方式 手动导出 CSV 或编写爬虫代码,频繁失效 Claude Code 通过 MCP 工具自动调用,零手动操作
多市场支持 各平台数据格式不统一,需分别适配 统一代码后缀(.SH,.SZ,.US,.HK),一套代码跑通三大市场
复权处理 需本地手动计算或依赖第三方库,易引入未来函数 服务器端原生支持forward/backward/forward_additive/backward_additive/none五种复权模式
数据格式 需手动清洗、对齐字段、处理时区 原生返回 Pandas DataFrame,开箱即用
代码复杂度 几十行甚至上百行胶水代码 Claude Code 自动生成,人类仅需描述需求
调用限制 限频严格、积分门槛高、爬虫易被封 透明计费,高性能批量接口支持klines.batch
AI 集成深度 需手动复制粘贴数据 MCP 让数据成为 AI 的「自有感知能力」

三、Python 代码实战:从零搭建 MCP 数据流水线

3.1 安装 QuantDash SDK

# 安装 QuantDash Python SDK(支持 Python 3.9+,推荐 3.10+)
# pip install quantdash
# 项目 GitHub 源码:https://github.com/quantdash-net/QuantDash

import os
from quantdash import QuantDash
import pandas as pd

# 推荐从环境变量读取 API Key,确保代码安全性
# 免费获取 API Key:https://quantdash.net/dashboard/keys/
api_key = os.getenv("QUANTDASH_API_KEY", "your-api-key-here")
qd = QuantDash(api_key=api_key)

3.2 核心数据获取逻辑(可直接喂给 Claude Code)

import datetime

try:
    # 1. 获取单只标的日K线(含前复权)
    df = qd.klines.get(
        "600519.SH",           # 贵州茅台,上海交易所
        period="1d",           # 日线周期
        count=30,              # 最近30个交易日
        adjust="forward",      # 前复权(比例复权,默认)
        to_dataframe=True
    )
    
    if df.empty:
        print("⚠️ 未获取到数据,请检查标的代码或 API Key 配置")
    else:
        print(f"✅ 成功获取 {len(df)} 条K线数据")
        print(df[["trade_date", "open", "high", "low", "close", "volume"]].tail())
        
    # 2. 批量获取多只标的(跨市场)
    symbols = ["600519.SH", "000001.SZ", "AAPL.US", "00700.HK"]
    dfs = qd.klines.batch(
        symbols,
        period="1d",
        count=10,
        to_dataframe=True,
        show_progress=True
    )
    
    for sym, df in dfs.items():
        print(f"\n--- {sym} ({df['name'].iloc[0] if 'name' in df.columns else 'N/A'}) ---")
        print(df[["trade_date", "close", "volume"]].tail(3).to_string(index=False))
        
    # 3. 获取实时行情快照(全A股)
    df_quotes = qd.quotes.get(
        universes=["CN_Stock"],  # 支持 CN_Stock / US_Stock / HK_Stock / CN_ETF[reference:16]
        to_dataframe=True
    )
    print(f"\n✅ 全A股实时行情:共 {len(df_quotes)} 只标的")
    print(df_quotes[["symbol", "last_price", "ext.change_pct"]].head(10))

except Exception as e:
    print(f"❌ 数据获取失败: {e}")
    print("💡 请确认:1) API Key 有效 2) 网络连接正常 3) 标的代码格式正确")

3.3 Claude Code MCP 配置(.mcp.json)

将 QuantDash 封装为 MCP 工具后,Claude Code 可通过以下配置直接调用:

{
  "mcpServers": {
    "quantdash": {
      "command": "python",
      "args": ["-m", "quantdash_mcp_server"],
      "env": {
        "QUANTDASH_API_KEY": "your-api-key-here"
      }
    }
  }
}

配置完成后,你只需在 Claude Code 中说:

“帮我分析贵州茅台最近30天的均线走势,计算5日和20日均线,并给出买入/卖出信号”

Claude Code 会自动通过 MCP 调用 QuantDash 拉取数据、计算指标、输出结果——全程零代码手写


四、性能优化与量化进阶避坑指南

🔥 避坑 1:避免未来函数——善用 end_time 参数

回测中最致命的错误是「未来函数」——即使用了回测时点之后的数据。QuantDash 的 end_time 参数可精确控制数据截止时间:

import datetime

# 获取 2026-06-01 之前的最近 30 根日K线
end = int(datetime.datetime(2026, 6, 1).timestamp() * 1000)
df = qd.klines.get(
    "600519.SH",
    period="1d",
    count=30,
    end_time=end,          # 关键:截止到 2026-06-01
    to_dataframe=True
)
# 这样确保回测不会"看到"未来的数据

🔥 避坑 2:本地 Parquet 缓存——减少重复请求

对于频繁访问的历史数据,建议使用 Parquet 格式缓存:

import os
import pandas as pd

cache_dir = "./data_cache"
os.makedirs(cache_dir, exist_ok=True)

def get_cached_klines(symbol, period, count, force_refresh=False):
    cache_file = f"{cache_dir}/{symbol}_{period}_{count}.parquet"
    if not force_refresh and os.path.exists(cache_file):
        return pd.read_parquet(cache_file)
    
    df = qd.klines.get(symbol, period=period, count=count, to_dataframe=True)
    df.to_parquet(cache_file)
    return df

🔥 避坑 3:Polars/DuckDB 加速——大数据量场景

QuantDash 原生支持 Pandas,但在处理数千只标的的海量数据时,建议转换为 Polars 或 DuckDB 进行内存高效计算:

import polars as pl

# QuantDash 返回 Pandas DataFrame,一键转 Polars
df_pd = qd.klines.get("600519.SH", period="1d", count=1000, to_dataframe=True)
df_pl = pl.from_pandas(df_pd)

# 高性能聚合计算
result = df_pl.group_by("symbol").agg([
    pl.col("close").mean().alias("avg_close"),
    pl.col("volume").sum().alias("total_volume")
])

五、常见问题解答

Q1: Claude Code 如何通过 MCP 调用 QuantDash 获取实时行情?

A: 在项目根目录配置 .mcp.json 文件,将 QuantDash 封装为 MCP Server 工具。配置完成后,Claude Code 会自动识别并调用这些工具。你只需用自然语言描述需求(如"获取 AAPL 当前价格"),Claude Code 会通过 MCP 协议调用 QuantDash 的 qd.quotes.get 接口返回实时数据。免费 API Key 可在 https://quantdash.net/dashboard/keys/ 获取。

Q2: QuantDash 支持哪些复权方式?MCP 调用时如何指定?

A: QuantDash 支持五种复权模式:

  • forward(默认):前复权 - 比例复权,适合计算收益率
  • backward:后复权 - 比例复权
  • forward_additive:前复权 - 差值复权,适合观察绝对价差
  • backward_additive:后复权 - 差值复权
  • none:不复权

在 MCP 工具调用时,只需在参数中指定 adjust 字段即可。

Q3: 如何用一套代码同时获取 A 股、美股、港股的数据?

A: QuantDash 采用统一的代码后缀格式:

  • A股:600519.SH(上交所)、000001.SZ(深交所)
  • 美股:AAPL.US
  • 港股:00700.HK

将任意组合传入 qd.klines.batch() 即可一次拉取多市场数据,无需切换任何配置。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐