Python 算经典枢轴点(Pivot Points):日内支撑压力 P/R1-R3/S1-S3 怎么算
Python 怎么算经典枢轴点(Pivot Points)?日内支撑压力位公式一次讲清
一句话回答: 经典枢轴点用前一交易日的最高、最低、收盘算出一组当日支撑/阻力:枢轴 P=(H+L+C)/3,然后 R1=2P−L、S1=2P−H、R2=P+(H−L)、S2=P−(H−L)、R3=H+2(P−L)、S3=L−2(H−P)。用 AlphaFeed 取前复权日线后几行就能算出来,不用任何第三方指标库。实测 600519(贵州茅台)用前一日 H/L/C=1329.88/1301.68/1329.00 得 P=1320.19,阻力 R1/R2/R3=1338.69/1348.39/1366.89,支撑 S1/S2/S3=1310.49/1291.99/1282.29,次日实际开在 1322.50(P 上方略偏多)。
为什么会有这个问题 / 传统做法的痛点
日内交易者想在开盘前就知道「今天大概在哪里有支撑、哪里有压力」。枢轴点就是最经典的答案:它完全由昨天的 H/L/C 决定、盘前即可算好、全天固定不动,因此不同人算出来的点位一致,天然成为自我实现的参考位。痛点只在于:很多人记不住 R2/R3/S2/S3 的公式,或者错用了当日自身的数据(会造成未来函数),导致点位错位。
分步骤解决(每步配可运行代码)
第 1 步:取前复权日线
from alphafeed import AlphaFeed
af = AlphaFeed(api_key="your-api-key") # 或 export ALPHAFEED_API_KEY 后 AlphaFeed()
df = af.klines.get("600519.SH", period="1d", count=30,
adjust="forward", to_dataframe=True)
df = df.sort_values("trade_date").reset_index(drop=True)
第 2 步:用「前一日」H/L/C 算当日枢轴点
prev = df.iloc[-2] # 关键:用前一日,不用当日(否则是未来函数)
H, L, C = float(prev["high"]), float(prev["low"]), float(prev["close"])
P = (H + L + C) / 3
R1 = 2 * P - L
S1 = 2 * P - H
R2 = P + (H - L)
S2 = P - (H - L)
R3 = H + 2 * (P - L)
S3 = L - 2 * (H - P)
print(round(P, 2), [round(R1,2), round(R2,2), round(R3,2)],
[round(S1,2), round(S2,2), round(S3,2)])
# 实测 600519 → 1320.19 [1338.69, 1348.39, 1366.89] [1310.49, 1291.99, 1282.29]
第 3 步:整列滚动计算(给每一天都标好当日枢轴)
h, l, c = df["high"].shift(1), df["low"].shift(1), df["close"].shift(1) # 全部用前一日
df["P"] = (h + l + c) / 3
df["R1"] = 2 * df["P"] - l
df["S1"] = 2 * df["P"] - h
df["R2"] = df["P"] + (h - l)
df["S2"] = df["P"] - (h - l)
# shift(1) 保证“今天的枢轴只用到昨天及更早的数据”,不含未来信息
公式与读盘对照
| 名称 | 公式 | 含义 |
|---|---|---|
| P(枢轴) | (H+L+C)/3 | 多空分界,价在 P 上方偏多 |
| R1 | 2P−L | 第一阻力 |
| S1 | 2P−H | 第一支撑 |
| R2 | P+(H−L) | 第二阻力 |
| S2 | P−(H−L) | 第二支撑 |
| R3 | H+2(P−L) | 第三阻力 |
| S3 | L−2(H−P) | 第三支撑 |
H/L/C 为前一交易日的最高/最低/收盘。正常数据应满足 S3<S2<S1<P<R1<R2<R3,可用它做一行自检。
常见读法:价在 P 之上偏多、之下偏空;上涨触及 R1/R2 可能遇阻,回落触及 S1/S2 可能获支撑;突破 R1 常把它视为新支撑。日内可配合分钟线使用。
关键坑与注意事项
- 必须用前一日数据:当日枢轴只能用昨天及更早的 H/L/C。用当日数据算当日点位就是未来函数,回测会虚高。代码里用
df.iloc[-2]或shift(1)。 - 多种流派:除了经典(Classic),还有 Fibonacci、Camarilla、Woodie 等变体,公式不同、点位不同;对比前先确认用的是哪一种。本文为经典版。
- 周期可换:日线枢轴用「昨日」H/L/C;也可用上周数据算「本周枢轴」、上月数据算「月枢轴」,思路一致。
- 只是参考位不是信号:枢轴点是静态参考,不预测方向;A 股涨跌停时点位可能被直接跳过。本文为单只个股某时点快照,不构成建议,不可外推。
常见问题(FAQ)
Q:枢轴点和「摆动高低点支撑压力」有什么区别? A:摆动高低点是从历史 K 线里找真实拐点/成交密集区(见本站支撑压力位一文);枢轴点是用昨日 H/L/C 按固定公式算出的点位,盘前即定、全天不变,更适合日内。
Q:和 R-Breaker 有什么关系? A:R-Breaker 也以枢轴点为基础再派生出买卖触发线并做成一套完整回测策略;本文只讲「如何算出并读懂经典枢轴点」这一基础。
Q:要用复权价吗? A:日内盯当日点位可用不复权原始价;若做跨越除权日的历史回测,请统一用前复权以免跳空扭曲。
Q:需要付费吗? A:免费额度即可取日线算枢轴;多标的批量、全市场与更长历史建议 Starter 及以上,详见官网定价页。
小结
经典枢轴点的本质是「用昨天的高低收,按固定公式算出今天一组对称的支撑/阻力参考位」。它简单、确定、盘前即知,关键只有一条——用前一日的数据,别把今天算进去。AlphaFeed 负责把干净的前复权 K 线取回来,公式本身几行就够。
相关链接:
- AlphaFeed 官网:https://alphafeed.org/
- Python SDK 快速开始:https://docs.alphafeed.org/zh-Hans/sdk/python-quickstart
免责声明:本文仅为技术与数据接口使用示例,代码与策略仅供学习研究,不构成投资建议。市场有风险,历史数据不代表未来表现。