🚀 AI 一键生成 joinquant 策略代码
立即体验
👉 AI 生成代码 👈

JoinQuant 资金流向接口 get_money_flow 报错 ParamsError 怎么解决?

joinquant | 发布时间: 2026/6/2
以下内容由 EasyQuant 生成。

问题描述

查询资金流向的接口坏了吗?get_money_flow()

源代码:df_p=get_money_flow(list(stock),end_date=context.previous_date-datetime.timedelta(days=2),fields=['sec_code','net_amount_main'], count=1)

报错:
raise ParamsError("get_money_flow只能用来查询股票的资金流向数据")
jqdata.exceptions.ParamsError: get_money_flow只能用来查询股票的资金流向数据

解决方案

接口并没有坏。出现这个报错的原因是:您传入的 stock 列表中,包含了非股票的代码(例如指数代码、基金代码或期货代码等)。

根据 JoinQuant 官方 API 文档说明,get_money_flow 接口仅包含股票数据,不可用于获取期货、指数、基金等其他标的的数据。只要传入的列表中混入了一个非股票代码(比如沪深300指数 000300.XSHG),就会触发这个 ParamsError

解决方法

在调用 get_money_flow 之前,需要对您的 stock 列表进行过滤,剔除掉非股票的标的。您可以使用 get_security_info 函数来判断标的类型。

修改后的代码示例:

# 假设 stock 是您原本的标的列表或集合
original_stock_list = list(stock)

# 过滤出纯股票代码
pure_stock_list = []
for code in original_stock_list:
    info = get_security_info(code)
    # 确保标的存在且类型为股票
    if info and info.type == 'stock':
        pure_stock_list.append(code)

# 使用过滤后的纯股票列表查询资金流向
if pure_stock_list:
    df_p = get_money_flow(
        pure_stock_list, 
        end_date=context.previous_date - datetime.timedelta(days=2), 
        fields=['sec_code', 'net_amount_main'], 
        count=1
    )
    print(df_p)
else:
    print("列表中没有有效的股票代码")

常见排查点

  1. 指数代码混入:如果您是通过 get_index_stocks 获取成分股,有时为了对比基准,可能会不小心把指数本身(如 000001.XSHG 上证指数)加到了列表里。
  2. 退市股票:虽然退市股票也是股票,但为了稳妥,建议确保查询的标的在查询日期是正常上市的股票。

通过上述过滤步骤,即可完美解决 get_money_flow只能用来查询股票的资金流向数据 的报错问题。