Pine Script如何识别连续两根收盘价低于MA并在图表标记着色
问题原因分析
crossunder() 是交叉判断函数,仅当前一周期收盘价高于均线、当前周期收盘价低于均线(也就是首次下穿的瞬间)才会返回true。连续两根K线都低于均线的场景下,只有第一根可能触发crossunder,第二根已经处于均线下方,不会满足交叉条件,因此两个crossunder同时成立的概率极低,你的代码自然没有预期输出。
正确实现方案
基础版:识别任意连续两根收盘价低于MA的场景
直接判断连续两个周期的收盘价都低于均线即可,以下示例标记第二根符合条件的K线背景:
// 此处MA以20周期SMA为例,可替换为你自己定义的MA变量 ma = ta.sma(close, 20) // 核心判断逻辑:当前+前一根K线收盘价均低于MA twoLowerClosesMA = close < ma and close[1] < ma bgcolor(twoLowerClosesMA ? color.new(color.red, 90) : na, title="连续2根收于MA下方")
如果需要同时高亮连续两根符合条件的K线,调整为如下逻辑即可:
ma = ta.sma(close, 20) consecutiveLower = ta.barssince(close > ma) >= 1 bgcolor(consecutiveLower ? color.new(color.red,90) : na)
进阶版:仅标记首次下穿后的第二根K线
如果你的需求是仅标记收盘价首次下穿均线后的第二根符合条件的K线,不标记后续持续低于均线的周期,使用以下逻辑:
ma = ta.sma(close,20) // 首次下穿信号 firstCrossUnder = ta.crossunder(close, ma) // 下穿后第二根仍低于MA的信号 secondLowerAfterCross = firstCrossUnder[1] and close < ma bgcolor(secondLowerAfterCross ? color.new(color.red,90) : na)
内容的提问来源于stack exchange,提问作者Patrick
相关产品推荐
相关产品推荐

