如何在数据集中定位和标记局部最小值和最大值?
就像我有以下一组花车一样:
400.510009765625, 423.8999938964844, 420.9800109863281, 438.0899963378906, 429.95001220703125, 421.260009765625, 410.3599853515625, 417.1300048828125, 411.760009765625,
然后我通过这个简单的循环将每个相邻值与前一个值进行比较:
for x in range(0,len(nfy)):
if nfy[x]<nfy[x+1]:
print('raising')
elif nfy[x]>nfy[x+1]:
print('falling')
我将获得该比较的持续打印列表,例如:
raising
falling
raising
falling
falling
falling
raising
falling
falling
falling
raising
等等。
现在我的问题是:如果存在与周围值比较或相关的局部最小值或局部最大值,我如何记住或标记?
我需要能够在这里应用这些简单的规则:
*下降值的局部最小值(单个或一系列“下降”值中的最新价格),在(一系列或单个)上升值之后,不会回撤超过初始起点(必须小于下一个起点)值:它必须上升)。从上升值到下降值的转折点需要标记为“数字 1”,并由局部最大值表示。从第一个下降值到下一个上升值的转折点需要标记为“数字 2”,并且是局部最小值。
当满足此条件时,必须有一系列提升值,这些值需要超过第一个“局部最大值”,该最大值已被标记为“数字 1”。
从上升值到下降值的下一个转变需要被标记为“数字 3”,并且代表一个局部最大值。
我想在附加条件中添加,“数字 3”需要高于“数字 1”并且还需要具有最大的扩展(范围),这将表示为:“数字 1”-“起点”<“ number 3" - "number 2"(这意味着从起点到第一个最大值的脉冲总长度需要小于从第一个局部最小值到第二个局部最大值的总长度。
然后,如果满足这些条件,我想添加条件,即下一个局部最小值(在局部最大值“数字 3”之后)是有效的,当“数字 3”被标记为之后下降值发生变化时值再次上升,这将被标记为“数字 4”,并由局部最小值表示。另外,我喜欢添加条件,即“数字 4”不能等于或小于“数字 1”的值。
我到底该如何设置这个循环? 我怎样才能把它翻译成工作代码?
顺便说一下,这是对基于艾略特波浪理论的规则的非常复杂的提取。我想在 Stockcharts 上应用它来计算波浪。
最好的祝愿和非常感谢,本杰明