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

Pine Script交易策略如何获取多头入场价设置止盈止损

Pine Script 开仓价设置止盈止损解决方案

问题原因

  • 原代码中longCond只要满足ema50>ema200就会每根K线重复触发开仓指令,策略会持续加仓导致持仓平均价strategy.position_avg_price不停变动,TP/SL也会跟着反复更新,不符合预期
  • 没有限制开仓触发时机为首次进入多头信号的空仓状态,只有该时刻获取的入场价才是对应订单的实际开仓价格

修正后完整代码

strategy("止盈止损正确写法", overlay = true, initial_capital = 100)

ema50 = ema(close, 50)
ema200 = ema(close, 200)

plot(ema50)
plot(ema200)

// var关键字定义的变量仅初始化一次,不会随K线刷新重置
var float TP = na
var float SL = na
var bool holdLong = false

longCond = ema50 > ema200
// 仅在空仓且刚触发多头信号时执行开仓
if longCond and not holdLong
    strategy.entry("long", strategy.long)
    // 取最新一笔开仓订单的实际入场价,避免加仓导致平均价变动的影响
    entryPrice = strategy.opentrades.entry_price(0)
    TP := entryPrice * 1.2
    SL := entryPrice * 0.8
    holdLong := true

// 仅持有多头仓位时执行退出逻辑
if holdLong
    strategy.exit("close", "long", limit = TP, stop = SL)
    // 平仓后重置状态参数,为下次开仓做准备
    if strategy.position_size == 0
        holdLong := false
        TP := na
        SL := na

核心修改点说明

  • 新增holdLong状态变量记录当前持仓状态,避免信号持续期间重复开仓
  • 使用strategy.opentrades.entry_price(0)直接获取指定订单的入场价,比持仓平均价更精准,不受加仓行为影响
  • 仅在开仓触发的瞬间计算固定的TP/SL值,后续不会随行情或持仓变化更新,符合策略逻辑
  • 平仓后自动重置所有状态参数,保证下一次开仓逻辑正常执行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 20:36:01