在15分钟图表中获取4小时K线high[2]值遇编译错误求助
问题分析与解决方案
错误根源
request.security()执行范围错误:该函数不能放在if这类条件语句内部,它需要在每一根K线都执行,才能正确同步不同时间周期的数据,局部条件块内调用会导致数据同步异常,触发编译错误。- 偏移上下文混淆:即便偏移逻辑本身没问题,放在条件块内调用跨周期函数,也会加剧数据上下文的混乱,导致编译失败。
修正后的代码
// 全局作用域提前获取4小时周期的目标K线最高价,确保每根K线都执行该调用 four_hour_high_2 = request.security(syminfo.tickerid, "240", high[2]) if filteredtopf current_fractal_high := four_hour_high_2 current_fractal_high_index := bar_index-2 // 注意:若要对比的是4小时周期的最高价,需替换为four_hour_high_2,而非当前15分钟周期的high[2] if range_high == four_hour_high_2 range_high_fractal := true
额外说明
- 若你的实际需求是获取上一根已闭合的4小时K线最高价,需把
high[2]改为high[1]——high[1]在4小时周期下代表前一根已完成的K线最高价。 - 所有跨周期数据获取的
request.security()调用,必须放在全局作用域,不能被条件语句包裹,这是Pine Script的核心规则之一。
内容的提问来源于stack exchange,提问作者Keith Power
相关产品推荐
相关产品推荐

