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

Pine Script多时间框架绘制区间报错问题求助

Pine Script跨时间框架供需区间绘制问题解决

错误原因分析

  1. 数组创建语法错误:Pine Script不支持直接用[]字面量创建数组,必须使用官方提供的array.new_*()系列函数初始化数组,再通过array.push()添加元素。直接写[timeFrame30, ...]会触发语法错误。
  2. 循环变量类型错误:由于数组创建方式错误,导致循环语法不被解析,进而出现'time_frame' is not a valid type keyword的报错。

修正后的代码示例

//@version=5
indicator("跨时间框架供需区间", overlay=true)

// 1. 正确创建时间框架数组
var timeframes = array.new_int()
// 添加需要的时间框架(单位:分钟)
array.push(timeframes, 30)
array.push(timeframes, 45)
array.push(timeframes, 60)
array.push(timeframes, 120)
array.push(timeframes, 180)
array.push(timeframes, 240)
array.push(timeframes, 1440)  // 日线
array.push(timeframes, 10080) // 周线
array.push(timeframes, 43200) // 月线

// 2. 遍历时间框架数组
for current_tf in timeframes
    // 获取对应时间框架的高低价数据(核心:用request.security跨时间框架取数)
    [tf_high, tf_low] = request.security(syminfo.tickerid, current_tf, [high, low])
    
    // 3. 初始化供需区间数组(同样不能用[],需用array.new_*)
    var demand_zones = array.new_float()
    var supply_zones = array.new_float()
    
    // --- 这里补充你的供需区间识别逻辑 ---
    // 示例:简单识别区间(请替换为你的实际逻辑)
    if tf_low < ta.lowest(tf_low, 5)
        array.push(demand_zones, tf_low)
    if tf_high > ta.highest(tf_high, 5)
        array.push(supply_zones, tf_high)

// 4. 绘制供需区间(示例)
for zone in demand_zones
    line.new(bar_index - 5, zone, bar_index + 5, zone, color=color.green, width=2)
for zone in supply_zones
    line.new(bar_index - 5, zone, bar_index + 5, zone, color=color.red, width=2)

关键注意事项

  • 跨时间框架取数:必须使用request.security()函数获取目标时间框架的K线数据,否则无法基于其他时间框架计算区间。
  • 数组操作规范:所有数组必须用array.new_int()/array.new_float()等函数初始化,添加元素用array.push(),获取元素用array.get()。
  • 变量作用域:如果需要保留区间数据,记得用var声明数组,避免每次循环重新初始化。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 19:36:12