一尘不染

支撑阻力算法-技术分析

algorithm

我有一个日内图表,我试图弄清楚如何计算支撑位和阻力位,有人知道这样做的算法,还是一个好的起点?


阅读 251

收藏
2020-07-28

共1个答案

一尘不染

是的,一种非常简单的算法是选择一个时间范围(例如100条),然后寻找局部转折点或Maxima和Minima。最大值和最小值可以使用一阶和二阶导数(dy /
dx和d ^ 2y / dx)从平滑的收盘价计算得出。当dy / dx = 0且d ^ y / dx为正时,您有一个最小值;当dy / dx = 0且d ^
2y / dx为负时,您有一个最大值。

实际上,可以通过对平滑的收盘价序列进行迭代并查看三个相邻点来计算得出。如果这些点相对而言较低/较高/较低,则您有一个最大值,否则较高/较低/较高是一个最小值。您可能希望微调此检测方法以查看更多点(例如5、7),并且仅在边缘点距中心点一定百分比时才触发。这类似于ZigZag指标使用的算法。

一旦有了局部最大值和最小值,便要在Y方向上查找彼此之间一定距离内的转折点簇。这很简单。取得N个转折点的列表,并计算它与其他每个发现的转折点之间的Y距离。如果距离小于固定常数,那么您会发现两个“闭合”转折点,表明可能存在支撑/阻力。

然后,您可以对S / R线进行排名,因此,两个20美元的转折点不如三个20美元的转折点重要。

对此的扩展将是计算趋势线。现在发现转折点列表后,依次转折每个点并选择其他两个点,以尝试拟合直线方程。如果方程在一定误差范围内是可解的,则趋势线会倾斜。如果不是,则丢弃并继续到下一个三元组。

一次需要三个来计算趋势线的原因是,直线方程中可以使用任意两个点。计算趋势线的另一种方法是计算所有转折点对的直线方程,然后查看第三点(或多个)是否在误差范围内位于同一条直线上。如果此线上确实有1个或更多其他点,则宾果游戏已经计算出支撑/阻力趋势线。

我希望这有帮助。没有代码示例对不起,我只是向您提供一些有关如何实现的想法。综上所述:

系统输入

  • 回溯期L(柱数)
  • L型钢收盘价
  • 平滑因子(平滑收盘价)
  • 误差幅度或差值(构成匹配项的转折点之间的最小距离)

产出

  • 转折点列表,称为tPoints [](x,y)
  • 潜在趋势线列表,每条趋势线均带有线方程(y = mx + c)

编辑:更新

我最近学习了一个非常简单的指标,称为Donchian
Channel
,它基本上绘制了20个柱线中最高高点和最低低点的通道。它可以用来绘制近似的支撑阻力水平。但是上面的-
具有转折点的Donchian Channel更酷^ _ ^

2020-07-28