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

如何在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é

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 19:20:47