识别金融K线图表局部高点的成熟通用算法咨询
标普500高点
下图为2000年之前的标普500走势图表:

在讨论历史价格数据时,人们通常会提及历史高点(all time highs)或局部高点(local highs),例如此次示例中蓝色箭头标注的即为市场普遍指代的高点位置。
自动识别高点的程序实现
相较于手动标注图表,我们需要通过程序自动识别高点位置。
以下为一段可实现该功能的C#函数代码:
List<Candle> identify_highs(List<Candle> rows, TimeSpan threshold) { var ls = new List<Candle>(); var candidate = rows.First(); foreach (var row in rows) { if (row.High > candidate.High) { var duration = (row.DateTime - candidate.DateTime).Duration(); if ((row.DateTime - candidate.DateTime).Duration() > threshold) { ls.Add(candidate); candidate = row; } else { candidate = row; } } } ls.Add(candidate); return ls; }
该算法的大致逻辑描述如下:
给定K线(candles)列表,将第一根K线设为`candidate`(候选高点)。 遍历每一根K线: 若当前遍历K线的最高价高于候选高点的最高价 若当前K线与候选高点的时间间隔大于`threshold`(时间阈值) 判定该候选高点为有效高点,将当前K线设为新的候选高点 否则 直接将当前K线设为新的候选高点
将该函数的threshold参数设为175天,运行程序绘制价格数据及识别出的高点,输出结果如下:

控制台同步输出识别到的高点信息:

咨询问题
上述使用的identify_highs函数仅为针对该场景临时编写的简易函数,请问目前金融量化、技术分析领域是否存在广泛应用、成熟通用的图表高点识别算法?
项目地址
生成上述绘图结果的完整程序代码已在开源代码平台托管,可搜索对应项目获取。
内容的提问来源于stack exchange,提问作者dharmatech
相关产品推荐
相关产品推荐

