【发布时间】:2017-03-04 03:28:06
【问题描述】:
我一直在搜索高点和低点(没有双关语)以寻找一个公式,或者更可能是一个循环,该循环可以挑选出更高的高点和更低的低点,以便能够在它们之间绘制一条趋势线。这通常用于股票的技术分析。起初,这似乎是一个简单的问题,但我被困住了。我正在使用 python,但任何伪代码都可能足以满足我自己和将来偶然发现此线程的其他人的需求。
【问题讨论】:
我一直在搜索高点和低点(没有双关语)以寻找一个公式,或者更可能是一个循环,该循环可以挑选出更高的高点和更低的低点,以便能够在它们之间绘制一条趋势线。这通常用于股票的技术分析。起初,这似乎是一个简单的问题,但我被困住了。我正在使用 python,但任何伪代码都可能足以满足我自己和将来偶然发现此线程的其他人的需求。
【问题讨论】:
我想试试这个(在你发表评论之后)
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()
【讨论】: