🚀 AI 一键生成 joinquant 策略代码

JoinQuant API 教程:如何使用 get_money_flow 获取股票资金流向数据?

joinquant | 发布时间: 2025/12/19
以下内容由 EasyQuant 生成。

问题描述

如何获取一只股票的主力资金净流入数据?

解决方案

在 JoinQuant(聚宽)平台中,获取一只股票的主力资金净流入数据,主要使用 get_money_flow 函数。

核心函数与字段

  • API 函数: get_money_flow
  • 关键字段: net_amount_main (主力净额)
  • 定义: 主力净额 = 超大单净额 (net_amount_xl) + 大单净额 (net_amount_l)
  • 单位: 万元

代码示例

以下代码展示了如何在研究环境回测中获取平安银行(000001.XSHE)的主力资金净流入数据。

# -*- coding: utf-8 -*-
from jqdata import *

# 示例1:获取指定时间段内的主力资金净流入
# 获取平安银行 2023-01-01 到 2023-01-10 的数据
df_range = get_money_flow(
    security_list='000001.XSHE', 
    start_date='2023-01-01', 
    end_date='2023-01-10', 
    fields=['date', 'sec_code', 'net_amount_main', 'net_pct_main']
)

print("指定时间段的主力资金数据:")
print(df_range)

# 示例2:获取截止到当前日期的过去 N 天数据
# 获取平安银行过去 5 个交易日的数据
df_count = get_money_flow(
    security_list='000001.XSHE', 
    count=5,
    fields=['date', 'net_amount_main']
)

print("\n过去5天的主力资金净流入(单位:万元):")
print(df_count)

字段详细说明

在使用 fields 参数时,你可以请求以下相关字段来辅助分析:

字段名 含义 备注
net_amount_main 主力净额(万) 核心数据。主力净额 = 超大单净额 + 大单净额
net_pct_main 主力净占比(%) 主力净额 / 成交额
net_amount_xl 超大单净额(万) 单笔成交 $\ge$ 50万股 或 100万元
net_amount_l 大单净额(万) 单笔成交 $\ge$ 10万股 或 20万元 (且小于超大单)
change_pct 涨跌幅(%) 当日的涨跌幅

注意事项

  1. 数据单位:返回的金额单位是万元,正数表示净流入,负数表示净流出。
  2. 数据范围:提供 2010 年至今的数据,频率为(日线数据)。
  3. 适用标的:仅包含股票数据,不可用于获取期货数据。
  4. 回测中的未来函数:在回测中调用时,为了避免未来函数,无法获取回测当前逻辑时间的那一条数据(即只能获取昨收及之前的数据)。

Q&A

Q: get_money_flow 可以获取实时的分钟级主力资金流向吗?
A: 不可以。该 API 提供的是日级别的数据。如果需要更高频的盘口分析,需要使用 Level-2 数据或通过 Tick 数据自行合成(Tick 数据可以通过 get_ticks 获取买一卖一或买五卖五数据进行估算,但计算量较大)。

Q: 这里的“主力”是如何定义的?
A: 聚宽定义的主力资金包含“超大单”和“大单”。

  • 超大单:大于等于50万股或者100万元的成交单。
  • 大单:大于等于10万股或者20万元且小于50万股或者100万元的成交单。

Q: 为什么我在回测中获取当天的资金流数据时,返回的数据比预期的少一天?
A: 这是为了防止未来函数。在回测的 handle_datarun_daily 中,当天的交易尚未结束或结算数据尚未生成,因此系统默认只返回截止到前一个交易日的数据。

Q: 如果 fields 参数不填会返回什么?
A: 如果 fields 默认为 None,函数将返回包含所有可用资金流字段(如中单、小单净额等)的 DataFrame。