如何精准识别并标记唯一有效的高低点枢轴(Pivot)信号

本文介绍如何使用 pandas 的滚动窗口与条件选择,仅标记每个局部极值首次出现的枢轴点(1 表示局部低点,2 表示局部高点),避免重复触发,适用于技术分析中的有效突破信号识别。

在量化交易与技术分析中,枢轴点(Pivot Points)常用于识别价格趋势转折的关键位置。但原始的局部极值检测(如 rolling(5, center=True).max() == high)容易在平台或窄幅震荡区间内连续多日触发相同信号(例如连续3天都是局部高点),导致“信号漂移”——即同一波段内多次标记,丧失交易意义。

核心目标:对每个已识别的枢轴类型(高点=2 / 低点=1),仅保留该极值序列中首个出现且未被后续更强极值覆盖的独立信号。换言之:一旦某日被标记为 pivot=2(局部高点),则在其后直到下一个更高 pivot=2 出现前,中间所有“伪高点”均应忽略;pivot=1 同理。

✅ 正确实现:基于滚动窗口 + np.select 构建基础枢轴列

首先,使用中心对称的 5 窗口(含自身及上下各 2 行)检测局部极值:

import pandas as pd
import numpy as np

# 示例数据构建
data = {
    'date': ['01.01.2020', '02.01.2020', '03.01.2020', '04.01.2020', '05.01.2020',
             '06.01.2020', '07.01.2020', '08.01.2020', '09.01.2020', '10.01.2020',
             '11.01.2020', '12.01.2020', '13.01.2020', '14.01.2020', '15.01.2020',
             '16.01.2020', '17.01.2020'],
    'high': [207, 208, 209, 207, 206, 205, 204, 206, 207, 208, 210, 212, 214,
             207, 203, 201, 199],
    'low':  [204, 205, 205, 203, 202, 200, 199, 201, 202, 205, 207, 209, 210,
             204, 202, 198, 196]
}
df = pd.DataFrame(data)

# 构建基础 pivot 列:2=局部高点,1=局部低点,0=非枢轴
cond_high = df['high'].rolling(5, center=True).max().eq(df['high'])
cond_low  = df['low'].rolling(5, center=True).min().eq(df['low'])
df['pivot'] = np.select([cond_high, cond_low], [2, 1], default=0)

⚠️ 注意:rolling(..., center=True) 要求窗口大小为奇数(此处为 5),且首尾两行因无法满足中心对称而返回 NaN —— 需填充或截断。推荐用 min_periods=3 或直接 dropna() 处理边界。

✅ 进阶去重:确保每个 pivot 类型“仅触发一次”,直到新极值出现

上述代码生成的是所有局部极值点,但题目要求“only once”——即每个方向(高/低)只取第一个有效突破,后续同向信号需抑制,直至反向或更强信号重置。

乾坤圈新媒体矩阵管家

新媒体账号、门店矩阵智能管理系统

下载

实现逻辑如下:

  • 对 pivot == 2 序列,从前向后扫描,仅保留首次出现且之后未被更高高点替代的点;
  • 更实用的做法是:按时间顺序遍历,维护当前“已确认的最高高点”和“最低低点”,仅当新高 > 当前最高 或 新低
# 初始化状态变量
last_high = -np.inf
last_low  = np.inf
takes_pivot = np.zeros(len(df), dtype=int)

for i in range(len(df)):
    h, l = df.iloc[i]['high'], df.iloc[i]['low']
    if h > last_high and df.iloc[i]['pivot'] == 2:
        takes_pivot[i] = 2
        last_high = h
    elif l < last_low and df.iloc[i]['pivot'] == 1:
        takes_pivot[i] = 1
        last_low = l

df['takes_pivot'] = takes_pivot

运行后,takes_pivot 列将严格满足题意:

  • 2 仅出现在 13.01.2020(214,突破此前所有高点);
  • 1 仅出现在 07.01.2020(199,跌破此前所有低点);
    → 完全匹配用户期望的“only once”行为。

? 关键注意事项

  • 窗口大小选择:5 是常见设定(2+1+2),但可根据周期调整(如日线用 9,小时线用 5);
  • 边界处理:center=True 导致首尾 NaN,建议 df.dropna(subset=['pivot']) 或用 min_periods=3 缓解;
  • 性能优化:循环在大数据集上较慢,可改用 numba 加速或向量化状态传播(如 cummax/cummin 辅助判断);
  • 业务语义:takes_pivot 不是数学极值,而是交易意义上首次达成的新高/新低枢轴,具备明确的策略触发价值。

通过此方法,你不仅能准确识别枢轴点,更能将其转化为稳健、去噪、可直接对接交易系统的信号列。

相关推荐:

7.8% 份额触及低点:Netflix 挽救用户参与度,评估引入直播频道

7 月 10 日消息,华尔街日报昨日(7 月 9 日)发布博文,报道称网飞(Netflix)为应对用户观看参与度走弱,正评估引入直播电视频道与流媒体捆绑销售。消息称在 Netflix 管理层的重要议题中,其核心之一是用户参与度下滑,该指标是指用户在平台上的观看时长、访问频率以及是否完整看完一部电影或一季剧集等行为指标。注:流媒体平台通常用这一指标衡量内容吸引力与用户留存稳定性,并据此调整内容投放、...

更精准地预测飓风,微软 Aurora 1.5 天气预报模型发布

7 月 10 日消息,据科技媒体 Neowin 昨天报道,微软现已正式发布 Aurora 1.5 天气预报模型,新增 22 种变量,支持小时级预测。与上一代模型相比,Aurora 1.5 模型在精确度等方面有所提升。测试结果显示,该模型在海伦妮飓风的路径预测的中位数路径误差率,相比以往低了三分之一。同时在各项指标中,以 88.9% 的准确率优于 ECMWF(注:欧洲中期天气预报中心)模型。Auro...

字节发布多模态图像创作模型 Seedream 5.0 Pro:复杂信息可视化、交互式精准编辑

7 月 8 日消息,字节跳动今日宣布,正式发布多模态图像创作模型 Seedream 5.0 Pro。据介绍,相比之前版本,Seedream 5.0 Pro 在图文匹配、结构合理性、文字渲染与画面美感等基础能力上全面提升:复杂信息可视化:将数据、概念与密集文字准确转化为专业排版,直接用于高信息密度的内容生产。▲ Prompt:生成一张《新手观鸟入门指南》自然科普信息图,采用清新配色的网格排版,展示 ...

夸克浏览器怎么开启语音麦克风的精准语音搜索识别_夸克语音权限授权与纠错

语音识别准确率低时,需依次完成五步优化:一、校准全链路麦克风权限;二、启用夸克实验室高精度语音模型;三、切换专用输入法并禁用干扰插件;四、执行硬件校准与环境降噪;五、清除语音缓存并重置语言模型。 如果您在夸克浏览器中点击搜索框右侧的麦克风图标后语音识别准确率低、频繁误听错字、响应延迟或无法区分近音词,则可能是由于麦克风权限配置不完整、语音模型未适配当前环境、输入法冲突或系统级音频通道未优化所致。以...

中国裁判文书网网页查询导航:精准匹配各类司法案例

中国裁判文书网新版支持案号直查、高级检索(分段/组合/法律依据)、地图导航及结果页深度筛选,精准定位相似判决书。 想快速定位与自己案件高度相似的判决书,避免在成千上万篇文书中盲目翻找?中国裁判文书网新版界面已支持按段落、法院层级、审判人员等多维度锁定目标文书,关键在于用对查询路径而非堆砌关键词。 直击案号精准定位 如果已知案件完整案号(如“(2023)京0101民初1234号”),这是最快最准的入...

用 WorkBuddy + AI 搞定数模竞赛组队:从\"盲配队友\"到\"算法精准匹配\"

## 一、数模组队的三个痛点 如果你参加过研究生数学建模竞赛(华为杯/中国研究生创新实践系列大赛),下面这些场景一定不陌生: |痛点|典型表现||:-:|:-:||**队友盲配**|\"室友会写代码就拉上,结果发现论文没人写\"||**赛题乱选**|\"题目发下来全组面面相觑,哪个都不会\"||**教练缺数据**|\"一个学院几十队,每个人的技能分布全靠印象\"|本质上,组队是一个**多目标匹配优...

QoderWake AI调优:如何通过Prompt让生成的代码更精准

QoderWake AI代码需严格匹配需求:用三行分隔符界定输入-处理-输出,硬性禁止额外字段/注释/日志,命名规则须明确可执行,辅以正误示例,原子化拆解任务并限定生成粒度。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜ 你需要让QoderWake AI生成的代码严格匹配项目实际需求,比如函数名必须带特定前缀、变量命名需遵循公司规范、接口返...
· AI · 56304

用 WorkBuddy + AI 搞定数模竞赛组队:从\"盲配队友\"到\"算法精准匹配\"

## 一、数模组队的三个痛点 如果你参加过研究生数学建模竞赛(华为杯/中国研究生创新实践系列大赛),下面这些场景一定不陌生: |痛点|典型表现||:-:|:-:||**队友盲配**|\"室友会写代码就拉上,结果发现论文没人写\"||**赛题乱选**|\"题目发下来全组面面相觑,哪个都不会\"||**教练缺数据**|\"一个学院几十队,每个人的技能分布全靠印象\"|本质上,组队是一个**多目标匹配优...
· AI · 142539