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

使用Pine v6时ta.dev配合三元运算符报错,求排查原因

Pine Script v6 错误分析与修正

问题根源

你代码里的核心问题是三元运算符?:的第一个参数必须是布尔类型(true/false),但ta.dev(bar_hh, 2)返回的是标准差的计算结果(float数值),不是布尔值,这就导致了编译器报错。

ta.dev()的参数确实支持float类型,这点你没搞错,但它的返回值是计算后的标准差数值,不是用来做条件判断的布尔值。

修正方案

根据你的代码逻辑(当ta.dev的结果有效时取bar_hh,否则取na),需要把ta.dev的结果转换成布尔条件,比如判断它是否不为na:

float bar_hh = ta.highest(2)
float bar_h1 = ta.dev(bar_hh, 2) != na ? bar_hh : na

如果你的实际需求是判断标准差是否满足某个数值条件(比如大于某个阈值),可以改成这样:

float bar_hh = ta.highest(2)
// 示例:当标准差大于2时取bar_hh,否则取na
float bar_h1 = ta.dev(bar_hh, 2) > 2 ? bar_hh : na

补充说明

三元运算符condition ? value_if_true : value_if_false的规则是:

  • 第一个位置必须是布尔表达式(结果为true或false)
  • 后两个位置的类型要保持一致(这里都是float/na,符合要求)

内容的提问来源于stack exchange,提问作者M.Parent

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 06:12:03