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

Pine Script V5报错:期望series float却用series string,数组及绘图问题求助

问题解决:Pine Script V5高成交量区间绘图报错及数组管理优化

核心错误分析

报错**"An argument of 'series string' type was used but a 'series float' is expected"**的直接原因:你将数组中存储的浮点价格值用str.tostring()转为了字符串,而box.new()的y坐标参数要求传入series float类型,类型不匹配导致报错。

修复步骤及优化代码

1. 修复类型不匹配问题

直接使用数组中存储的浮点数值作为box的上下边界,无需做字符串转换。

2. 优化数组与Box对象管理

  • 新增var box[]数组存储创建的box对象,避免重复创建导致的资源浪费
  • 当数组长度超过设定的lookback值时,同步删除旧的价格区间数据和对应的box对象,彻底释放资源

完整修复代码

//@version=5
indicator("High Volume Liquidity Zones", overlay=true)

int lookback = input.int(50, title="Lookback Period", minval=1)
float volumeThreshold = input.float(1.5, title="Volume Threshold (Multiplier of Average Volume)", minval=1.0)
int zoneWidth = input.int(5, title="Zone Width (in ticks)", minval=1)

// Calculate average volume
avgVolume = ta.sma(volume, lookback)

// Identify significant volume levels
significantVolume = volume > avgVolume * volumeThreshold

// Store high/low of significant volume bars and their box objects
var float[] zoneHighs = array.new_float()
var float[] zoneLows = array.new_float()
var box[] zoneBoxes = array.new_box()

if significantVolume
    // Apply zone width (convert ticks to price)
    adjustedTop = high + zoneWidth * syminfo.mintick
    adjustedBottom = low - zoneWidth * syminfo.mintick
    array.push(zoneHighs, adjustedTop)
    array.push(zoneLows, adjustedBottom)
    // Create new box and store it
    newZoneBox = box.new(bar_index, adjustedTop, bar_index + lookback, adjustedBottom, 
         border_color=color.new(color.blue, 0), bgcolor=color.new(color.blue, 90), 
         text="Liquidity Zone")
    array.push(zoneBoxes, newZoneBox)

// Maintain array size within lookback limit
while array.size(zoneHighs) > lookback
    // Delete old box to free memory
    oldBox = array.shift(zoneBoxes)
    box.delete(oldBox)
    // Remove corresponding price data
    array.shift(zoneHighs)
    array.shift(zoneLows)

// Highlight significant volume bars
bgcolor(significantVolume ? color.new(color.orange, 90) : na, title="Significant Volume")

关键优化点说明

  • 类型匹配修复:移除str.tostring()转换,直接传递数组中的浮点价格值给box.new()的y参数
  • Box生命周期管理:通过box[]数组跟踪所有创建的box,超出lookback时用box.delete()彻底删除旧对象,避免内存泄漏
  • 区间宽度生效:将输入的tick数转换为实际价格差,扩展区间上下限,符合需求设定
  • 循环逻辑优化:使用while替代if,确保一次出现多根高成交量K线时,数组长度仍能严格控制在lookback范围内

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 15:55:55