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

如何在Pine Script中基于15分钟K线收盘价触发30分钟图表警报?

在TradingView 30分钟图表上基于15分钟K线收盘价触发警报的解决方案

问题根源

你的代码通过request.security获取15分钟收盘价,但在30分钟K线周期下,close_15m会在30分钟K线的每一个更新节点(包括盘中)返回当前15分钟K线的最新价格,导致警报触发逻辑不符合预期:要么创建后立即触发,要么按30分钟收盘价触发。

解决方案

要实现仅在15分钟K线收盘时触发一次警报,需同时调整代码逻辑和警报配置:

1. 修改Pine Script代码

添加15分钟K线收盘检测逻辑,同时避免同一根15分钟K线重复触发警报:

//@version=5
indicator("15分钟止损警报", overlay=true)

// 定义监控的时间框架
timeframe_to_check = "15"

// 获取15分钟收盘价+检测15分钟K线是否刚收盘
[close_15m, is_15m_bar_closed] = request.security(syminfo.tickerid, timeframe_to_check, [close, barstate.islast])

// 持仓状态与止损价格(请确保你已在代码中定义open_position和sl_price)
var bool open_position = false
var float sl_price = na

// 标记止损是否已触发,避免同一根15分钟K线重复触发
var bool stop_triggered_flag = false

// 新15分钟K线启动时重置触发标记
if is_15m_bar_closed
    stop_triggered_flag := false

// 止损触发条件:15分钟收盘价破止损+持仓+未触发过
stop_loss_hit = close_15m < sl_price and open_position and not stop_triggered_flag

// 触发后标记为已触发
if stop_loss_hit
    stop_triggered_flag := true

// 定义警报条件
alertcondition(stop_loss_hit, title="止损触发", message="{{ticker}} 15分钟收盘价跌破止损")

2. 配置警报的正确步骤

在TradingView警报设置中:

  • 触发条件选择**「每根K线一次」**
  • 保持图表时间框架为30分钟,无需修改
  • 不要选择「每根K线收盘价一次」(该选项基于当前图表的30分钟K线收盘价)

逻辑说明

  • is_15m_bar_closed会在15分钟K线收盘瞬间返回true,确保仅在目标时间点检测条件
  • stop_triggered_flag避免30分钟K线盘中多次更新时,同一根15分钟K线重复触发警报
  • 新代码解决了旧版本中「创建警报立即触发」的问题:初始状态下触发标记为false,仅当新的15分钟K线收盘且满足止损条件时才会触发

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 14:41:15