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

如何在TradingView分屏的30m及5m图表上绘制同一水平线?

在TradingView分屏的5m图表绘制30m周期计算的水平线

要在5m次级时间框架图表上绘制30m主框架计算出的水平线,核心是跨周期调用主时间框架的计算结果,使用TradingView内置的request.security()函数即可实现。

完整代码示例

//@version=5
indicator("跨周期水平线", overlay=true)

// 定义对应颜色(和你原代码的lgrLevelColor匹配)
lgrLevelColor = color.new(color.blue, 0)

// 1. 调用30m周期数据计算目标水平线数值
[upperlimit_30m] = request.security(syminfo.tickerid, "30", [close[1] - (close[1] - low[2])])

// 2. 在当前5m图表绘制并更新水平线
var line upperLine = na
// 仅当30m周期的数值更新时,创建/更新线条
if ta.change(upperlimit_30m)
    upperLine := line.new(bar_index, upperlimit_30m, bar_index + 1, upperlimit_30m, color=lgrLevelColor, extend=extend.right)
else
    // 数值未变化时,持续把线条终点延伸到最新bar
    if not na(upperLine)
        line.set_xy2(upperLine, bar_index, upperlimit_30m)

关键逻辑说明

  • request.security(syminfo.tickerid, "30", ...):指定调用当前标的的30m周期数据,计算并返回我们需要的upperlimit值,这是实现跨周期数据传递的核心。
  • ta.change(upperlimit_30m):仅在30m周期的水平线数值发生变化时才更新线条,避免在5m的每根K线上重复创建线条,减少资源占用。
  • var line upperLine = na:用var声明线条变量,确保它只会被初始化一次,不会随5m的每根K线重置。
  • 线条延伸:通过line.set_xy2持续更新线条终点到最新K线,实现和原代码extend.right一致的向右延伸效果。

额外提示

如果需要让指标同时适配30m和5m图表,可以添加时间框架判断逻辑:

if timeframe.is("30")
    // 原30m图表的绘制逻辑
    upperlimit = close[1] - (close[1] - low[2] )
    line.new(bar_index - 2, upperlimit, bar_index, upperlimit, color = lgrLevelColor, extend = extend.right)
else if timeframe.is("5")
    // 上述5m图表的绘制逻辑
    [upperlimit_30m] = request.security(syminfo.tickerid, "30", [close[1] - (close[1] - low[2])])
    // ...后续线条绘制代码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 05:55:01