在我的编码中,我遇到了将非python函数转换为自引用变量的python函数的问题。
简要介绍:自引用变量是一个变量,它引用其声明右侧前一个柱上的过去值。
有关自我引用变量https://blog.tradingview.com/en/tradingview-pine-script-new-features-223/
下此链接的详情但是,在第一个条上没有srv值,因此第一个条上缺少值srv 1(更确切地说,它将是NaN - 非数字)。要更改NaN值,可以将调用前一个值转换为nz函数
nz的 用系列中的零(或给定值)替换NaN值。
输入:
close smooth
date
01-07-02 5.4127 0.416113
02-07-02 5.4438 0.416113
03-07-02 5.4661 0.416114
04-07-02 5.5283 0.416115
05-07-02 5.5905 0.416116
08-07-02 5.6255 0.416116
09-07-02 5.6167 0.416116
10-07-02 5.2222 0.41611
11-07-02 5.1863 0.416109
12-07-02 5.3194 0.416111
15-07-02 5.333 0.416111
16-07-02 5.3155 0.416111
17-07-02 5.0445 0.416107
18-07-02 5.0804 0.416107
19-07-02 5.1513 0.416109
22-07-02 4.9735 0.416106
23-07-02 5.0619 0.416107
24-07-02 5.0619 0.416107
25-07-02 4.8492 0.416104
我想将以下函数转换为python代码
kama=nz(kama[1], close)+smooth*(close-nz(kama[1], close))
让我们看看具体情况
kama输出应采用dataframe stockdata ['kama']
的格式nz(kama 1,close)
这里第一次kama将是NaN因此将被分配并且第二次迭代之前的kama值将被考虑用于计算 因此,对于上面给出的输入,第一个kama值将是5.4127(第一个接近值)之后的前一个kama值。
平滑和关闭值已经可用,如何将此函数转换为非零计算的python代码。
最终的结果应该是 kama = nz(kama 1,close)+ smooth *(close-nz(kama 1,close))
预期输出
close smooth kama
date
01-07-02 5.4127 0.416113 prev.close+smooth*(prev.close-close)
02-07-02 5.4438 0.416113 prevourKama+smooth*(prev.row.close-previouskama)
03-07-02 5.4661 0.416114 "
04-07-02 5.5283 0.416115 "
05-07-02 5.5905 0.416116 "
08-07-02 5.6255 0.416116
09-07-02 5.6167 0.416116
10-07-02 5.2222 0.41611
11-07-02 5.1863 0.416109
12-07-02 5.3194 0.416111
15-07-02 5.333 0.416111
16-07-02 5.3155 0.416111
17-07-02 5.0445 0.416107
18-07-02 5.0804 0.416107
19-07-02 5.1513 0.416109
22-07-02 4.9735 0.416106
23-07-02 5.0619 0.416107
24-07-02 5.0619 0.416107
25-07-02 4.8492 0.416104
这里最终第一行没有kama值可用,因为我们检查前一个值,为了避免Nan值,更换关闭值。如果在任何一行中kama为零,那么它必须被替换为当前行收盘价值。