获取最后N根K线枢轴点:回溯1000根K线无绘图问题求助
排查Pine Script枢轴点标注无显示问题
原代码核心问题
- 循环变量
i完全未使用:for i = 0 to 1000只是机械重复1001次相同逻辑,根本没遍历最后1000根K线的不同位置 - 枢轴点位置固定:
_possiblePivotHigh = _series[_rightBars]始终盯着同一个偏移位置的K线,未随循环移动检查点 - 自定义数组逻辑错误:构建数组的顺序和最大值索引计算不匹配,导致枢轴点判断条件永远不成立
修正后的代码
//@version=5 indicator("最后N根K线枢轴高点标注", overlay=true) // 可配置参数 left_bars = input.int(10, "左侧对比K线数") right_bars = input.int(10, "右侧对比K线数") lookback_num = input.int(1000, "回溯K线总数") if barstate.islast // 遍历最后lookback_num根内的所有可能枢轴点位置 for i = 0 to lookback_num - left_bars - right_bars // 定位当前要检查的目标K线偏移量 target_bar_offset = right_bars + i // 用内置函数判断该位置是否为枢轴高点 pivot_high_val = ta.pivothigh(left_bars, right_bars)[target_bar_offset] if not na(pivot_high_val) // 获取枢轴点的价格和K线索引 pivot_price = high[target_bar_offset] pivot_bar_idx = bar_index[target_bar_offset] // 绘制标注标签 label.new(pivot_bar_idx, pivot_price, str.tostring(pivot_price, "#.####"), color=color.new(color.red, 0), style=label.style_label_down, size=size.small)
修正说明
- 替换自定义逻辑为内置函数:直接用
ta.pivothigh()判断枢轴点,避免自己写数组遍历的索引错误,效率也更高 - 正确遍历目标K线:通过
target_bar_offset = right_bars + i让循环逐步移动检查位置,覆盖回溯范围内的所有可能枢轴点 - 简化变量逻辑:删除冗余的数组构建和索引计算,代码更易读且不易出错
内容的提问来源于stack exchange,提问作者x945
相关产品推荐
相关产品推荐

