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

Pine Script中plotcandle数值异常及排序赋值问题求解

Pine Script plotcandle 数值异常修复方案

核心解决思路

因为plotcandle的参数要求为series[float]类型,无法直接传入数组转换后的单个float值,所以需要逐K线处理四个目标数值,分别计算出每根K线对应的真实开盘、最高、最低、收盘价后再传入函数。

具体实现方案

场景1:仅ssro.l与ssro.h数值反向

如果确认只是ssro.l和ssro.h的数值搞反,直接交换两者即可,是最简便的处理方式:

// 交换ssro的高低值,结合原开收盘价绘制蜡烛图
plotcandle(open, ssro.l, ssro.h, close, title="Fixed Candle", color=color.new(color.blue, 0))

场景2:需要对四个数值统一排序筛选

如果四个数值(ssro.l、ssro.h、open、close)都存在错位问题,需要从四个值中提取正确的高低开收:

// 获取当前K线的四个目标数值
val1 = ssro.l
val2 = ssro.h
val3 = open
val4 = close

// 计算当前K线的真实最高价和最低价
trueHigh = math.max(math.max(val1, val2), math.max(val3, val4))
trueLow = math.min(math.min(val1, val2), math.min(val3, val4))

// 临时数组存储四个值并排序,提取中间两个值作为开收候选
tempArr = array.new_float(4)
array.set(tempArr, 0, val1)
array.set(tempArr, 1, val2)
array.set(tempArr, 2, val3)
array.set(tempArr, 3, val4)
array.sort(tempArr)
midVal1 = array.get(tempArr, 1)
midVal2 = array.get(tempArr, 2)

// 保留原K线涨跌趋势,确定正确的开盘/收盘价
trueOpen := open > close ? math.max(midVal1, midVal2) : math.min(midVal1, midVal2)
trueClose := open > close ? math.min(midVal1, midVal2) : math.max(midVal1, midVal2)

// 绘制修复后的蜡烛图
plotcandle(trueOpen, trueHigh, trueLow, trueClose, title="Fixed Candle", color=color.new(color.blue, 0))

关键注意事项

  • plotcandle的四个参数必须为逐K线的序列值,不能直接传入数组转换后的单个float,所以所有计算都要基于当前K线的数值完成。
  • 筛选开收值时,务必保留原K线的涨跌趋势(open与close的相对大小),避免蜡烛图的阴阳方向错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.01 16:17:26