我用Python开发了一个数据股票分析程序
我需要做的一件基本的事情是识别价格的波动(开盘价、最高价、最低价、收盘价)
价格数据本质上是分形的--在较大的结构中发现较小的结构。
在我的例子中,我正在寻找大波动中的小波动。即大波动中的小波动。上面的例子图表描述了我的目标。
下面是我如何在Python中处理这个问题的
import numpy as np
from scipy.signal import argrelextrema
def get_pivots(price: np.ndarray):
maxima = argrelextrema(price, np.greater)
minima = argrelextrema(price, np.less)
return np.concatenate((price[maxima], price[minima]))
为了简单起见,我将把一个扁平的1d numpy
数组传递到上面的函数中。argrelextrema
有助于识别枢轴在哪里。即识别价格在哪里变化。
我想知道我怎么能找到枢轴的嵌套来形成次要和主要的摆动。
我期待产生一个列表,松散类似于这种结构。
[major swing
[minor swing1],
[minor swing2],
[minor swing3
[micro swing1],
[micro swing2]
]
]
我创建的示例数据是
data = [5,6,7,8,9,10,11,12,13,14,16,17,18,19,20, # AB(Major) impulse
19,18,17,16,15,14,13,12,11,10,9,8, # BC(Major) reaction
9,10,11,12,13, 14,15, # C0C1 (Minor) impulse
14,13,12,11,10, # C1C2 (Minor) reaction
11, 12, 13, 14, 15, 16, 17, 18, # C2C3 (Minor) impulse
17, 16, 15, 15, 14, 13, 12, # C3C4 (Minor) reaction
13, 14, 15, 16, 17, 18, 19, 20, 21, # C4C5 (Minor) impulse
20, 19, 18, 17, 16, 15, 14, # C5C6 (Minor) reaction
15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 # CD (Major) impulse
]
我相信某种递归实现可能会有所帮助。我并不完全熟悉使用这种范例的实现
1条答案
按热度按时间rt4zxlrg1#
在我看来,第一步是指定major/minor swing的具体定义。定义应该非常精确,以便可以通过确定性算法进行检查。一旦您掌握了这些,它将帮助您在代码中实现算法。
例如,正如你在你的帖子中提到的,什么是精确的枢轴?
argrelextrema
在“噪声”数据中会造成困难,因为有大量的相对极值。为了与你的草图相关,你没有标记每一个相对极值,而只是在某个区域内的局部极值。这就是你在编码之前必须精确说明的。