求助:Pine Script实现连续内部K线识别及差异化标记
解决方案:延伸内部K线的识别与标记
要实现你要的效果,核心是追踪基准K线的高低点范围,后续K线只要没跳出这个范围,就持续标记为内部K线。Pine Script里不能用常规循环,得用var变量来持久化存储基准值,以下是完整实现代码:
//@version=5 indicator("Extended Inside Bars", overlay=true) // 定义原始K线类型 high_bar = high >= high[1] and low >= low[1] low_bar = high <= high[1] and low <= low[1] inside_bar = high < high[1] and low > low[1] outside_bar = high > high[1] and low < low[1] // 用var变量持久化存储基准K线的高低点(仅初始化一次) var float base_high = na var float base_low = na // 更新基准K线:当出现非内部K线时,把当前K线设为新基准 if not inside_bar base_high := high base_low := low // 判定延伸内部K线:当前K线未突破基准K线的高低点 extended_inside = high < base_high and low > base_low // 给K线上色:原始内部K线用黄色,延伸内部K线用橙色,其他用默认色 barcolor(inside_bar ? color.yellow : extended_inside ? color.orange : na) // 可选:标记基准K线(比如用红色背景) barcolor(not inside_bar and not extended_inside ? color.new(color.red, 80) : na)
关键逻辑说明:
var关键字:确保base_high和base_low只在脚本启动时初始化一次,后续K线会保留之前的数值,不会每次都重置。- 基准更新条件:只有当当前K线不是原始内部K线时,才更新基准——这意味着基准K线就是你说的“大K线”(比如示例里的大红K线)。
- 延伸内部K线判定:只要当前K线的高点低于基准高点、低点高于基准低点,就标记为延伸内部K线;一旦有K线突破这个范围,基准会被新的非内部K线更新,结束当前的延伸序列。
你可以根据需求调整颜色,或者添加其他可视化标记(比如箭头、文字)。
内容的提问来源于stack exchange,提问作者Sanket Kolte
相关产品推荐
相关产品推荐

