如何在Pine Script中实现单调函数?求单调递增判断方案
在Pine Script中实现单调递增判断函数
首先明确:单调递增分非严格递增(每个值≥前一个值)和严格递增(每个值>前一个值)两种场景,下面分别给出对应实现。
基础单周期判断
非严格单调递增
适用于判断当前周期相对前一周期是否处于递增状态:
// 判断非严格单调递增(当前值 ≥ 前一周期值) isMonotonicIncreasing(src) => // 第一个K线无前置数据,默认返回true bar_index == 0 ? true : src >= src[1]
严格单调递增
把判断条件换成>即可:
// 判断严格单调递增(当前值 > 前一周期值) isStrictlyIncreasing(src) => bar_index == 0 ? true : src > src[1]
连续多周期递增判断
如果需要验证连续n个周期都保持递增状态,可以用循环实现:
非严格多周期递增
// 判断连续n个周期非严格单调递增,n默认最小为2 isMonotonicIncreasingN(src, n) => n := math.max(n, 2) allIncr = true // 遍历前n-1组相邻值,确保全部满足递增条件 for i = 1 to n-1 allIncr := allIncr and (src[i-1] >= src[i]) allIncr
严格多周期递增
// 判断连续n个周期严格单调递增,n默认最小为2 isStrictlyIncreasingN(src, n) => n := math.max(n, 2) allIncr = true for i = 1 to n-1 allIncr := allIncr and (src[i-1] > src[i]) allIncr
含缺失值的处理
如果数据源可能存在na(缺失值),需要先过滤无效值,避免逻辑错误:
// 处理含缺失值的非严格递增判断 isMonotonicIncreasingWithNA(src) => bar_index == 0 ? true : not na(src) and not na(src[1]) and src >= src[1]
使用示例
在主图中标记出满足非严格递增条件的K线:
//@version=5 indicator("单调递增判断示例", overlay=true) // 调用函数判断收盘价是否递增 isIncr = isMonotonicIncreasing(close) // 在满足条件的K线下方标记绿色标签 plotshape(isIncr, title="递增K线", location=location.belowbar, color=color.green, style=shape.labelup, text="递增") // 定义非严格单调递增函数 isMonotonicIncreasing(src) => bar_index == 0 ? true : src >= src[1]
内容的提问来源于stack exchange,提问作者gudé
相关产品推荐
相关产品推荐

