如何理解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)
等价于分步判断:
- 当当前
s等于前一根s[1]时,ud赋值为0 - 当当前
s大于前一根s[1]时:- 如果前一根
ud(经nz()处理空值后)≤0,ud赋值为1 - 否则,
ud赋值为前一根ud加1
- 如果前一根
- 当当前
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
相关产品推荐
相关产品推荐

