BollingerBand - rolling_mean - 长度数字
BollingerBand - rolling_mean - length number
我有一个关于布林带的问题。
在下面的代码中,只有当我们将长度设为“1”时才会出现结果。但是,给 length 赋 1 是不合逻辑的。
dataframe = pd.DataFrame(data = speed)
length=2
def bbands(data, length, numsd=2):
ave = pd.stats.moments.rolling_mean(data,length)
sd = pd.stats.moments.rolling_std(data,length)
upband = ave + (sd*2)
dnband = ave - (sd*2)
print 'ave:', ave
print 'sd:', sd
print np.round(ave,3), np.round(upband,3), np.round(dnband,3)
print bbands(dataframe, length=10, numsd=1)
print speed
dataframe['ave'], dataframe['upper'], dataframe['lower'] = bbands(dataframe, length, numsd=1)
dataframe.plot()
当我参加任何数字而不是“1”的长度时,"ave" 被计算为以下结果。 (我给了length 3,如果我增加length数,NaN的个数也会增加)
[1440 rows x 1 columns] 0
0 NaN
1 NaN
2 92.250
3 92.254
4 92.459
5 93.639
6 94.250
.....
第一个 length - 1
值出现 rolling_mean
和 rolling_std
return NaN
。这是有道理的,因为它一次用 length
值计算这些值。您可以从结果数据框中过滤掉 NaN
s:
ave = pd.stats.moments.rolling_mean(data,length)
ave = ave.dropna()
sd = pd.stats.moments.rolling_std(data,length)
sd = sd.dropna()
我有一个关于布林带的问题。 在下面的代码中,只有当我们将长度设为“1”时才会出现结果。但是,给 length 赋 1 是不合逻辑的。
dataframe = pd.DataFrame(data = speed)
length=2
def bbands(data, length, numsd=2):
ave = pd.stats.moments.rolling_mean(data,length)
sd = pd.stats.moments.rolling_std(data,length)
upband = ave + (sd*2)
dnband = ave - (sd*2)
print 'ave:', ave
print 'sd:', sd
print np.round(ave,3), np.round(upband,3), np.round(dnband,3)
print bbands(dataframe, length=10, numsd=1)
print speed
dataframe['ave'], dataframe['upper'], dataframe['lower'] = bbands(dataframe, length, numsd=1)
dataframe.plot()
当我参加任何数字而不是“1”的长度时,"ave" 被计算为以下结果。 (我给了length 3,如果我增加length数,NaN的个数也会增加)
[1440 rows x 1 columns] 0
0 NaN
1 NaN
2 92.250
3 92.254
4 92.459
5 93.639
6 94.250
.....
第一个 length - 1
值出现 rolling_mean
和 rolling_std
return NaN
。这是有道理的,因为它一次用 length
值计算这些值。您可以从结果数据框中过滤掉 NaN
s:
ave = pd.stats.moments.rolling_mean(data,length)
ave = ave.dropna()
sd = pd.stats.moments.rolling_std(data,length)
sd = sd.dropna()