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

如何编写20点盈利触发的跟踪止损代码(不使用strategy.exit)

移动止损(Trailing Stoploss)实现方案(无需调用strategy.exit)

以下基于Pine Script语法实现需求,默认按外汇标准点规则计算:0.0001为1个点,20点对应0.0020,10点对应0.0010。

第一步:定义持久化状态变量

需要跨K线保留3个核心状态,避免每次K线刷新数据被重置:

  • var float entryPrice = na:存储多头头寸的入场价格
  • var bool trailingActivated = false:标记是否已经满足20点盈利的触发条件
  • var float trailingSL = na:存储当前生效的跟踪止损价位

第二步:设置跟踪止损触发条件

开仓时先初始化变量:触发多头开仓的同时,给entryPrice赋值为当前开仓价,同时重置trailingActivated为false、trailingSL为na。
持仓阶段判断触发逻辑,示例代码如下:

if strategy.position_size > 0 // 当前持有多头头寸
    // 未触发跟踪时,检查是否达到20点盈利要求
    if not trailingActivated
        if high >= entryPrice + 0.0020
            trailingActivated := true
            // 第一次触发时按规则初始化止损位
            trailingSL := high - 0.0030

第三步:实现止损位只上移不下调的逻辑

已经触发跟踪的状态下,仅当新计算的止损位高于原有止损位时才更新,否则保持原有数值不变,就可以实现价格回落时止损位固定不动的效果:

if trailingActivated
        newTrailingSL = high - 0.0030
        // 仅当新止损更高时更新,否则保留原值
        if newTrailingSL > trailingSL
            trailingSL := newTrailingSL

第四步:止损平仓逻辑

不需要调用strategy.exit,直接判断价格触碰止损位时执行平仓即可:

// 最低价触碰止损位时平仓,避免滑点漏单
    if trailingActivated and low <= trailingSL
        strategy.close("你的多头开仓指令ID")

扩展说明

  • 空头头寸逻辑对应反转即可:20点盈利判断为low <= entryPrice - 0.0020,跟踪止损计算用low + 0.0030,更新条件为新止损低于原有止损才更新,平仓判断为high >= trailingSL
  • 如果交易品种不是外汇直盘,对应调整点数换算规则即可,比如黄金按0.1为1个点,20点对应2、10点对应1,跟踪止损计算为high - 3
  • 可以把触发点数、跟踪偏移点数做成输入参数,方便后续调整不需要修改硬编码内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 22:18:02