创建带trailing stop(移动止损)的买卖订单是否有更简便的实现方法?
Pine Script带止损/移动止损交易指令优化方案
现有代码问题梳理
- 止损逻辑错误:做多仓位的止损位设置为100,远高于入场价和止盈价,仅会在价格上涨超过100时触发,完全背离做多止损(控制下跌亏损)的需求
- 离场指令ID重复:两个
strategy.exit都使用了相同的IDS1,会导致后定义的离场规则覆盖前者,无法为两个入场单独立配置止盈止损参数 - 硬编码价位灵活性差:所有入场、止盈、止损价位都写死为固定值,回测不同品种或周期时需要逐行修改,效率极低
优化后实现代码
//@version=5 strategy("带移动止损的买卖指令优化版", overlay=true, margin_long=100, margin_short=100) // 抽离可配置参数,方便调整 base_price = input.float(90, title="基准价位", minval=0) qty = input.int(10, title="下单数量", minval=1) trail_offset = input.float(1, title="移动止损偏移量", minval=0.1) stop_loss_offset = input.float(4, title="止损偏移量", minval=0.1) // 第一组多单 strategy.entry ("L1", strategy.long, qty = qty, limit = base_price - 2, stop = base_price - 4) strategy.exit ("S1", "L1", limit = base_price + 8, stop = strategy.position_avg_price - stop_loss_offset, trail_price=trail_offset) // 第二组多单 strategy.entry ("L2", strategy.long, qty = qty, limit = base_price - 4, stop = base_price - 6) strategy.exit ("S2", "L2", limit = base_price + 6, stop = strategy.position_avg_price - stop_loss_offset, trail_price=trail_offset)
优化点说明
- 修正止损逻辑:止损位改为以持仓平均价为基准向下偏移固定值,符合做多仓位控制下跌亏损的需求
- 离场指令ID独立:两个离场指令分别使用
S1、S2独立ID,可分别对应各自的入场单生效,不会出现规则覆盖问题 - 参数可配置化:所有核心参数都抽离到input输入项,调整参数不需要修改业务逻辑代码,适配不同品种、周期的回测需求
- 价位动态计算:以基准价为核心计算所有入场、止盈价位,调整时只需修改基准价即可,避免硬编码出现的数值错配问题
内容的提问来源于stack exchange,提问作者SimpleTrading101
相关产品推荐
相关产品推荐

