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

Pine Script v4如何固定开仓时ATR值计算止损止盈不随K线更新

Pine Script v4 固定开仓时ATR计算止损止盈实现方案

核心逻辑:使用var关键字声明需要持久存储的止损、止盈变量,仅在新开仓触发的K线完成赋值,持仓阶段不再更新数值,平仓后重置变量供下次开仓使用。

修改后完整代码

//@version=4
strategy("固定ATR止盈止损策略", overlay=true)

// 计算14周期ATR
atr = atr(14)

// 声明可持久存储的多单止损、止盈变量,无持仓时为na
var float longStopPrice = na
var float longTakeProfit = na

// 替换为你自己的开仓触发条件
longOpenCondition = crossover(sma(close, 5), sma(close, 20))
if (longOpenCondition)
    strategy.entry("Long", strategy.long)

// 仅在新开多仓的K线,用当时的ATR和开仓均价计算固定止损止盈
if (strategy.position_size[1] == 0 and strategy.position_size > 0)
    longStopPrice := strategy.position_avg_price - (atr * 1)
    longTakeProfit := strategy.position_avg_price + (atr * 1.5)

// 持仓阶段触发止损/止盈执行平仓
if (strategy.position_size > 0)
    strategy.exit("LongExit", "Long", stop=longStopPrice, limit=longTakeProfit)

// 平仓后重置变量,下次开仓重新计算
if (strategy.position_size == 0 and strategy.position_size[1] > 0)
    longStopPrice := na
    longTakeProfit := na

// 可选:在图表上绘制止损止盈线
plot(strategy.position_size > 0 ? longStopPrice : na, color=color.red, style=plot.style_linebr, title="多单止损")
plot(strategy.position_size > 0 ? longTakeProfit : na, color=color.green, style=plot.style_linebr, title="多单止盈")

注意事项

  • 代码中的longOpenCondition为示例开仓条件,需替换为你自身策略的实际开仓判断逻辑
  • 如需支持空单,按照相同逻辑声明空单对应的止损、止盈var变量,在新开空仓的判断节点完成赋值即可
  • 计算时固定使用开仓时刻的atr取值和strategy.position_avg_price,不要使用每根K线动态更新的close计算,避免点位随K线变动

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 05:06:03