6

起初,这个问题听起来很愚蠢,但这不是根本问题。也许,任何算法似乎都无法完全解决,但我假装是这样。

所以问。我有图表,例如黄金。我需要找到时间轴上的顶部和底部在哪里。问题是我需要找到主要好转和主要低迷的开始。问题是有很多不相关的小涨和跌。

这是为了更好地理解的图片 - 红点是我想要找到的(不完全是,但在某种程度上像这样)。

在此处输入图像描述

所以我可能需要过滤掉小的翻页和翻页,但不知道该怎么做。我会对任何想法感到高兴。我不需要java等中的算法,只要用文字就足够了。

4

3 回答 3

11
  1. 您可以先执行平滑低通滤波操作,然后从平滑数据中找到局部最小值/最大值的位置。然后从原始数据中获取最小值和最大值的值。

  2. 您可以使用正常的最大/最小过滤器来查找所有转折点,然后按阈值过滤转折点列表。

  3. 我认为您真正想要做的是从信号中删除“长期变化”,而只查看“短期变化”。这可以使用经验模式分解来完成。请参阅我论文的第 2.3.2 节。(或者,谷歌搜索“经验模式分解”、“EMD”或“Hilbert-Huang 变换”。)

下面是 EMD 的实际应用:

在此处输入图像描述

请注意,随着 EMD 算法从“最详细”开始到“最一般趋势”结束,随着 EMD 算法提取信号分量,通用性越来越高。(注意显然有九个组件 - 只显示了几个。)

于 2012-04-16T05:49:02.643 回答
0

您通常会从移动平均线开始——也就是说,平均 N 个最近的点,其中平滑程度大致与 N 成正比(即,随着年平均点越多,您的结果就越平滑)。

然后,您可以获取每个平均点与下一个平均点之间的差异。当差异改变符号时,你有一个最小值或最大值(从正到负,你有一个最大值,从负到正,一个最小值)。

于 2012-04-16T05:53:05.177 回答
0

我可能不完全理解,但你为什么不能只取特定时间范围内的最低点?大多数数据提供者确实提供了当天的最高价/最低价,你能不能只存储它然后简单地获取时间范围 x 的最低值?

通过扩展你的学习范围,你可以消除小的起伏。这是我通常做的。另一种方法是,您可以使用过去 X 天的平均值来平滑结果(移动平均线),但随后您将失去准确性(程度取决于范围......如果它是 2-3 天的移动平均线而不是糟糕的 2 年移动平均线)。

编辑:对不起,我想念明白,您正在尝试找到范围。好吧,如果您有数据,那么为什么不先找到最低点,然后再去第二天计算百分比变化,然后再计算下一个,等等……并覆盖找到更高范围的那一天。稍后您将需要添加更多逻辑(例如从该峰值下跌的百分比或其他内容),否则您会报告通常会采用股票的首次公开募股并将其所有高点并说这是一个时期。

于 2012-04-16T05:55:32.223 回答