zoukankan      html  css  js  c++  java
  • 移动平均的可视化

    # 移动均线 (Moving Average, MA) 是将一段时间 (也叫窗口) 内资产收盘价的平均价格连成曲线,用以显示价格趋势的一种技术指标。
    # 在下面是数据中我们假设第二列的数据就是收盘价
    # i 是从0 开始计数的
    data = [
    [2320.26, 2320.26, 2287.3, 2362.94],
    [2300, 2291.3, 2288.26, 2308.38],
    [2295.35, 2346.5, 2295.35, 2345.92],
    [2347.22, 2358.98, 2337.35, 2363.8],
    [2360.75, 2382.48, 2347.89, 2383.76],
    ]
    print(len(data))

    def calculate_ma(day_count: int, d): # day_count 就是每一次滑动的窗口 d是输入的数据
    result: List[Union[float, str]] = []
    for i in range(len(d)):
    if i < day_count: #小于滑动的窗口时用“-”来代替值
    result.append("-")
    print('我这是第{}次窗口里面数据不足落空了'.format(i))
    continue
    sum_total = 0.0
    for j in range(day_count): #在每一个对应的窗口大小里面
    print('即将加上的数字【{},1】是:'.format(i - j),float(d[i - j][1]))
    sum_total += float(d[i - j][1])
    print('这一个窗口的总和',sum_total) #到此计算了一个窗口下的平均价格,下一个循环中i+1,也就是窗口向后面一栋一格
    print('上面这个除以窗口长度{}后就是 MA:'.format(day_count),abs(float("%.3f" % (sum_total / day_count))))
    result.append(abs(float("%.3f" % (sum_total / day_count))))
    return result


    y=calculate_ma(day_count=2, d=data)
    print(y)

    输出结果是:

    5
    我这是第0次窗口里面数据不足落空了
    我这是第1次窗口里面数据不足落空了
    即将加上的数字【2,1】是: 2346.5
    即将加上的数字【1,1】是: 2291.3
    这一个窗口的总和 4637.8
    上面这个除以窗口长度2后就是 MA: 2318.9
    即将加上的数字【3,1】是: 2358.98
    即将加上的数字【2,1】是: 2346.5
    这一个窗口的总和 4705.48
    上面这个除以窗口长度2后就是 MA: 2352.74
    即将加上的数字【4,1】是: 2382.48
    即将加上的数字【3,1】是: 2358.98
    这一个窗口的总和 4741.46
    上面这个除以窗口长度2后就是 MA: 2370.73
    ['-', '-', 2318.9, 2352.74, 2370.73]

    算法取自官方文档

    值得注意的是for循环的第一个i是0开始的

    对于为什么一开始是两个空而不是一个空,

    按照官方文档的计算方法,当前的MA的值是它和n(n=前面圈口大小)个数字求和后除以窗口大小,那么其实第二个应该也是有值的啊

    「更新」:官网已经反馈,将尽快更新。

  • 相关阅读:
    【1801日語听解4】第14回:6月9日
    【日語听解2】第14回:6月8日
    【日語視聴説2】第14回:6月8日
    【日本語新聞編集】第13回:6月5日
    【1801日語写作】第13回:6月4日
    【日本語新聞選読】第13回:6月2日
    Win10版本
    家庭或小规模无线使用方
    批处理bat复制命令Copy与Xcopy
    批处理bat删除命令
  • 原文地址:https://www.cnblogs.com/xingnie/p/12374507.html
Copyright © 2011-2022 走看看