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

如何在TradingView Pine Script中获取周高低点的精确日期

在TradingView Pine Script中获取周线高低点的精确日期

要在周线图表上获取对应高低点的精确日期,核心思路是通过request.security()请求日线级别数据,从当周的日线K线中定位出周线高低点出现的具体时间。以下是可直接运行的实现代码及关键说明:

完整代码实现

//@version=5
indicator("周线高低点精确日期", overlay=true)

// 请求日线级别高点、低点及对应时间数据
[dailyHighs, dailyLows, dailyTimes] = request.security(
    syminfo.tickerid, 
    "D", 
    [high, low, time], 
    gaps=barmerge.gaps_on, 
    lookahead=barmerge.lookahead_off
)

// 处理周线高点对应的日期
weeklyHigh = ta.highest(high, 1)
var float targetWeeklyHigh = na
var int highOccurTime = na

// 每周初更新目标高点并查找对应日期
if ta.change(time("W"))
    targetWeeklyHigh = weeklyHigh
    // 遍历当周日线数据,匹配周线高点
    for i = 0 to bar_index - 1
        if dailyHighs[i] == targetWeeklyHigh
            highOccurTime := dailyTimes[i]
            break

// 处理周线低点对应的日期
weeklyLow = ta.lowest(low, 1)
var float targetWeeklyLow = na
var int lowOccurTime = na

if ta.change(time("W"))
    targetWeeklyLow = weeklyLow
    // 遍历当周日线数据,匹配周线低点
    for i = 0 to bar_index - 1
        if dailyLows[i] == targetWeeklyLow
            lowOccurTime := dailyTimes[i]
            break

// 在图表上标注高低点日期
var label highDateLabel = na
var label lowDateLabel = na

if ta.change(time("W"))
    // 格式化时间为yyyy-MM-dd格式
    highDateStr = str.tostring(highOccurTime, "yyyy-MM-dd")
    highDateLabel := label.new(bar_index, weeklyHigh, "高点日期: " + highDateStr, 
        color=color.new(color.green, 0), textcolor=color.white, style=label.style_label_down)
    
    lowDateStr = str.tostring(lowOccurTime, "yyyy-MM-dd")
    lowDateLabel := label.new(bar_index, weeklyLow, "低点日期: " + lowDateStr, 
        color=color.new(color.red, 0), textcolor=color.white, style=label.style_label_up)

关键逻辑说明

  • 日线数据请求:通过request.security()获取同一标的的日线high、low和time,lookahead=barmerge.lookahead_off确保无未来函数,保证信号准确性。
  • 周线切换判断:用ta.change(time("W"))识别每周的第一根K线,此时更新当周的高低点目标值,并开始遍历日线数据。
  • 高低点匹配:遍历当周的日线数据数组,找到与周线高低点数值完全匹配的K线,记录其time(时间戳)。
  • 日期格式化:用str.tostring()将时间戳转为yyyy-MM-dd的可读格式,通过label.new标注在对应高低点位置。

注意事项

  • 如果当周有多根日线K线的高点/低点与周线高低点数值相同,代码会取第一个出现的日期;若需取最后一个,可将遍历顺序改为从bar_index - 1到0。
  • 若标的存在跳空缺口,gaps=barmerge.gaps_on会保留这些缺口数据,避免遗漏可能的高低点。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 01:27:25