PineScript问题:日线图开盘首K线未触发昨日收盘价警报
问题解决:日线图开盘第一分钟触发昨日收盘价警报
原问题描述
我尝试在日线图的当日开盘K线触发包含昨日收盘价的警报,编写的代码如下:
lastPrice = barstate.isrealtime ? close[1] : close message = "My beautiful alert message of previous close price: " + str.tostring(lastPrice) if (barstate.isfirst) alert(message, alert.freq_once_per_bar)
但印度市场9:15开盘时未触发任何警报。我的需求是:在开盘第一分钟(如9:15)触发该警报,警报设置为触发条件选“一次每根K线”,开启对应通知方式。
问题分析
原代码里的barstate.isfirst是指图表加载时的第一根历史K线,并非当日实时开盘的第一根K线,所以无法在开盘时段触发警报。需要结合实时行情状态和精准开盘时间条件来判断触发时机。
修正后的代码
// 定义印度市场开盘时间 openingHour = 9 openingMinute = 15 // 获取昨日收盘价(日线图中close[1]即为昨日收盘价) prevClose = close[1] message = "昨日收盘价警报:" + str.tostring(prevClose, "#.##") // 触发条件:实时行情 + 当前是开盘第一分钟的K线 + 仅触发一次 if barstate.isrealtime and hour == openingHour and minute == openingMinute alert(message, alert.freq_once_per_bar_close)
关键说明
- 时间精准匹配:直接指定开盘的小时和分钟,确保在9:15的K线触发警报
- 实时状态过滤:
barstate.isrealtime确保只在实时行情中触发,避免回测时误触发 - 警报频率选择:
alert.freq_once_per_bar_close会在K线收盘时触发,比alert.freq_once_per_bar更稳定,也可根据需求替换 - 配套设置:在TradingView警报设置中需确认:
- 触发条件选择“指标触发条件”
- 频率设置为“一次每根K线”
- 开启需要的通知方式(弹窗/邮件/APP通知等)
内容的提问来源于stack exchange,提问作者Pradip
相关产品推荐
相关产品推荐

