Pine Script跟踪最高价时ta.highest返回空值如何动态降低回溯周期?
Pine Script 动态周期历史最高值实现方案
核心问题说明
- 原代码硬编码100周期间隔降级,长周期返回空值时直接跳转到小100的周期计算,中间数值断层导致结果跳变
- Pine Script 内置
ta.highest为预编译序列函数,长度参数需在编译阶段确定,无法在运行时for循环中动态传入可变长度调用
修正后可运行代码
//@version=5 indicator("HighsTracker", "", true) // 修正原参数类型错误,改为整数输入 max_lookback = input.int(defval=700, title="最长回溯周期", minval=1) // 获取日线高点 htfHigh = request.security(syminfo.tickerid, "1D", high, lookahead=barmerge.lookahead_on) float HH = na // 手动遍历历史高点,自动适配有效周期 for i = 1 to max_lookback current_high = htfHigh[i] // 遇到空值直接终止遍历,相当于自动降低回溯周期 if na(current_high) break // 累计取最大值 HH := math.max(HH, current_high) plot(HH, color = color.green, linewidth = 5)
逻辑说明
- 遍历从最近1根历史日线高点开始,最多回溯你设置的最长周期
- 只要遍历到空值就立刻停止,自动适配当前K线可支持的最大有效回溯周期
- 全程连续取值计算最大值,完全避免原代码的周期断层跳变问题
内容的提问来源于stack exchange,提问作者Marco
相关产品推荐
相关产品推荐

