用 Python 做日内分时分析:VWAP、量价分布与盘中节奏

📅 2026/7/13 14:13:04
用 Python 做日内分时分析:VWAP、量价分布与盘中节奏
大多数量化教程在讲解策略时往往只关注日 K 线。原因很简单日线数据获取门槛低、数据量小、逻辑好处理。但如果你只看日线就会丢失一个极为重要的维度——盘中发生了什么。同样是全天上涨 3%有些股票是早盘高开后一路横盘有些是尾盘最后半小时资金强行拉起还有些则是全天伴随成交量均匀放大震荡走高。这三种走势在日 K 线上看起来可能完全一样但背后的资金博弈和日内节奏却大相径庭。分时数据分钟线可以帮助我们洞察日线无法呈现的细节如盘中的量价分布、主力建仓与出货时段、以及VWAP成交量加权均价。本文将使用QuantDash的 Python SDK 快速获取日内分钟级数据[1]带大家手把手做几个实用的日内量化分析。一、 获取分钟级分时数据在进行分析前我们需要通过官方 SDK 拿数据。相比写爬虫去解析混乱的格式QuantDash 支持直接返回标准的 Pandas DataFrame[2]省去了清洗嵌套 JSON 的繁琐步骤。首先通过 pip 安装 SDKpip install quantdash然后我们使用下面的代码获取单只标的的 1 分钟级分时数据[3]from quantdash import QuantDash import pandas as pd # 初始化客户端会自动读取环境变量 QUANTDASH_API_KEY qd QuantDash(api_keyyour_api_key_here) # 获取贵州茅台(600519.SH)当天的 1 分钟 K 线数据 df qd.klines.intraday( symbol600519.SH, period1m, to_dataframeTrue ) # 按照交易时间排序并重置索引 df df.sort_values(trade_time).reset_index(dropTrue) print(f数据量: {len(df)} 条) print(df[[trade_time, open, high, low, close, volume, amount]].head(10))在 A 股市场中一个完整的交易日包含 240 分钟9:30–11:3013:00–15:00因此 1m 粒度的数据全天最多有 240 条数据结构非常饱满。二、 绘制分时走势图拿到数据后我们先通过可视化直观地看一下日内的量价波动情况import matplotlib.pyplot as plt # 解决 Matplotlib 中文显示问题 plt.rcParams[font.sans-serif] [SimHei] plt.rcParams[axes.unicode_minus] False fig, (ax1, ax2) plt.subplots(2, 1, figsize(14, 8), height_ratios[3, 1], sharexTrue) # 绘制价格分时线 ax1.plot(df.index, df[close], color#1f77b4, linewidth1.5, label收盘价) ax1.set_ylabel(价格 (元)) ax1.set_title(600519.SH 日内分时走势图) ax1.grid(True, alpha0.3) ax1.legend() # 绘制成交量柱状图 ax2.bar(df.index, df[volume], color#2ca02c, alpha0.6, width0.8, label成交量) ax2.set_ylabel(成交量 (股)) ax2.set_xlabel(分钟序号 (0-239)) ax2.grid(True, alpha0.3) ax2.legend() plt.tight_layout() plt.show()这种可视化能够帮我们大致定位盘中成交量异常放大的点接下来我们将通过量化指标对这些特征进行精确提取。三、 计算与应用分时 VWAPVWAPVolume Weighted Average Price成交量加权平均价是日内交易中最核心的技术指标之一。它的计算方法是某一时间段内的总成交额除以总成交量。在实际交易中大资金和机构通常以 VWAP 作为交易执行的基准。如果买入均价低于全天 VWAP则说明买入成本控制得较好反之亦然。我们来计算一下累计 VWAP 并将其画在价格图上# 计算累计成交额和累计成交量 df[cum_amount] df[amount].cumsum() df[cum_volume] df[volume].cumsum() # 计算日内累计 VWAP df[vwap] df[cum_amount] / df[cum_volume] # 可视化价格与 VWAP 的偏离度 plt.figure(figsize(12, 6)) plt.plot(df.index, df[close], labelClose Price, color#1f77b4, linewidth1) plt.plot(df.index, df[vwap], labelVWAP, color#ff7f0e, linestyle--, linewidth1.5) plt.title(600519.SH 价格与分时 VWAP 对比) plt.xlabel(分钟序号) plt.ylabel(价格) plt.legend() plt.grid(alpha0.3) plt.show()策略应用强弱判断如果价格长时间运行在 VWAP 线上方说明多头力量占据主导如果价格多次反弹触及 VWAP 线后遇阻回落则说明 VWAP 线在日内起到了关键的阻力位作用。均值回归当价格瞬间偏离 VWAP 达到一定百分比如过高或过低时往往伴随着短期的价格修正这为日内交易者提供了逢高做空或逢低做多的微观交易机会。四、 分析日内成交量分布在量化领域大家都熟悉“成交量分布常呈现 U 型规律”这一概念即早盘半小时和尾盘半小时成交最为活跃而中午时段成交清淡。我们用代码来验证一下具体的分布情况计算每个 15 分钟区间的成交量占比# 将时间转为 Datetime 格式 df[trade_time] pd.to_datetime(df[trade_time]) df df.set_index(trade_time) # 按 15 分钟重采样计算成交量总和 volume_15m df[volume].resample(15T).sum() volume_pct volume_15m / volume_15m.sum() * 100 print(各 15 分钟区间成交量占比 (%):) print(volume_pct.round(2))通过获取的具体占比数据我们可以识别异常资金如果在通常成交清淡的 13:30 - 14:00 时段成交量占比出现反常突增往往说明有大单资金或者突发消息在盘中进行定向干预这在日 K 线上是很难及时捕捉到的。五、 总结与延伸利用QuantDash统一且干净的 K 线与分时数据接口[2]我们可以非常轻松地完成日内微观结构的深度挖掘。不需要再去跟繁琐的数据解析、时区转换以及反爬逻辑做斗争仅仅几行 Python 代码就能够帮我们建立起对市场更细致的感知力。如果你正在构建自己的行情监控工作流或日内 T0 交易回测不妨试着用本文的方法算一算自己关注标的的 VWAP 与量价分布。相关链接 QuantDash 官方QuantDashPython SDK 快速开始快速开始 - QuantDash