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

如何自动设置止损(SL)与多档止盈(TP)?支持TradingView回测

实现TradingView自动拆分仓位并设置多档止盈止损

完全可以通过TradingView的Pine Script实现这个功能,且能完美支持复盘模式测试。下面是具体实现方案:

核心逻辑

  • 定义可配置参数:入场价格、总仓位、止损Ticks、各档止盈Ticks及对应拆分仓位
  • 触发入场信号后,基于入场价和Ticks计算止损(SL)与各档止盈(TP)的具体价格
  • 将总仓位拆分为多份独立子仓位,为每份子仓位绑定对应TP,同时统一设置SL
  • 适配TradingView订单系统,确保复盘模式下信号与订单行为一致

完整Pine Script代码示例

//@version=5
strategy("多档止盈止损拆分策略", overlay=true, default_qty_type=strategy.cash, default_qty_value=10000, initial_capital=100000, commission_type=strategy.commission.percent, commission_value=0.1, margin_long=10, margin_short=10, pyramiding=0)

// 可配置参数
input.float(enterPrice, title="入场价格", defval=25.000)
input.int(totalLots, title="总仓位(手)", defval=3)
input.int(slTicks, title="止损Ticks", defval=300)
input.int(tp1Ticks, title="止盈1 Ticks", defval=300)
input.int(tp2Ticks, title="止盈2 Ticks", defval=600)
input.int(tp3Ticks, title="止盈3 Ticks", defval=900)
input.int(tp1Lots, title="止盈1仓位(手)", defval=1)
input.int(tp2Lots, title="止盈2仓位(手)", defval=1)
input.int(tp3Lots, title="止盈3仓位(手)", defval=1)

// 自动获取品种最小变动单位(Tick值)
tickValue = syminfo.mintick

// 计算SL和各档TP价格
slPrice = enterPrice - slTicks * tickValue
tp1Price = enterPrice + tp1Ticks * tickValue
tp2Price = enterPrice + tp2Ticks * tickValue
tp3Price = enterPrice + tp3Ticks * tickValue

// 入场条件:价格触及设定入场价(可替换为自定义技术信号)
enterCondition = close >= enterPrice

// 执行入场与止盈止损设置
if (enterCondition and strategy.position_size == 0)
    // 拆分仓位入场,每份对应独立TP
    strategy.entry("Long TP1", strategy.long, qty=tp1Lots)
    strategy.entry("Long TP2", strategy.long, qty=tp2Lots)
    strategy.entry("Long TP3", strategy.long, qty=tp3Lots)
    
    // 为每个子仓位绑定TP和统一SL
    strategy.exit("Exit TP1", "Long TP1", limit=tp1Price, stop=slPrice)
    strategy.exit("Exit TP2", "Long TP2", limit=tp2Price, stop=slPrice)
    strategy.exit("Exit TP3", "Long TP3", limit=tp3Price, stop=slPrice)

// 绘制价格标记
plot(slPrice, color=color.red, title="止损价", style=plot.style_linebr)
plot(tp1Price, color=color.green, title="止盈1价", style=plot.style_linebr)
plot(tp2Price, color=color.blue, title="止盈2价", style=plot.style_linebr)
plot(tp3Price, color=color.orange, title="止盈3价", style=plot.style_linebr)
plotshape(enterCondition, title="入场信号", location=location.belowbar, color=color.green, style=shape.labelup, text="入场")

复盘模式适配说明

  1. 在TradingView界面开启Replay Mode,选择目标时间周期与交易品种
  2. 复盘过程中策略会实时触发入场信号,自动生成拆分仓位的订单及对应的SL/TP
  3. 通过复盘界面的订单历史,可查看每笔子仓位的平仓情况,验证SL和TP的触发逻辑是否符合预期

注意事项

  • 代码中通过syminfo.mintick自动获取品种最小变动单位,无需手动修改
  • 可将enterCondition替换为自定义技术信号(如MA交叉、RSI超买超卖等)
  • 若需支持限价/止损单入场,只需调整strategy.entry参数,添加limit或stop指定入场价格即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.11 13:33:15