python数据学习3 布林带

import numpy as np
import sys
from matplotlib.pyplot import plot
from matplotlib.pyplot import show

N = int(sys.argv[1])

weights = np.ones(N) / N
print("Weights", weights)

c = np.loadtxt('data.csv', delimiter=',', usecols=(6,), unpack=True)
sma = np.convolve(weights, c)[N-1:-N+1]
deviation = []
C = len(c)

for i in range(N - 1, C):
   if i + N < C:
      dev = c[i: i + N]
   else:
      dev = c[-N:]
   
   averages = np.zeros(N)
   averages.fill(sma[i - N - 1])
   dev = dev - averages 
   dev = dev ** 2
   dev = np.sqrt(np.mean(dev))
   deviation.append(dev)

deviation = 2 * np.array(deviation)
print (len(deviation), len(sma))
upperBB = sma + deviation
lowerBB = sma - deviation

c_slice = c[N-1:]
between_bands = np.where((c_slice < upperBB) & (c_slice > lowerBB))

print (lowerBB[between_bands])
print (c[between_bands])
print(upperBB[between_bands])
between_bands = len(np.ravel(between_bands))
print ("Ratio between bands", float(between_bands)/len(c_slice))

t = np.arange(N - 1, C)
plot(t, c_slice, lw=1.0)
plot(t, sma, lw=2.0)
plot(t, upperBB, lw=3.0)
plot(t, lowerBB, lw=4.0)
show()

 

布林带(Bollinger band)又是一种技术指标。是的,股票市场的确有成千上万种技术指标。
布林带是以发明者约翰·布林格(John Bollinger)的名字命名的,用以刻画价格波动的区间。布
林带的基本型态是由三条轨道线组成的带状通道(中轨和上、下轨各一条)。
 中轨 简单移动平均线。
 上轨 比简单移动平均线高两倍标准差的距离。这里的标准差是指计算简单移动平均线
所用数据的标准差。
 下轨 比简单移动平均线低两倍标准差的距离。

 

 

下图是用我们的示例数据绘制出来的布林带。中间锯齿状的细线描绘的是每天的收盘价,而
稍微粗一点也平滑一点的穿过它的曲线即为简单移动平均线。

学习来源:

Python数据分析基础教程:NumPy学习指南(第2版)

2018-03-08     21:41:54

转载于:https://www.cnblogs.com/zhulvbo/p/8531041.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值