繁体   English   中英

我如何使用移动平均线的定义,编写 Python 代码(使用 for 循环)来计算名为 ma 的 n 周期移动平均线列表?

[英]How could I use the definition of Moving Average, write Python code (using for loops) to calculate an n-period moving average list, called ma?

MAn(t) = (Pt + Pt-1 + ... + Pt-(n-1)) / n

价格:(列出)用于获取移动平均线的价格数据

n : (int) 定义移动平均滞后的数字(例如 252)

ma :(列出)长度为 N 的移动平均数据,其中前 (n-1) 个值为 None

def ma(n):
    i=0
    ma=[]
    if i < n - 1:
        ma.append("None" * (n-1-i))
        
    while i < len(prices) - n + 1:
        nn = prices[i:i+n]
        n_average = sum(nn)/n
        ma.append(n_average)
        i=i+1
import numpy as np

def moving_average(x, n, centered=True):
    # prepare input
    x = np.array(x, dtype=np.float64)
    L = len(x)
    assert L >= n

    # prepare output variable
    result = np.zeros_like(x)
    result[:n-1] = np.nan

    # moving average:
    result[n-1:] = sum([x[n-i-1:L-i] for i in range(n)]) / n

    if centered:
        result = np.hstack((result[n//2:], result[:n//2]))

    return result

if __name__ == "__main__":
    print(moving_average([1, 2, 3], 1))
    print(moving_average([1, 2, 3], 2))
    print(moving_average([1, 2, 3], 3))
    try:
        print(moving_average([1, 2, 3], 4))
    except AssertionError:
        print("Rightly failed...")

来自我的数据仓库:https ://github.com/ChaoticRoman/numpy_scipy_matplotlib_workshop

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM