You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

识别金融K线图表局部高点的成熟通用算法咨询

标普500高点

下图为2000年之前的标普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天,运行程序绘制价格数据及识别出的高点,输出结果如下:

阈值设为175天时的高点识别结果

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

控制台输出的高点信息截图

咨询问题

上述使用的identify_highs函数仅为针对该场景临时编写的简易函数,请问目前金融量化、技术分析领域是否存在广泛应用、成熟通用的图表高点识别算法?

项目地址

生成上述绘图结果的完整程序代码已在开源代码平台托管,可搜索对应项目获取。

内容的提问来源于stack exchange,提问作者dharmatech

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 08:36:27