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

如何利用TradingView ZigZag库数组识别趋势并修改背景色?

问题:TradingView ZigZag库高低点读取与趋势识别实现瓶颈

我在趋势识别环节遇到瓶颈,需求是对比TradingView的ZigZag库生成的最近高低点与前一高低点:

  • 当两者均更高时,将图表背景色改为绿色
  • 当两者均更低时,将图表背景色改为红色

该库将高低点以Pivot类型存储在array<Pivot> pivots数组中,但我无法读取该数组,目前纠结应使用持久化数组还是基于序列实时计算,恳请技术指导。

相关代码片段

export type ZigZag
    Settings     settings
    array<Pivot> pivots
    float        sumVol = 0
    Pivot        extend = na
export newInstance(series Settings settings = na) =>
    ZigZag result = ZigZag.new(na(settings) ? Settings.new() : settings, array.new<Pivot>())

解决方案

1. 解决pivots数组读取问题

从提供的代码看,ZigZag类型是export的,可通过实例对象直接访问pivots数组:

// 初始化ZigZag实例
zigZag = ZigZag.newInstance()
// 读取pivots数组
pivotsArray = zigZag.pivots

如果仍无法访问,说明库将pivots设为私有内部变量,此时需:

  • 查阅库文档,确认是否有公开方法(如getPivots())获取高低点数组
  • 若没有公开接口,可通过ZigZag输出的折线序列反向推导高低点(检测序列值的拐点)

2. 持久化数组vs实时计算的选择

选持久化数组的场景

  • 需要保留全量历史高低点,用于跨周期验证、多维度趋势分析
  • 高低点生成逻辑复杂,重复计算会浪费性能
    实现示例:
// 用var关键字确保数组持久化
var array<Pivot> persistentPivots = array.new<Pivot>()
// 当ZigZag生成新高低点时,追加到数组
if (newPivotGenerated)
    array.push(persistentPivots, latestPivot)

选实时序列计算的场景

  • 仅需对比最近2-3个高低点,无需全量历史数据
  • 追求代码简洁,不想维护额外数组
    实现示例:
// 用var存储最近两次高低点的价格
var float lastHigh = na
var float prevHigh = na
var float lastLow = na
var float prevLow = na

// 检测到新高点时更新
if (zigZagHighDetected)
    prevHigh := lastHigh
    lastHigh := high[zigZagHighBarIndex]
// 检测到新低点时更新
if (zigZagLowDetected)
    prevLow := lastLow
    lastLow := low[zigZagLowBarIndex]

3. 背景色设置实现

拿到有效高低点数据后,通过bgcolor()函数实现背景色切换:

// 判断趋势条件
uptrend = not na(lastHigh) and not na(prevHigh) and lastHigh > prevHigh and lastLow > prevLow
downtrend = not na(lastLow) and not na(prevLow) and lastLow < prevLow and lastHigh < prevHigh

// 设置半透明背景色,避免遮挡K线
bgcolor(uptrend ? color.new(color.green, 90) : downtrend ? color.new(color.red, 90) : na)

内容的提问来源于stack exchange,提问作者Frei und Schön

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 05:55:10