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

Pinescript新手求助:30分钟周期调用日线ATR的30%判断箱体颜色

问题排查与代码修正

核心问题拆解

  • 计算逻辑错误:你写的sessionHighPrice - sessionHighPrice结果恒为0,永远无法满足大于ATR的条件,正确逻辑应该计算箱体的实际高度:sessionHighPrice - sessionLowPrice
  • ATR周期不匹配:当前ta.atr(5)获取的是30分钟周期的ATR,而需求是日线ATR,必须通过跨周期调用获取日线级别数据

修正后的代码片段

// STEP 5:
// During the session, update that session's existing box
if inSession
    box.set_top(sessionBox, sessionHighPrice)
    box.set_bottom(sessionBox, sessionLowPrice)

    box.set_right(sessionBox, bar_index + 1)

    // 获取日线周期的5期ATR
    dailyATR = request.security(syminfo.tickerid, "D", ta.atr(5))
    // 计算箱体实际高度
    boxHeight = sessionHighPrice - sessionLowPrice

    // 箱体高度超过日线ATR的30%时设为绿色,否则红色
    if boxHeight > dailyATR * 0.3
        box.set_bgcolor(sessionBox, upBoxColor)
        box.set_border_color(sessionBox, upBorderColor)
    else
        box.set_bgcolor(sessionBox, downBoxColor)
        box.set_border_color(sessionBox, downBorderColor)

补充说明

  • 跨周期数据调用request.security需要确保图表加载了足够的日线历史数据,否则初始阶段可能出现数据缺失
  • 若upBoxColor、downBoxColor等颜色变量未提前定义,需补充如下定义示例:
    upBoxColor = color.new(color.green, 80)
    upBorderColor = color.green
    downBoxColor = color.new(color.red, 80)
    downBorderColor = color.red
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 23:45:01