查找时间序列数据中的高点和低点

时间:2017-03-04 03:28:07

标签: python math trendline

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

1 个答案:

答案 0 :(得分:2)

尝试这个我猜(在你的评论之后)

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()

enter image description here

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

mask_extrema = mask_highs | mask_lows
plt.plot(data['x'][mask_extrema ],data['x'][mask_extrema],color="cyan")
在您执行plt.show()

之前

enter image description here