请求创建仅在限价单触发时触发的策略警报(附代码)
创建仅触发于限价单的警报方案
你当前的代码存在问题:只要持有仓位就会触发alert(),不管是止损还是止盈成交,无法区分限价单(止盈)的触发场景。以下是两种实现仅在限价单被触及才触发警报的方案:
方案一:实时跟踪退出订单状态
直接通过strategy.exit()的返回值,判断订单是否由限价单触发:
// 多头仓位处理 if strategy.position_size > 0 exit_id = strategy.exit("Long Exit", "long", limit=long_tp_price, stop=long_sl_price, comment="Exit_Long") // 仅当限价单触发平仓时发送警报 if exit_id and strategy.exit_result(exit_id).limit_hit alert("多头止盈触发") // 空头仓位处理 if strategy.position_size < 0 exit_id = strategy.exit("Short Exit", "short", limit=short_tp_price, stop=short_sl_price, comment="Exit_Short") // 仅当限价单触发平仓时发送警报 if exit_id and strategy.exit_result(exit_id).limit_hit alert("空头止盈触发")
关键说明
- 将
strategy.exit()的返回值存入exit_id,用于跟踪该退出订单的执行状态 strategy.exit_result(exit_id).limit_hit会返回布尔值,仅当订单由限价单(止盈)触发时为true,此时才触发警报
方案二:检查历史平仓记录
通过查询已平仓订单的退出原因,判断是否为限价单触发:
// 检查最近一次平仓是否为多头止盈 if strategy.closedtrades > 0 and strategy.closedtrades.entry_id(strategy.closedtrades - 1) == "long" if strategy.closedtrades.exit_reason(strategy.closedtrades - 1) == strategy.exit_reason_limit alert("多头止盈触发") // 检查最近一次平仓是否为空头止盈 if strategy.closedtrades > 0 and strategy.closedtrades.entry_id(strategy.closedtrades - 1) == "short" if strategy.closedtrades.exit_reason(strategy.closedtrades - 1) == strategy.exit_reason_limit alert("空头止盈触发")
关键说明
strategy.closedtrades记录了所有已平仓订单的数量strategy.closedtrades.exit_reason()会返回订单的退出原因,strategy.exit_reason_limit代表限价单触发的平仓
两种方案都能实现你的需求,可根据策略逻辑选择适配的方式。
内容的提问来源于stack exchange,提问作者Maxim
相关产品推荐
相关产品推荐

