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

如何理解TradingView PineScript的'?'条件语句?我的伪代码是否正确?

你的伪代码逻辑完全正确,仅存在小语法瑕疵

原PineScript函数的嵌套三元表达式逻辑,和你拆解的伪代码核心逻辑一致,具体对应关系如下:

原代码三元逻辑拆解

ud := isEqual ? 0 : isGrowing ? (nz(ud[1]) <= 0 ? 1 : nz(ud[1])+1) : (nz(ud[1]) >= 0 ? -1 : nz(ud[1])-1)

等价于分步判断:

  1. 当当前s等于前一根s[1]时,ud赋值为0
  2. 当当前s大于前一根s[1]时:
    • 如果前一根ud(经nz()处理空值后)≤0,ud赋值为1
    • 否则,ud赋值为前一根ud加1
  3. 当当前s小于前一根s[1]时:
    • 如果前一根ud(经nz()处理空值后)≥0,ud赋值为-1
    • 否则,ud赋值为前一根ud减1

你的伪代码语法修正版

if s == s.shift(1):
    ud = 0
else:
    if s > s.shift(1):
        if nz(ud[1]) <= 0:
            ud = 1
        else:
            ud = nz(ud[1]) + 1
    else:
        if nz(ud[1]) >= 0:
            ud = -1
        else:
            ud = nz(ud[1]) - 1

你对嵌套三元表达式的逻辑理解完全准确,只是伪代码里存在几处括号冗余/缺失的语法小问题,修正后就和原代码逻辑完全一致了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 15:15:37