Pine脚本查找高低枢轴点并绘制斐波那契回调线实现咨询
Pine Script枢轴点区间斐波那契实现方案
可行性确认
该需求完全可以在Pine Script中实现,无需依赖外部工具,核心通过内置的枢轴点识别、历史值回溯、区间极值统计函数即可完成,运行性能满足实盘需求。
核心逻辑实现说明
你需要的两类查找逻辑可直接通过Pine内置函数实现,无需自定义复杂循环:
- Lookback回溯前高枢轴:使用
ta.valuewhen(condition, source, n)函数,n为0时返回最近一次满足条件的数值,n为1时返回上一次,以此类推即可遍历所有历史符合要求的高枢轴点。 - Lookforward区间统计最低值:从指定高枢轴点的bar位置到当前bar的区间内,通过
ta.lowest(length)统计区间最低值,length取值为当前bar索引与高枢轴点bar索引的差值即可。
可直接运行的代码片段
//@version=5 indicator("枢轴点区间斐波那契回调", overlay=true, shorttitle="Pivot Fib") // 参数设置 pivot_left_right = input.int(2, title="枢轴点左右验证K线数") check_fib_level = input.float(0.618, title="条件判断用斐波那契水平") max_pivot_lookback = input.int(15, title="最大回溯高枢轴数量") // 识别高低枢轴点 pivot_high_val = ta.pivothigh(pivot_left_right, pivot_left_right) pivot_low_val = ta.pivotlow(pivot_left_right, pivot_left_right) // 存储有效高低点 var float valid_high = na var float valid_low = na var int valid_high_bar = na var int valid_low_bar = na // 遍历查找符合条件的高低点组合 find_success = false for i = 0 to max_pivot_lookback - 1 // 取第i个历史高枢轴 current_high = ta.valuewhen(not na(pivot_high_val), pivot_high_val, i) current_high_bar = ta.valuewhen(not na(pivot_high_val), bar_index, i) if na(current_high) break // 高枢轴需高于当前收盘价 if current_high <= close continue // 统计高枢轴出现后到当前的区间最低值 range_length = bar_index - current_high_bar range_lowest = ta.lowest(range_length) // 取区间内对应低枢轴点 current_low = ta.valuewhen(not na(pivot_low_val) and low == range_lowest, pivot_low_val, 0) current_low_bar = ta.valuewhen(not na(pivot_low_val) and low == range_lowest, bar_index, 0) // 确保低枢轴在高枢轴之后 if current_low_bar < current_high_bar continue // 计算判断用斐波那契水平 target_level = current_high - (current_high - current_low) * check_fib_level // 满足条件则保存数据跳出循环 if close < target_level valid_high := current_high valid_high_bar := current_high_bar valid_low := current_low valid_low_bar := current_low_bar find_success := true break // 绘制斐波那契回调线 if find_success fib_levels = array.new_float([0, 0.236, 0.382, 0.5, 0.618, 0.786, 1]) price_range = valid_high - valid_low // 遍历绘制所有斐波那契水平 for level in fib_levels level_price = valid_high - price_range * level line.new(valid_low_bar, level_price, bar_index, level_price, extend=extend.right, color=color.new(color.blue, 0), width=1, style=line.style_solid) // 标注高低枢轴点 plotshape(series=bar_index == valid_high_bar, title="高枢轴", location=location.belowbar, color=color.new(color.green, 0), style=shape.triangleup, size=size.small) plotshape(series=bar_index == valid_low_bar, title="低枢轴", location=location.abovebar, color=color.new(color.red, 0), style=shape.triangledown, size=size.small)
逻辑匹配说明
代码完全匹配你给出的测试逻辑:从最近的高枢轴点开始依次回溯测试,每个高枢轴对应其出现后到当前的最低枢轴点,计算目标斐波那契水平,若当前价格低于该水平则选用该组高低点绘制斐波那契回调线,否则继续回溯上一个高枢轴点测试,直至找到符合条件的组合或达到最大回溯次数。
内容的提问来源于stack exchange,提问作者JoHa
相关产品推荐
相关产品推荐

