- 功能描述:获取沪深A股票资金流向数据,分析大单小单成交情况,用于判别资金动向
- 返回限量:单次请求最大返回6000行,总量不限制
- 接口权限:2000积分200次/分钟;5000积分500次/分钟
- 说明:
1. 每日18点~19点更新;
输入参数
名称 |
类型 |
必选 |
描述 |
ts_code |
str |
N |
股票代码 |
trade_date |
str |
N |
交易日期 |
start_date |
str |
N |
开始日期 |
end_date |
str |
N |
结束日期 |
上述四个参数至少传入一个;
输出参数
名称 |
类型 |
默认显示 |
描述 |
ts_code |
str |
Y |
TS代码 |
trade_date |
str |
Y |
交易日期 |
buy_sm_vol |
int |
Y |
小单买入量(手) |
buy_sm_amount |
float |
Y |
小单买入金额(万元) |
sell_sm_vol |
int |
Y |
小单卖出量(手) |
sell_sm_amount |
float |
Y |
小单卖出金额(万元) |
buy_md_vol |
int |
Y |
中单买入量(手) |
buy_md_amount |
float |
Y |
中单买入金额(万元) |
sell_md_vol |
int |
Y |
中单卖出量(手) |
sell_md_amount |
float |
Y |
中单卖出金额(万元) |
buy_lg_vol |
int |
Y |
大单买入量(手) |
buy_lg_amount |
float |
Y |
大单买入金额(万元) |
sell_lg_vol |
int |
Y |
大单卖出量(手) |
sell_lg_amount |
float |
Y |
大单卖出金额(万元) |
buy_elg_vol |
int |
Y |
特大单买入量(手) |
buy_elg_amount |
float |
Y |
特大单买入金额(万元) |
sell_elg_vol |
int |
Y |
特大单卖出量(手) |
sell_elg_amount |
float |
Y |
特大单卖出金额(万元) |
net_mf_vol |
int |
Y |
净流入量(手) |
net_mf_amount |
float |
Y |
净流入额(万元) |
各类别统计规则如下:小单:5万以下;中单:5万~20万;大单:20万~100万;特大单:成交额>=100万。数据基于主动买卖单统计;
净流入为主动买卖单的净值,基于L2订单计算,不能简单地使用大小单进行汇总;
示例:
示例1:获取单个交易日所有个股资金流向
通过传递trade_date可获取该交易日所有个股资金流向。
import tushare as ts pro = ts.pro_api() df = pro.moneyflow(trade_date='20260721') df
输出结果:
ts_code trade_date buy_sm_vol buy_sm_amount sell_sm_vol sell_sm_amount buy_md_vol buy_md_amount sell_md_vol sell_md_amount buy_lg_vol buy_lg_amount sell_lg_vol sell_lg_amount buy_elg_vol buy_elg_amount sell_elg_vol sell_elg_amount net_mf_vol net_mf_amount 0 002378.SZ 20260721 238701 52006.50 222232 48889.90 178260 39038.18 182737 39844.93 90891 20021.57 98172 21391.34 21107 4673.14 25818 5613.23 71423 15557.25 1 600216.SH 20260721 112168 13779.31 117184 14376.94 58978 7236.49 57893 7113.79 27351 3353.56 26352 3238.75 5500 676.76 2568 316.65 -14920 -1801.02 2 301258.SZ 20260721 11747 2642.58 11997 2696.79 6144 1377.53 4957 1114.94 1784 397.61 2221 495.99 0 0.00 500 110.00 -375 -86.05 3 605069.SH 20260721 70202 6462.90 76407 7069.13 24427 2237.00 24364 2222.41 11780 1079.50 11806 1079.10 7321 699.51 1153 108.27 -6810 -650.21 4 002689.SZ 20260721 47874 1205.77 21320 538.46 56931 1433.99 39631 1000.02 30220 762.83 74074 1864.11 0 0.00 0 0.00 -31393 -795.56 ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 5193 600257.SH 20260721 251634 11933.11 293394 13909.05 140159 6646.38 118793 5638.57 49577 2353.42 29183 1385.30 0 0.00 0 0.00 -58013 -2736.62 5194 600721.SH 20260721 188869 12836.31 202455 13762.87 112523 7653.81 100429 6838.86 37196 2528.00 36780 2493.01 6355 436.42 5279 359.80 -51912 -3533.16 5195 300602.SZ 20260721 134181 46483.68 118262 41134.61 94593 32789.00 94101 32552.96 56081 19307.22 66687 23043.19 16806 5885.05 22611 7734.18 14006 4696.01 5196 002348.SZ 20260721 136008 11731.82 82728 7194.63 131940 11336.33 118595 10281.24 96052 8228.33 140276 11966.58 54370 4541.18 76771 6395.21 99960 8442.19 5197 300484.SZ 20260721 27087 3113.60 24440 2821.63 15455 1781.41 16019 1849.80 3713 434.81 4676 535.33 0 0.00 1119 123.07 4091 474.93 5198 rows × 20 columns
示例2:获取单支股票的资金流向
通过传入ts_code可以指定返回特定股票资金流向数据。再传入start_date和end_date可限定返回的交易日范围。
df = pro.moneyflow(ts_code='002149.SZ', start_date='20260713', end_date='20260721') df
输出结果:
ts_code trade_date buy_sm_vol buy_sm_amount sell_sm_vol sell_sm_amount buy_md_vol buy_md_amount sell_md_vol sell_md_amount buy_lg_vol buy_lg_amount sell_lg_vol sell_lg_amount buy_elg_vol buy_elg_amount sell_elg_vol sell_elg_amount net_mf_vol net_mf_amount 0 002149.SZ 20260721 199658 61447.36 166562 51739.91 119411 37008.34 142228 43803.56 56822 17742.03 63185 19515.48 12710 4001.70 16626 5140.48 36333 10942.35 1 002149.SZ 20260720 167986 54194.52 141960 45793.30 93766 30335.18 110561 35767.11 54390 17578.17 60251 19433.35 16040 5156.26 19410 6270.37 13956 4542.37 2 002149.SZ 20260717 154180 53045.18 112754 38751.02 94887 32545.51 111374 38252.42 45002 15450.22 58227 19996.91 12540 4254.41 24254 8294.96 20480 7068.96 3 002149.SZ 20260716 133763 49413.05 89911 33277.30 70863 26242.67 86993 32132.14 36412 13416.14 52174 19264.95 11911 4371.44 23871 8768.92 -10143 -3805.94 4 002149.SZ 20260715 139171 53703.36 113426 43806.21 91664 35387.64 96991 37435.94 45298 17490.50 57982 22372.78 8290 3211.39 16024 6177.97 -19874 -7590.71 5 002149.SZ 20260714 209250 79087.72 179899 68107.26 163895 61826.47 173570 65445.86 89201 33567.83 107887 40615.76 44975 16901.47 45965 17214.61 2032 575.64 6 002149.SZ 20260713 110141 45397.90 69116 28570.59 110390 45554.13 91932 38012.42 69689 28818.52 88035 36388.23 28750 11981.21 69887 28780.51 24874 10021.14
示例3:计算单支股票资金流向及趋势分析
可以使用大单和特大单的买卖轧差来计算主力资金的净流入额。
import pandas as pd import matplotlib.pyplot as plt # 解决中文显示问题 plt.rcParams['font.sans-serif'] = ['SimHei'] # Windows,macOS可改为 ['Heiti TC'] plt.rcParams['axes.unicode_minus'] = False # 获取贵州茅台近3个月的资金流向 df = pro.moneyflow(ts_code='600519.SH', start_date='20260422') # 数据预处理 # 1. 将trade_date转为日期类型,用于正确排序 df['trade_date'] = pd.to_datetime(df['trade_date']) df = df.sort_values('trade_date') # 计算主力净流入金额 df['main_net_amount'] = (df['buy_lg_amount'] + df['buy_elg_amount']) - (df['sell_lg_amount'] + df['sell_elg_amount']) # 2. 为绘图准备x轴标签:将日期转为字符串格式,如 '2026-04-22' x_labels = df['trade_date'].dt.strftime('%Y-%m-%d') # 或 '%m-%d' 更简洁 # 根据数值正负生成颜色列表 colors = ['red' if value > 0 else 'green' for value in df['main_net_amount']] # 可视化 plt.figure(figsize=(14, 6)) # 适当调宽图表,防止标签拥挤 # 3. 绘制时x轴使用字符串标签列表 plt.bar(x_labels, df['main_net_amount'], color=colors, label='主力净流入(万元)') plt.xlabel('日期') plt.ylabel('净流入金额(万元)') plt.title('贵州茅台主力资金净流入趋势(仅展示交易日)') plt.legend() plt.grid(True, linestyle='--', alpha=0.6) # 4. 优化x轴显示:如果日期过多,可设置显示间隔 # 例如,只显示一部分标签,防止完全重叠 step = max(1, len(x_labels) // 20) # 最多显示约20个标签 plt.xticks(ticks=range(0, len(x_labels), step), labels=x_labels[::step], rotation=45) plt.tight_layout() plt.show()
输出结果:
示例4:识别全市场资金动向(单日快照)
获取某一交易日(如2026年7月21日)全部股票的资金流,筛选出主力资金净流入最多的股票。
# 获取指定日期的全市场资金流向 df_all = pro.moneyflow(trade_date='20260721') # 计算主力净流入金额 df_all['main_net'] = (df_all['buy_lg_amount'] + df_all['buy_elg_amount']) - (df_all['sell_lg_amount'] + df_all['sell_elg_amount']) # 筛选主力资金净流入Top 10 top_10 = df_all.nlargest(10, 'main_net') print("当日主力资金净流入Top 10:") print(top_10[['ts_code', 'main_net', 'net_mf_amount']])
输出结果:
当日主力资金净流入Top 10: ts_code main_net net_mf_amount 1953 300308.SZ 298843.22 257109.55 513 000725.SZ 182807.30 296711.88 260 300502.SZ 151384.05 352510.98 2704 002371.SZ 136398.81 -91395.70 1144 300857.SZ 102271.81 -4813.03 4105 300750.SZ 93947.22 16472.86 4356 300223.SZ 88961.81 11013.78 280 300408.SZ 86255.76 25612.20 2605 002475.SZ 80687.02 174239.37 4089 002156.SZ 76899.33 149022.72
说明:
本文说明
本文旨在对Tushare的个股资金流向moneyflow数据接口进行介绍,提供更多参考示例和使用说明。
本接口可获取沪深A股票资金流向数据,分析大单小单成交情况,用于判别资金动向。本文除了从交易日、个股方面简单介绍如何快速获取数据外,还演示了如何计算主力资金流向及对单支股票主力资金流向绘制趋势图,最后演示了如何筛选主力资金净流入top 10的个股。
本文目的是为了让用户和AIGC工具能够更便捷、准确地使用该接口。大家在使用过程中遇到什么问题和建议可在线留言,作者会进行数据探索将结果更新到文章中,并将建议反馈给Tushare团队。本文另一个目的也是为了聚集大家的智慧以创建“我为人人,人人为我”的共创氛围。