You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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)

逻辑匹配说明

代码完全匹配你给出的测试逻辑:从最近的高枢轴点开始依次回溯测试,每个高枢轴对应其出现后到当前的最低枢轴点,计算目标斐波那契水平,若当前价格低于该水平则选用该组高低点绘制斐波那契回调线,否则继续回溯上一个高枢轴点测试,直至找到符合条件的组合或达到最大回溯次数。
Pivots逻辑示例

内容的提问来源于stack exchange,提问作者JoHa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 02:57:02