【发布时间】:2022-01-11 19:04:15
【问题描述】:
我有以下 Pinescript 语句,我正在尝试使用 python 数据帧来实现。
Hlv = float(na)
Hlv := close > sma_high ? 1 : close < sma_low ? -1 : Hlv[1]
第 1 行 - Hlv - 基本上是一个浮点变量名
第 2 行 - 为变量分配新值,三元运算符 (if-elseif-else)。赋值Hlv[1] 表示上一个值(Hlv 的值,1 步(行)后退)
现在在具有以下列和数据的 Dataframe 中实现这一点 ->
Current ->
Close SMA_High SMA_Low
10 12 5
12 14 6
13 17 7
现在,我想添加另一个名为 HLV 的列,存储每一行的 Hlv 值,基于我们将在 pinescript line2 中计算的条件。
Expected ->
Close SMA_High SMA_Low Hlv
10 9 5 1 // close > sma_high = 1
5 14 6 -1 // close < sma_low = -1
13 17 7 -1 // here no conditions are met , so previous value of Hlv is taken i.e -1
我无法弄清楚如何使用来自其他列的值生成这个新列,甚至不知道如何获取该列的先前值。
我查看了this 的答案,可以看到我们可以在以下条件下添加值 -
df['Hlv'] = pd.NA
df.loc[df.Close>df.SMA_High,'Hlv'] = 1
df.loc[df.Close<df.SMA_Low,'Hlv'] = -1
但仍然不确定如果不满足任何条件/默认情况,我如何填充以前的值。 提前致谢。
【问题讨论】: