【问题标题】:How to identify breakpoints (trend lines edges) in a dataset?如何识别数据集中的断点(趋势线边缘)?
【发布时间】:2020-09-26 15:29:20
【问题描述】:

我一直在进行一些研究,以找到识别数据集中(具有 x/y 坐标对)中的断点(趋势方向变化)的最佳方法,从而使我能够识别我的背后的趋势线数据收集。

但是我没有运气,找到任何能给我带来光明的东西。

下图中的黄点,代表我需要检测的断点。

任何关于文章、算法或实现示例(首选打字稿)的建议都会非常有帮助和赞赏。

【问题讨论】:

  • 您可以将其表述为多项式逼近问题(找到曲线以“拟合”您的数据)stackoverflow.com/questions/28269021/…。然后你可以找到该曲线的局部最小值和最大值来确定断点。
  • 有很多方法可以做到这一点,如滑动平均推导变化的标志、最后一个断点和两个结果点之间的角度变化阈值、回归线的交点......
  • 它总是一个滞后指标。价格需要越过断点才能将其识别为断点。如果你想实现一个领先的,你将不得不优化它并处理概率。
  • 只搜索领先和落后指标。你会发现很多

标签: javascript typescript algorithm dataset algorithmic-trading


【解决方案1】:

如果您可以识别趋势线,那么您不能仅识别斜率变化时的断点吗?如果您无法识别趋势线,那么您能否例如采用 5 天移动平均线并查看斜率何时发生变化?

【讨论】:

  • 趋势线是趋势断点的结果。只要你有断点。这里的难点是找到断点。此外,您关于采用基于 n 天的方法的建议并未提供我正在寻找的“趋势变化事件”检测(例如:趋势可以持续 2、7、22 天......)
  • 也许你应该定义一个趋势可以存在的最小天数,然后一旦你得到两个不同方向的定义趋势,你就会在一个趋势结束而另一个开始的位置得到一个断点。
【解决方案2】:

通常,人们倾向于通过仅查看最大值(支持)或仅查看最小值(阻力)来过滤数据。趋势线可能是这些的平均值。断点是数据跨越趋势的时候,但这会产生很多错误的断点。因为图片胜于文字,可以看http://www.meacse.org/ijcar/archives/128.pdf的第2页。

有很多可用的脚本在

中查找“ZigZag”

https://www.tradingview.com/

例如https://www.tradingview.com/script/lj8djt1n-ZigZag/https://www.tradingview.com/script/prH14cfo-Trend-Direction-Helper-ZigZag-and-S-R-and-HH-LL-labels/

您还可以在此处找到一篇有趣的博文(但在 python 中编写代码):

https://towardsdatascience.com/programmatic-identification-of-support-resistance-trend-lines-with-python-d797a4a90530

可用代码:https://pypi.org/project/trendln/

【讨论】:

    【解决方案3】:

    这听起来可能很奇怪,甚至是有争议的,但是——没有“断点”。即使查看您的图像,第四个断点也可能位于其当前位置之前的局部最大值上。因此,不同的人可能会在同一张图上将不同的点称为“断点”(事实上,他们这样做)。

    您在数字中看到的是几个可能的移动平均线(以不同的时间间隔计算,因此您可以考虑 MA5 表示五天平均线,或 MA7 表示一周平均线)及其一阶导数和二阶导数(如果您觉得幻想你可以尝试三次导数)。如果您在数据上绘制所有这些经过适当平滑处理的线,您会注意到其中 一些 的显着点将在“断点”附近大致相交。这些是您“看到”断点时大脑考虑的参数;这就是为什么你会看到断点,而不是其他地方。

    人类视觉用来识别特征的另一种方法是修剪异常值:在上述计算中,您可以丢弃任何超出给定容差的值,或者从远离平均值的值开始的所有值的固定百分比。您还可以尝试不修剪那些长期移动平均线的异常值但不是较短周期的那些值(这会提供更好的响应性,但会找到更多的“断点”)。然后对剩余的数据进行相同的计算。

    最后,您可以根据与附近显着点之间的距离来衡量“断点得分”。然后,选择一个所需的断点距离,并将“断点”称为该区间内得分最高的点;对所有后续断点重复。同样,您可能想尝试不同的时间间隔。这样可以方便地设置断点。

    最后,您可能会注意到不同类型的信号源具有不同的“最佳”断点参数,因此没有一个“一刀切”的参数集。

    如果您正在构建一个显示数据的界面,将这些参数的控制权留给用户可能是个好主意。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-07-30
      • 1970-01-01
      • 1970-01-01
      • 2022-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多