You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Pine Script编写收盘价突破前期高点且区间无更高高点的条件

问题诊断

你的代码没有输出预期标识,核心有三个错误:

  • 未使用var关键字声明the_high变量,每根K线计算时都会将the_high重置为当前K线最高价,high > the_high的条件永远不成立,无法正常累积历史高点。
  • barssince()函数要求入参是布尔型条件表达式,原代码传入了数值型的the_high[-1],返回值始终为无效值na,后续highest()计算结果也为无效值,space_between永远不满足触发条件。
  • 原有逻辑没有匹配需求里「高点与后续蜡烛实体重合、中间无更高高点阻挡」的判断规则,全局高点的更新逻辑也不符合需求。
修正后代码
//@version=4
study("High Space Higher Close",overlay=true)

// 用var声明变量,仅初始化一次,避免每根K线重置
var float prev_phase_high = na
var float last_high_bar = na

// 判断当前K线是否为阶段新高,20为阶段高点判断周期,可按需调整
is_new_high = high > highest(high, 20)[1]
if is_new_high
    prev_phase_high := high
    last_high_bar := bar_index

// 计算两个高点之间的最高值,判断是否有阻挡
bars_since_high = bar_index - last_high_bar
interim_high = highest(high, bars_since_high)[1]
no_block = interim_high <= prev_phase_high

// 判断收盘价突破前期阶段高点,且实体覆盖前期高点,中间无阻挡
trigger_signal = close >= prev_phase_high and no_block and not is_new_high

// 绘制标识:圆形标阶段高点,三角形标符合要求的突破点
plotshape(is_new_high, size=size.normal, location=location.abovebar, style=shape.circle, color=color.red)
plotshape(trigger_signal, size=size.normal, location=location.abovebar, style=shape.triangleup, color=color.green)
逻辑说明
  1. 用var关键字声明变量,保证历史阶段高点和对应K线位置只在满足条件时更新,不会每根K线重置。
  2. 通过指定周期的最高值判断阶段高点,你可以根据自己的需求调整highest(high, 20)里的周期参数,适配不同的高点判断规则,匹配你示例图的效果。
  3. 计算阶段高点出现后到当前K线之间的所有K线最高价,确认没有超过前期阶段高点的阻挡,满足两个高点之间只有更低高点的要求。
  4. 当收盘价超过前期阶段高点,且中间无阻挡时触发信号,绘制对应的标识。

内容的提问来源于stack exchange,提问作者Drewdavid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 17:39:02