【问题标题】:Find highs and lows in time series data在时间序列数据中查找高点和低点
【发布时间】:2017-03-04 03:28:06
【问题描述】:

我一直在搜索高点和低点(没有双关语)以寻找一个公式,或者更可能是一个循环,该循环可以挑选出更高的高点和更低的低点,以便能够在它们之间绘制一条趋势线。这通常用于股票的技术分析。起初,这似乎是一个简单的问题,但我被困住了。我正在使用 python,但任何伪代码都可能足以满足我自己和将来偶然发现此线程的其他人的需求。

【问题讨论】:

    标签: python math trendline


    【解决方案1】:

    我想试试这个(在你发表评论之后)

    import numpy as np
    from matplotlib import pyplot as plt
    
    data = {"x": np.arange(50), "y": np.random.random(50)}
    
    
    avg, sigma = data['y'].mean(), data['y'].std()
    mask_highs = data['y'] > avg + sigma
    mask_lows = data['y'] < avg - sigma
    mask_middle = ~ mask_highs & ~ mask_lows
    plt.scatter(data['x'][mask_highs],data['y'][mask_highs],c="green")
    plt.scatter(data['x'][mask_lows],data['y'][mask_lows],c="black")
    plt.scatter(data['x'][mask_middle],data['y'][mask_middle],c="blue")
    
    plt.axhline(avg + sigma, c="red")
    plt.axhline(avg - sigma, c="red")
    plt.show()
    

    如果你想连接高点和低点,你可以这样做

    mask_extrema = mask_highs | mask_lows
    plt.plot(data['x'][mask_extrema ],data['x'][mask_extrema],color="cyan")
    

    在你做之前plt.show()

    【讨论】:

    • 我有兴趣连接所有高点之间的点,然后再连接所有低点之间的点,以便在两条线之间包含整个数据集并且没有任何外围数据点。我会更深入地研究 matplotlib,看看他们是否有类似的东西,谢谢你的输入。
    • 这篇文章有点类似的想法,尽管结果并不完全如此。见:stackoverflow.com/questions/31070563/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-26
    • 1970-01-01
    • 1970-01-01
    • 2023-01-30
    • 1970-01-01
    相关资源
    最近更新 更多