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

如何让TradingView仅在追踪止损订单成交后触发警报?

解决TradingView追踪止损订单成交后触发警报的问题

默认情况下,调用strategy.exit时会立即触发警报,但我们需要的是订单实际成交时才触发警报。你尝试的alert()函数无法关联{{strategy.order.alert_message}}模板变量,因为该变量仅绑定策略订单自带的警报,下面是可行的解决方案:

核心思路

通过strategy.closedtrades系列函数检测订单的成交状态与触发原因,在确认追踪止损订单成交后,调用自定义alert()触发通知,同时关闭strategy.exit的默认警报。

示例代码

//@version=5
strategy("Trail Stop Alert On Execution", overlay=true)

// 示例进场条件:收盘价上穿20日均线
ma20 = ta.sma(close, 20)
longEntry = ta.crossover(close, ma20)

if (longEntry)
    strategy.entry("Long", strategy.long)

// 自定义退出警报消息
exitAlertMsg = "追踪止损触发:多单已成交离场"

// 调用strategy.exit并关闭默认警报
strategy.exit('Exit Long', 'Long', trail_points=20, trail_offset=1, loss=500, disable_alert=true)

// 检测订单成交并触发警报
if (strategy.closedtrades > 0)
    // 获取最新成交订单的进场ID与退出原因
    lastTradeEntryID = strategy.closedtrades.entry_id(strategy.closedtrades - 1)
    lastExitReason = strategy.closedtrades.exit_reason(strategy.closedtrades - 1)
    
    // 匹配目标进场订单,且确认是追踪止损/固定止损触发的成交
    if (lastTradeEntryID == "Long" and (lastExitReason == strategy.exit_reason.trailing_stop or lastExitReason == strategy.exit_reason.stop))
        alert(exitAlertMsg, alert.freq_once_per_bar_close)

代码说明

  • strategy.closedtrades:返回已成交的订单总数,订单成交时数值会递增
  • strategy.closedtrades.entry_id(index):获取指定索引的成交订单对应的进场ID,strategy.closedtrades - 1指向最新成交的订单
  • strategy.closedtrades.exit_reason(index):判断订单退出原因,trailing_stop对应追踪止损触发,stop对应固定止损触发
  • alert.freq_once_per_bar_close:确保每个K线周期内仅触发一次警报,避免重复通知

动态内容替代模板变量

如果需要在警报中加入成交价格等动态信息,直接在消息中拼接变量即可,无需依赖模板:

exitAlertMsg = str.format("追踪止损成交:多单离场,成交价: {0}", strategy.closedtrades.exit_price(strategy.closedtrades - 1))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 21:49:55