如何将ATR止损逻辑接入现有PineScript策略的开平仓条件
Pine Script ATR止损与现有策略整合方法
操作步骤
- 首先新增持久化变量存储持仓状态下的止损价,避免无持仓时的无效ATR值触发错误平仓
// 新增变量:存储LongA订单的ATR止损价,var修饰符会保留历史值不会每根K线重置 var float longAtrStop = na - 持仓时同步更新止损价(如果要使用固定开仓时的ATR止损,仅在开仓信号触发时赋值一次即可;如果要使用动态跟踪ATR止损,持仓时每根K线更新数值即可)
这里以动态跟踪止损为例:// 持有LongA多单时更新止损价,空仓时重置为无效值 if strategy.position_size > 0 and strategy.opentrades.entry_id("LongA") != na longAtrStop := longStop else longAtrStop := na - 将止损触发条件添加到原有平仓逻辑的
when参数中即可,不需要修改原有开平仓的核心逻辑// 原有平仓条件z/t加上ATR止损触发条件(跌破止损价),也可以叠加你之前写的百分比止损条件 strategy.close("LongA", when= z or t or (not na(longAtrStop) and low <= longAtrStop) or (not na(longStopPrice) and low <= longStopPrice))
注意事项
- 如果你做的是双向策略,空单的逻辑和上面完全对称,新增
shortAtrStop变量,平仓条件加high >= shortAtrStop即可 - 可以通过调整
Use Structure参数切换止损计算逻辑:开启时会叠加过去N根K线的低点作为支撑参考,比单纯的ATR止损过滤更多假突破平仓信号
内容的提问来源于stack exchange,提问作者Trader_M
相关产品推荐
相关产品推荐

