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

TradingView:在低时间周期图表绘制高周期趋势线及筛选有效连线

在TradingView低周期图表绘制高周期趋势线并过滤无效连线

一、实现跨周期趋势线绘制

完全可以在低时间周期图表(如日线)中绘制高时间周期(如周线)的趋势线,核心是通过Pine Script的request.security()函数获取高周期K线数据,再在低周期图表上定位对应bar的位置并绘制连线。

以连接Week[2](上上周)和Week[1](上周)的周线高点为例,代码逻辑如下:

  1. 获取周线级别的高点数据与周线起始时间戳,用于定位低周期图表中的周线切换点;
  2. 当低周期K线进入新一周时,更新并存储上上周、上周的周线高点及其在日线图中的对应bar索引;
  3. 使用line.new()绘制两点间的连线。

示例代码片段:

//@version=5
indicator("周线级趋势线(日线图显示)", overlay=true)

// 获取周线数据:高点、周线起始时间戳
weeklyHigh = request.security(syminfo.tickerid, "W", high)
weeklyTime = request.security(syminfo.tickerid, "W", time)

// 标记周线切换点
isNewWeek = weeklyTime != weeklyTime[1]

// 存储上周和上上周的高点及对应bar位置
var float week1High = na
var int week1Bar = na
var float week2High = na
var int week2Bar = na

if isNewWeek
    // 切换到新一周时,将上周数据移至“上上周”,当前周数据存为“上周”
    week2High := week1High
    week2Bar := week1Bar
    week1High := weeklyHigh[1]  // 新一周第一根bar对应的weeklyHigh是当前周,取[1]得到上周高点
    week1Bar := bar_index[1]

// 当上周和上上周数据均有效时绘制连线
if not na(week2High) and not na(week1Bar)
    line.new(week2Bar, week2High, week1Bar, week1High, color=color.blue, width=2)

二、过滤无效连线

要过滤错误连线,需要先定义有效高点的判定规则,比如:

  • 该周高点是N周内的相对高点(如比前后1周的高点都高);
  • 两个高点构成的趋势线符合特定逻辑(如上升趋势要求Week[1]高点>Week[2]高点);
  • 排除连续周高点无明显趋势意义的情况。

以下是添加过滤条件的优化代码,以“仅保留上升趋势的周线有效阶段性高点连线”为例:

//@version=5
indicator("过滤后的周线级趋势线", overlay=true)

// 获取周线数据:当前周、前一周、后一周的高点,以及周线时间戳
weeklyHigh = request.security(syminfo.tickerid, "W", high)
weeklyHighPrev = request.security(syminfo.tickerid, "W", high[1])
weeklyHighNext = request.security(syminfo.tickerid, "W", high[-1])
weeklyTime = request.security(syminfo.tickerid, "W", time)

isNewWeek = weeklyTime != weeklyTime[1]

// 定义周线有效高点:当前周高点比前一周和后一周都高(阶段性高点)
isValidWeekHigh(highVal, prevHigh, nextHigh) =>
    highVal > prevHigh and highVal > nextHigh

// 存储周高点、对应bar位置及有效性标记
var float week1High = na
var int week1Bar = na
var bool week1IsValid = na
var float week2High = na
var int week2Bar = na
var bool week2IsValid = na

if isNewWeek
    // 更新上上周数据
    week2High := week1High
    week2Bar := week1Bar
    week2IsValid := week1IsValid
    
    // 记录上周的高点及有效性
    week1High := weeklyHigh[1]
    week1Bar := bar_index[1]
    week1IsValid := isValidWeekHigh(weeklyHigh[1], weeklyHigh[2], weeklyHigh[0])

// 仅当两个高点均为有效阶段性高点,且为上升趋势时绘制连线
if not na(week2High) and not na(week1High) and week2IsValid and week1IsValid and week1High > week2High
    line.new(week2Bar, week2High, week1Bar, week1High, color=color.blue, width=2)

自定义调整说明

  • 可修改isValidWeekHigh函数的判定逻辑,比如改为“高点高于前两周”,或结合成交量等指标强化有效性;
  • 若需保留下降趋势线,将week1High > week2High改为week1High < week2High即可,也可同时保留两种趋势的判定;
  • 若要避免重复绘制连线,可添加var关键字管理line对象,在新有效连线生成时删除旧的无效连线。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 04:35:26