Pinescript技术问询:如何检测K线是否触及指定云区间
检测K线是否触及云区间的简洁实现
要彻底覆盖K线任意部分触及云区间的所有场景,不用写复杂的多条件判断,换个反向逻辑就能搞定:
核心代码(以Pine Script为例):
withinCloud = not (high < sensitiveCloudBottom or low > sensitiveCloudTop)
逻辑说明
这个逻辑从「完全不触及」的反向推导:
- 如果K线的最高价比云的下限还低,或者K线的最低价比云的上限还高,这两种情况是绝对没碰到云的。
- 只要不是这两种情况,就说明K线的价格范围(从low到high)和云区间存在重叠,也就是K线的任意部分触及了云。
覆盖的所有场景
这个逻辑能完美覆盖你之前遗漏的情况:
- K线直接穿过云区间(low低于云下限,high高于云上限)
- K线在单根K线内进出(比如开盘在云内、收盘在云外,反之亦然)
- K线的上影线或下影线触及云区间
- K线完全包含在云内
- 原逻辑覆盖的收盘价在云内的情况
内容的提问来源于stack exchange,提问作者Dicky Moore
相关产品推荐
相关产品推荐

