Trading View三色摆动关系指标:内部K线匹配前K线颜色实现问询
TradingView三色K线指标:内部K线继承前K线颜色解决方案
你的核心问题是错误地尝试用barcolor()函数判断前一根K线的颜色——barcolor()是用来设置颜色的输出函数,不能作为条件判断的依据。正确的做法是先将每根K线的颜色规则存储为变量,再让内部K线直接继承前一根的颜色变量。
修正后的完整代码
//@version=5 indicator("3 Colour Bar Chart", overlay=true) // 1. 定义非内部K线的颜色规则(替换为你已完成的高低/外部K线逻辑) // 示例:这里模拟你的红绿蓝三色逻辑,可根据实际需求修改 baseBarColor = close > open ? color.green : close < open ? color.red : color.blue // 2. 判断当前是否为内部K线 isInside = high < high[1] and low > low[1] // 3. 确定当前K线颜色:内部K线继承前一根颜色,否则用基础颜色 currentBarColor = isInside ? baseBarColor[1] : baseBarColor // 4. 应用K线颜色 barcolor(currentBarColor)
关键逻辑说明
- 颜色变量存储:把非内部K线的颜色逻辑封装到
baseBarColor变量中,这部分直接替换成你已经完成的高低K线、外部K线的颜色判断代码即可。 - 内部K线判断:
isInside是标准的内部K线判定条件(当前K线高低都在前一根范围内)。 - 颜色继承:通过
baseBarColor[1]直接引用前一根K线的颜色变量,实现内部K线与前一根同色的需求。
扩展复杂颜色逻辑示例
如果你的非内部K线颜色区分更细致(比如外部突破K线),可以调整baseBarColor的定义:
// 示例:区分向上/向下外部K线的颜色逻辑 isOutsideUp = high > high[1] and low > low[1] // 向上突破外部K线 isOutsideDown = high < high[1] and low < low[1] // 向下突破外部K线 isNeutral = close == open // 十字星类K线 baseBarColor = isOutsideUp ? color.green : isOutsideDown ? color.red : isNeutral ? color.blue : na
内容的提问来源于stack exchange,提问作者R H
相关产品推荐
相关产品推荐

