0

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

4

1 回答 1

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

在此处输入图像描述

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

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

在你做之前plt.show()

在此处输入图像描述

于 2017-03-04T03:50:43.450 回答