如何在Cond1与Cond2两个条件区间内找到最高价?
如何在两个条件之间找到最高价?
你想要在Cond1(收盘价上穿指标A)和Cond2(收盘价下穿指标A)的区间内找出这段时间的最高价,但你给出的ta.pivothigh用法有误——这个函数的leftbars和rightbars需要传入固定的K线数量,不能直接用条件变量。
下面是正确的实现方式,通过标记区间并实时跟踪最高价来实现:
// 定义参考指标(这里用20周期均线示例,可替换为你的指标A) A = ta.sma(close, 20) // 定义两个条件 Cond1 = ta.crossover(close, A) Cond2 = ta.crossunder(close, A) // 用于存储区间内最高价的变量 var float highestBetween = na // 标记是否处于Cond1到Cond2的区间内 var bool inRange = false // 当Cond1触发时,开启区间跟踪,初始化最高价为当前K线高点 if (Cond1) inRange := true highestBetween := high // 在区间内时,持续更新最高价为当前区间内的最大值 if (inRange and not Cond2) highestBetween := math.max(highestBetween, high) // 当Cond2触发时,结束区间跟踪 if (Cond2) inRange := false // 绘制区间最高价 plot(highestBetween, color=color.red, title="Cond1-Cond2区间最高价")
代码逻辑说明:
inRange变量用来判断当前是否处于Cond1触发后、Cond2触发前的区间Cond1触发时,启动跟踪流程,把当前K线的高点作为初始最高价- 在区间内的每一根K线,都会将当前高点和已记录的最高价对比,保留较大值
Cond2触发时,关闭跟踪,此时highestBetween就存储了整个区间的最高价
内容的提问来源于stack exchange,提问作者BOB122
相关产品推荐
相关产品推荐

