【发布时间】:2021-01-17 22:44:37
【问题描述】:
在尝试查找以下附加数据的 CCI 索引时。我面临一个问题。如果我们在下面使用
查找CCI 9 个周期移动平均线的值的代码,该值在 89 左右。但实际的CCI 值是 105。问题是计算标准偏差的方式。对于CCI,我们必须计算平均标准差。
df["TP"] = (df['HIGH'] + df['LOW'] + df['CLOSE']) / 3
df["SMATP"]=df["TP"].rolling(n, min_periods=n).mean()
df["AVSTDTP"]=df["TP"].rolling(n, min_periods=n).std()
df["CCI"]=(df["TP"]-df["SMATP"])/(.015*df["AVSTDTP"])
为此,我必须使用 for 循环来找到正确的 CCI 值。执行AVGSTD 偏差是否有更好的价值。所以可以找到正确的CCI 值。下面的代码工作正常,但有没有更好的方法来获得结果。
df["TP"] = (df['HIGH'] + df['LOW'] + df['CLOSE']) / 3
df["SMATP"]=df["TP"].rolling(n, min_periods=n).mean()
df["AVSTDTP"]=None
#df["AVSTDTP"]=df["TP"].rolling(n, min_periods=n).std()
for row in range(len(df)):
if(row >= n-1):
variances=0
for row1 in range(n):
variances=variances+abs(df["SMATP"].iloc[row] - df["TP"].iloc[row-row1])
df["AVSTDTP"].iloc[row] = variances/n
df["CCI"]=(df["TP"]-df["SMATP"])/(.015*df["AVSTDTP"])
以下是数据供参考。
DATE_TIME OPEN HIGH LOW CLOSE
18-08-2020 09:19 492.2 496.8 491.85 494.5
18-08-2020 09:24 494.5 498 493.25 497.45
18-08-2020 09:29 497.1 497.7 494.85 496.25
18-08-2020 09:34 496.35 496.75 495 495.5
18-08-2020 09:39 495.5 496.35 495 495.35
18-08-2020 09:44 495.3 496.45 495 496.4
18-08-2020 09:49 496.35 501.35 495.65 501.2
18-08-2020 09:54 501.2 502 499.35 501.45
18-08-2020 09:59 501.55 501.85 499.2 500.2
18-08-2020 10:04 500.45 500.65 499.4 500.15
18-08-2020 10:09 500.05 502.8 499.6 501.05
18-08-2020 10:14 501.3 504 501.3 503.5
18-08-2020 10:19 503.8 505.25 503.55 505
【问题讨论】:
标签: python average standards standard-deviation