基于Pine Script实现特定K线条件的警报与水平线绘制协助请求
Pine Script 新手需求实现:多条件触发警报+水平线绘制
需求梳理
你要触发警报或画水平线,得同时满足这三个核心条件:
- 当前K线没突破前一根K线的高点
- 当前K线收盘价跌破前一根K线的低点
- 当前K线快收盘了(比如走完95%的时间)
另外你原代码里还加了个“前一根K线低点在100周期EMA上方”的条件,下面的实现会保留这个逻辑。
完整可运行代码
//@version=5 indicator("跌破前低警报工具", overlay=true) // 计算100周期EMA ema100 = ta.ema(close, 100) // 定义各个触发条件 // 条件1:当前K线没突破前一根的高点(用最高价判断,确保整个K线都没碰过前高) cond_not_break_high = high <= high[1] // 条件2:当前收盘价跌破前一根K线的低点 cond_break_low = close < low[1] // 条件3:当前K线已运行95%的时间(接近收盘) bar_total_duration = time[1] - time cond_near_close = barstate.islast and (timenow - time) / bar_total_duration >= 0.95 // 你原代码里的额外条件:前一根K线低点在100EMA之上 cond_prev_above_ema = low[1] > ema100[1] // 所有条件同时满足才触发 trigger_all = cond_not_break_high and cond_break_low and cond_near_close and cond_prev_above_ema // 画出100周期EMA plot(ema100, color=color.blue, title="100周期EMA") // 满足条件时,在前一根K线的低点画水平线 var line low_line = na if trigger_all low_line := line.new(x1=bar_index[1], y1=low[1], x2=bar_index, y2=low[1], color=color.red, width=2) else line.delete(low_line) // 清除旧线条,避免画面杂乱 // 设置警报触发条件 alertcondition(trigger_all, title="跌破前低警报", message="快收盘了!当前K线跌破前低且没突破前高,前低在100EMA上方") // 保留你原代码里的背景色标记(可选,嫌乱可以删掉) bgcolor(trigger_all ? color.new(color.green, 40) : na)
关键细节说明
- 关于“未突破前高”:代码里用
high <= high[1],是确保当前K线从开盘到现在的最高价都没超过前一根的高点,如果你只关心收盘价没突破,改成close <= high[1]就行 - 接近收盘的判断:通过计算当前已运行时间占K线总周期的比例,95%这个数值可以自己改,比如想更早触发改成90%
- 水平线:满足条件时会自动画在前一根的低点,非触发时会删掉旧线条,避免画面上一堆线
- 警报:在TradingView的警报设置里选这个指标,就能收到触发通知,支持弹窗、邮件等方式
内容的提问来源于stack exchange,提问作者user20537640
相关产品推荐
相关产品推荐

