如何在Pine Script中用crossunder()检测价格跌破斐波那契水平触发警报
核心问题定位
你当前直接拿value_0_382这类变量和价格做比较的逻辑是错的,Auto Fib脚本里的value_0_382、value_0_5、value_0_618存储的是斐波那契的比例系数(即0.382、0.5、0.618这类小数),不是对应盘面的实际交易价格,这是你取不到有效对比值的根本原因。
正确获取档位实际价格的方法
Auto Fib脚本内部已经定义了三个核心计算变量:
startPrice:斐波那契统计区间的起点价格(对应波段高低点)endPrice:斐波那契统计区间的终点价格(对应波段高低点)diff:endPrice - startPrice的价格差值
你要计算任意档位的实际盘面价格,直接套用通用公式即可:档位实际价格 = endPrice + 档位系数 * diff
比如0.382档位的实际价格就是price_0_382 = endPrice + value_0_382 * diff,0.5、0.618档位的计算逻辑完全一致,算出来的数值和界面上展示的档位价格完全对齐。
代码修正方案
你可以直接替换你新增的警报逻辑为以下代码:
// 计算三个黄金档位的实际盘面价格 price_0_382 = endPrice + value_0_382 * diff price_0_5 = endPrice + value_0_5 * diff price_0_618 = endPrice + value_0_618 * diff // 判断是否跌破任意黄金档位且K线收盘确认 cross_down_fib = barstate.isconfirmed and (low < price_0_382 or low < price_0_5 or low < price_0_618) // 补充连续两根阳线的条件:连续两根收阳、且收盘价逐根抬高 two_green_candles = close > open and close[1] > open[1] and close > close[1] and close[1] > close[2] // 最终警报触发条件 alert_trigger = cross_down_fib and two_green_candles if alert_trigger alert("价格已跌破斐波那契黄金档位", alert.freq_once_per_bar_close) // 可选:把计算出来的档位价格绘制出来,和界面自带的斐波那契线对齐验证 plot(price_0_382, color=color.gold, title="0.382档位", linewidth=2) plot(price_0_5, color=color.gold, title="0.5档位", linewidth=2) plot(price_0_618, color=color.gold, title="0.618档位", linewidth=2)
补充说明
如果需要区分上涨回撤、下跌回撤的不同判断逻辑,只需要调整价格比较的方向即可,上述档位价格计算逻辑是通用的,不需要额外修改。
内容的提问来源于stack exchange,提问作者TheAmazingKnight
相关产品推荐
相关产品推荐

