• 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

  • 相关阅读:
    《剑指 Offer》学习记录:题 14:剪绳子
    网络技术:配置动态路由
    网络技术:配置静态路由
    大一下暑假学习推荐
    Java WEB 程序设计:班级投票系统
    55 内核与应用的分离(下)
    54 内核与应用的分离(中)
    53 内核与应用的分离(上)
    无线数据传输模块的功能
    什么是IO控制器?
  • 原文地址:https://www.cnblogs.com/zhulvbo/p/8531041.html
Copyright © 2020-2023  润新知