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

多时间框架ATR Trailing Stop颜色异常问题求助

ATR追踪止损线颜色异常问题修复

问题现象

ATR追踪止损线始终显示蓝色,无法根据持仓方向(多头/空头)切换为绿色或红色。

问题根源

原代码中,PlotColor基于当前周期的Position变量计算,但在跨周期调用request.security时,Position并未在目标周期(如60分钟)内同步计算,导致跨周期环境下Position始终为初始值0,对应蓝色。

修复方案

将持仓方向判断与颜色计算逻辑封装为函数,确保跨周期调用时能在目标周期内完成完整计算:

atrTimeframe = input.timeframe(title="ATR Timeframe", defval="60")
atrPeriod = input.int(10, "ATR Period")
atrMultiplier = input.float(3, "ATR Multiplier", step=.1)

ATR = ta.atr(atrPeriod)
Stop = atrMultiplier * ATR

// 封装止损线计算函数
atrStop() =>
    var atrTrailingstop = 0.0
    atrTrailingstop := if close > atrTrailingstop[1] and close[1] > atrTrailingstop[1]
        math.max(atrTrailingstop[1], close - Stop)
    else if close < atrTrailingstop[1] and close[1] < atrTrailingstop[1]
        math.min(atrTrailingstop[1], close + Stop)
    else if close > atrTrailingstop[1]
        close - Stop 
    else 
        close + Stop

// 封装持仓方向与颜色计算函数
getPositionAndColor() =>
    atrTrailingstop = atrStop()
    var Position = 0.0
    Position := if close[1] < atrTrailingstop[1] and close > atrTrailingstop[1]
        1
    else if close[1] > atrTrailingstop[1] and close < atrTrailingstop[1]
        -1
    else
        Position[1]
    PlotColor = Position == -1 ? color.red : Position == 1 ? color.green : color.blue
    [atrTrailingstop, PlotColor]

// 跨周期获取目标周期的止损线和对应颜色
[atrSecure, mtfColor] = request.security(syminfo.tickerid, atrTimeframe, getPositionAndColor(), gaps=barmerge.gaps_off, lookahead=barmerge.lookahead_off)

plot(atrSecure, color=mtfColor, linewidth=input(1, "Line Width"), title="ATR Trailing Stop")

关键修改说明

  • 新增getPositionAndColor()函数,将止损线计算、持仓方向判断、颜色计算逻辑整合在一起,确保跨周期调用时,所有计算都基于目标周期的数据执行
  • request.security直接调用该函数获取结果,保证止损线和颜色的计算环境一致,避免因周期不匹配导致的颜色错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 03:48:35