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

Pine Script策略strategy.exit设定价位触发后未执行平仓问题求助

问题根因

  • 错误1:不必要的触发前置判断
    你在调用strategy.exit()前增加了if longTPTarget的判断逻辑,这会导致止盈止损订单仅在价格触及TP的那一根K线生效,该K线走完后订单会被自动撤销,后续即使价格再次达到目标位也没有对应订单触发平仓。strategy.exit()本身内置了价位监控能力,不需要手动判断价格是否达标。
  • 错误2:strategy.exit()参数传值错误
    你将stop参数也赋值为止盈价exitLongTP,相当于止盈止损设为同一个价位,完全不符合分开设置止盈止损的需求,stop参数应该传入止损价exitLongSL。
  • 错误3:调用时机错误
    strategy.exit()应该在开仓逻辑执行后立即调用,和开仓逻辑绑定,而不是等价格接近目标位才触发调用,否则会出现订单提交不及时的问题。
  • 潜在问题:缩进逻辑错误
    你当前贴出的代码里,strategy.entry()的外层判断if dateRange和if closeDistanceFromBaseline < atr没有正确缩进,如果实际代码也是这个格式,会导致开仓条件判断完全失效。

修正后的代码示例

//====================// 多头开仓逻辑 \====================\
// 多头开仓条件
longCondition1 = bBullTrend and c1LongSignal
longCondition2 = bLongSignal and c1BullTrend
longEntry = longCondition1 or longCondition2

// 执行多头开仓
if dateRange and closeDistanceFromBaseline < atr
    strategy.entry("Long", strategy.long, qty = totalPosition, when = longEntry)

// 绑定多头止盈止损
exitLongTP = valuewhen(longEntry, longProfit, 0)
exitLongSL = valuewhen(longEntry, longLoss, 0)
// 直接调用exit,不需要前置判断,策略会自动监控价位
strategy.exit("Long Exit", "Long", limit = exitLongTP, stop = exitLongSL)

额外验证建议

  • 确认longProfit和longLoss的计算逻辑没有未来函数,不会在开仓后发生数值漂移
  • 检查策略设置里的「仅在收盘价计算」选项是否开启,如果开启的话盘中触及价位不会触发平仓,只会在K线收盘后判断
  • 确认没有其他平仓逻辑(比如strategy.close())在止盈触发前提前平掉了多头仓位

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 20:15:03