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

Pinescript单一开仓多退出策略编写求助:止损全平+分阶止盈

问题

我的退出策略逻辑:

  • 触发止损时平仓全部仓位
  • 盈利10%时平仓50%仓位
  • 盈利20%时平仓全部剩余仓位

编写的代码如下:

strategy.entry("Enter Long")
strategy.exit("stop", stop=stopPrice)
strategy.exit("profit 1", entry_name="Enter Long", profit=10, qty_percent=50)
strategy.exit("profit 2", entry_name="Enter Long", profit=20)

但止损与止盈无法同时生效,调整代码顺序后总有一个失效。尝试将止损与止盈写在同一个strategy.exit中:

strategy.exit("profit 1", entry_name="Enter Long", profit=10, qty_percent=50, stop=stopPrice)

虽止损生效但仅平仓50%仓位,不符合止损全平的需求。请问如何编写正确的退出代码?

解决方案

要实现这个分批止盈+止损全平的逻辑,需要拆分独立的退出指令,明确每个指令的平仓比例和触发条件:

// 先定义入场价和止损价(示例,需根据你的策略逻辑赋值)
entryPrice = strategy.entry_price
stopPrice = entryPrice * 0.9 // 示例:止损为入场价下跌10%

// 建立多单仓位
strategy.entry("Enter Long", strategy.long)

// 止损指令:触发时全平所有仓位
strategy.exit("Stop Loss", "Enter Long", stop=stopPrice, qty_percent=100)

// 盈利10%时平仓50%仓位
strategy.exit("TP 50%", "Enter Long", limit=entryPrice * 1.1, qty_percent=50)

// 盈利20%时平仓剩余50%仓位,仅当还有仓位时生效
strategy.exit("TP 100%", "Enter Long", limit=entryPrice * 1.2, qty_percent=50, when=strategy.position_size > 0)

代码说明

  1. 止损指令:单独设置qty_percent=100,确保止损触发时直接平掉全部仓位,不会受其他止盈指令的影响。
  2. 第一批次止盈:用limit指定入场价1.1倍的价格(对应10%盈利),平仓50%仓位。
  3. 第二批次止盈:用limit指定入场价1.2倍的价格(对应20%盈利),平仓剩余50%仓位;加上when=strategy.position_size > 0的条件,避免在第一批次止盈触发前就提前生效。

注意:如果你的profit参数是用点数而非百分比,只需把entryPrice * 1.1这类计算换成entryPrice + 10(假设10是点数)即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 00:52:32