Skip to main content
Glama

get_history_market_data

Retrieve historical market data for specified stock codes, date ranges, and periods with customizable fields using the XTQuantAI MCP server.

Instructions

获取历史行情数据

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
codesYes股票代码列表,用逗号分隔,例如 "000001.SZ,600519.SH"
end_dateNo结束日期,格式为 "YYYYMMDD",为空表示当前日期
fieldsNo字段列表,用逗号分隔,为空表示所有字段
periodNo周期,例如 "1d", "1m", "5m" 等1d
start_dateNo开始日期,格式为 "YYYYMMDD"

Implementation Reference

  • The core handler function that implements the tool logic. It parses input, calls xtdata.get_market_data to fetch historical market data for given stock codes, period, dates, and fields, converts numpy arrays to lists, and returns the data as a dictionary.
    async def get_history_market_data(input: GetMarketDataInput) -> Dict[str, Any]: """ 获取历史行情数据 Args: codes: 股票代码列表,用逗号分隔,例如 "000001.SZ,600519.SH" period: 周期,例如 "1d", "1m", "5m" 等 start_date: 开始日期,格式为 "YYYYMMDD" end_date: 结束日期,格式为 "YYYYMMDD",为空表示当前日期 fields: 字段列表,用逗号分隔,为空表示所有字段 Returns: 历史行情数据 """ try: # 确保XTQuant数据中心已初始化 ensure_xtdc_initialized() if xtdata is None: return {"error": "xtdata模块未正确加载"} # 解析股票代码列表 codes = [code.strip() for code in input.codes.split(",") if code.strip()] if not codes: return {"error": "未提供有效的股票代码"} # 解析字段列表 fields = [] if input.fields: fields = [field.strip() for field in input.fields.split(",") if field.strip()] # 如果未指定字段,使用默认字段 if not fields: fields = ["open", "high", "low", "close", "volume"] print(f"获取历史行情数据: 股票={codes}, 周期={input.period}, 字段={fields}, 开始日期={input.start_date}, 结束日期={input.end_date}") try: # 获取历史行情数据 print(f"调用xtdata.get_market_data({fields}, {codes}, {input.period}, {input.start_date}, {input.end_date})") data = xtdata.get_market_data(fields, codes, period=input.period, start_time=input.start_date, end_time=input.end_date) # 处理返回值 if data is None: return {"error": "获取历史行情数据失败"} # 将数据转换为可序列化的格式 result = {} for code, stock_data in data.items(): code_result = {} for field, values in stock_data.items(): # 将numpy数组转换为列表 if hasattr(values, "tolist"): code_result[field] = values.tolist() else: code_result[field] = list(values) result[code] = code_result return result except Exception as e: print(f"获取历史行情数据出错: {str(e)}") traceback.print_exc() return {"error": f"获取历史行情数据失败: {str(e)}"} except Exception as e: print(f"处理历史行情数据请求出错: {str(e)}") traceback.print_exc() return {"error": str(e)}
  • Pydantic model defining the input schema for the get_history_market_data tool, matching the inputSchema in registration.
    class GetMarketDataInput(BaseModel): codes: str # 股票代码列表,用逗号分隔,例如 "000001.SZ,600519.SH" period: str = "1d" # 周期,例如 "1d", "1m", "5m" 等 start_date: str = "" # 开始日期,格式为 "YYYYMMDD" end_date: str = "" # 结束日期,格式为 "YYYYMMDD",为空表示当前日期 fields: str = "" # 字段列表,用逗号分隔,为空表示所有字段
  • MCP tool registration in handle_list_tools(), defining name, description, and input schema for the tool.
    types.Tool( name="get_history_market_data", description="获取历史行情数据", inputSchema={ "type": "object", "properties": { "codes": { "type": "string", "description": "股票代码列表,用逗号分隔,例如 \"000001.SZ,600519.SH\"" }, "period": { "type": "string", "description": "周期,例如 \"1d\", \"1m\", \"5m\" 等", "default": "1d" }, "start_date": { "type": "string", "description": "开始日期,格式为 \"YYYYMMDD\"", "default": "" }, "end_date": { "type": "string", "description": "结束日期,格式为 \"YYYYMMDD\",为空表示当前日期", "default": "" }, "fields": { "type": "string", "description": "字段列表,用逗号分隔,为空表示所有字段", "default": "" } }, "required": ["codes"] } ),
  • Tool dispatch logic in the MCP server's @server.call_tool() handler, which validates arguments, creates input model, calls the handler function, and formats response.
    elif name == "get_history_market_data": if not arguments or "codes" not in arguments: return [types.TextContent(type="text", text="错误: 缺少必要参数 'codes'")] # 处理字符串格式的codes参数 codes_str = arguments["codes"] codes = [code.strip() for code in codes_str.split(",") if code.strip()] period = arguments.get("period", "1d") start_date = arguments.get("start_date", "") end_date = arguments.get("end_date", "") # 处理字符串格式的fields参数 fields_str = arguments.get("fields", "") fields = [field.strip() for field in fields_str.split(",") if field.strip()] input_model = GetMarketDataInput(codes=codes_str, period=period, start_date=start_date, end_date=end_date, fields=fields_str) result = await get_history_market_data(input_model) return [types.TextContent(type="text", text=json.dumps(result, ensure_ascii=False, indent=2))]

Other Tools

Related Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/dfkai/xtquantai'

If you have feedback or need assistance with the MCP directory API, please join our Discord server