在浮点数数组中查找级别

数据挖掘 Python 编程 金融
2022-03-10 14:06:10

在有人问之前,请让我确认这个问题与交易技术分析有关。

这个问题很简单,但我缺乏解决它所需的科学背景。

数据以时间等距的浮点值数组的形式出现。由于人类心理,一些局部最小值(同样适用于最大值)往往会随着时间的推移重复(虽然不是在相同的值,但在一个相当小的范围内):如果某个价格水平在过去很重要,那么停止价格以跌至下方,它往往会重新浮出水面几次,再次阻止价格跌至下方。

我感兴趣的是在给定的过去时期(比如 5000 个时间间隔)中找到最重要的水平。基本上,一个级别的“重要性”取决于它被测试的次数(意味着价格尝试超过该级别并失败的次数);但是,在相对较大的时间间隔内测试 3 次的水平(如日线图每月一次)比在短时间内测试 3 次的水平(如日线图的一周内)更重要。

同样,数据如下:

  • 数据以浮点值数组的形式出现
  • 数据点在时间上是等距的(但是,时间几乎不重要)
  • 一些局部极端事件比其他极端事件更重要,并且随着时间的推移往往会重复

有人可以帮我用一些 Python 代码来提取重要的关卡吗?或者至少给我一些理论/框架来学习?我知道 pandas/numpy,但我缺乏至少确定可以使用这些的数学背景...

谢谢!

在此处输入图像描述

1个回答

您可以定义一个窗口(红线和蓝线之间的距离)并在 y 轴上从上到下滑动,然后计算该切片中的局部最小值和最大值。一种方法scipyargrelextrema(x, np.less)用于最小值和argrelextrema(x, np.greater)最大值,它为您提供极值的索引。你会得到len(argrelextrema(x, np.less))最小值的数量。

每个切片将是一个级别,并且计算最小值和最大值的结果具有相应的重要性。窗口的大小由您决定。如果您的数据非常精细,您可能需要先考虑对其进行平滑处理(例如,使用numpy.convolve()