如何查找最新HH、LL pivot point并判定其多空趋势
Pine Script枢轴点检测与多空判定解决方案
以下是修改后可直接使用的完整代码,已实现「检测枢轴点距当前K线间隔」和「多空判定」的需求:
// 枢轴点周期参数设置,值越小生成的枢轴点越多 prd = input.int(defval=10, title='枢轴点周期', minval=10, maxval=50) // 枢轴点间隔阈值,按需求设置为10,可自定义调整 threshold = input.int(defval=10, title='枢轴点最大间隔阈值', minval=5, maxval=20) var float ph = na var float pl = na ph := ta.pivothigh(prd, prd) pl := ta.pivotlow(prd, prd) // 存储上一个高点枢轴的价格、出现位置 var float last_ph = na var int last_ph_bar = na // 存储上一个低点枢轴的价格、出现位置 var float last_pl = na var int last_pl_bar = na // 计算最新枢轴点距离当前bar的数量 ph_bar_since = bar_index - last_ph_bar pl_bar_since = bar_index - last_pl_bar // 你需要的判定结果:最新枢轴点是否超过阈值间隔 ph_over_threshold = ph_bar_since > threshold pl_over_threshold = pl_bar_since > threshold // 多空趋势判定,补充初始值为na时的边界处理 pivotTrendHH = na(last_ph) ? "首次HH" : (ph > last_ph ? "Bullish" : "Bearish") pivotTrendLL = na(last_pl) ? "首次LL" : (pl > last_pl ? "Bullish" : "Bearish") ph_color = na(last_ph) ? color.blue : (ph > last_ph ? color.green : color.red) pl_color = na(last_pl) ? color.blue : (pl > last_pl ? color.green : color.red) if (ph) // 检测到高点枢轴 label.new(bar_index-prd, ph, pivotTrendHH, yloc=yloc.price, color=ph_color) last_ph := ph // 保存高点枢轴价格 last_ph_bar := bar_index - prd // 保存高点枢轴出现的bar索引 if (pl) // 检测到低点枢轴 label.new(bar_index-prd, pl, pivotTrendLL, yloc=yloc.price, color=pl_color) last_pl := pl // 保存低点枢轴价格 last_pl_bar := bar_index - prd // 保存低点枢轴出现的bar索引
核心修改说明
- 新增枢轴点出现位置的记录变量,通过
bar_index差值计算即可直接得到最新枢轴点和当前活跃K线的间隔bar数,ph_over_threshold和pl_over_threshold直接返回布尔值对应「是否超过10根bar」的判定结果 - 补充了首次出现枢轴点时的边界处理,避免初始值为na时的逻辑错误
- 所有参数支持自定义调整,可直接修改threshold输入参数调整间隔阈值
内容的提问来源于stack exchange,提问作者Pitt
相关产品推荐
相关产品推荐

