Pinescript : b1[1] 的值从哪里来?,

问题描述 投票:0回答:1

我是 Pinescript 的初学者。我正在研究紫云,但是有一些地方我不明白。

b1 = 0.0
s14 =ta.sma(close,14)
b1 := na(b1[1])? s14:(b1[1]*13+close)/14

我认为b1的初始值为0.0,na(b1[1])返回false,所以如果继续(b1(1)*13 + close)/14,b1(1)为0,所以close/ 14应该出来了。看似可行,但实际上输出的是不同的值。 即使我用 sma(close,14)[1] 的值进行计算,我也得到了相似但不同的值。 当我打印b1(1)的值时,出现了非0的值,但我不知道错误在哪里。 b1(1) 的值从何而来?

//@version=5
strategy("Purple Cloud [MMD]",overlay=true, timeframe="", timeframe_gaps=true)

atrPeriod = 10
factor = 3.0

[supertrend, direction] = ta.supertrend(factor, atrPeriod)



x1 = 14
alpha = 0.7
bpt=1.4
spt=1.4

x2 = ta.atr(x1) * alpha 
xh = close + x2
xl = close - x2 


a1=ta.vwma(hl2*volume,3)/ta.vwma(volume,3)


a2=ta.vwma(hl2*volume,math.ceil(14/2))/ta.vwma(volume,math.ceil(14/2))

a3=2*a1-a2

a4=ta.vwma(a3,14)

----------------------------------------------------------------------------
b1 = 0.0
b1 := na(b1[1]) ? ta.sma(close, x1) : (b1[1] * (x1 - 1) + close) / x1

我知道使用三元运算符会变成 false,但我想知道重新分配的 b1[1] 的值是如何计算的。

variables pine-script reassign
1个回答
0
投票

在 Pine 脚本中,

b1[1]
指的是前一柱上
b1
的值。当脚本在第一个柱上运行时,
b1[1]
将为
na
,因为没有
b1
的先前值可供参考。此条件
na(b1[1])
计算结果为 true,导致三元运算符执行第一部分
ta.sma(close, x1)
。随着脚本执行的进行,
b1[1]
会保留
b1
之前的值。三元运算符的第一部分
ta.sma(close, x1)
将返回
na
,直到有足够的柱来计算 SMA 值。之后,第二部分将始终执行,因为
b1[1]
将永远不会再次成为
na

© www.soinside.com 2019 - 2024. All rights reserved.