PineScript如何在无TP/SL条件下实现持仓部分平仓?
用
strategy.exit实现自定义条件下的部分平仓(无需TP/SL) 要绕过strategy.exit必须指定TP或SL的限制,你可以给它设置一个永远不会触发的极端价格参数,这样就能仅依靠自定义条件完成50%的部分平仓。
核心思路
给strategy.exit配置一个超出标的合理价格范围的stop或limit参数,让TP/SL永远不会触发,同时保留自定义条件触发时执行部分平仓的逻辑:
- 多头持仓:设置
stop为极低价格(如0,适用于无零价的标的)或limit为极高价格; - 空头持仓:设置
limit为极低价格或stop为极高价格。
代码示例(多头场景)
//@version=5 strategy("自定义条件部分平仓", overlay=true) // 开仓逻辑 long_entry = ta.crossover(ta.sma(close, 5), ta.sma(close, 20)) if (long_entry) strategy.entry("多单进场", strategy.long) // 自定义平仓条件(示例:收盘价下穿10周期均线) partial_close_condition = ta.crossunder(close, ta.sma(close, 10)) if (partial_close_condition) // 设置永远不会触发的stop参数,仅执行自定义条件下的部分平仓 strategy.exit( id="多单部分平仓", from_entry="多单进场", comment="平50%多单", qty_percent=50, stop=0 )
注意事项
- 如果担心极端价格设置不合理,可以用历史极值来定义:比如多头
stop设为ta.lowest(low, 1000) * 0.9,确保价格不会触及; - 空头场景下,将
stop设为ta.highest(high, 1000) * 1.1即可避免触发止损,仅通过自定义条件平仓; - 该方法不会影响
strategy.exit的部分平仓逻辑,自定义条件满足时会精准平掉指定比例的持仓。
内容的提问来源于stack exchange,提问作者OmeletteAuFromage
相关产品推荐
相关产品推荐

