通达信HHV函数怎么用?最高值、周期与LLV/REF区别

通达信HHV函数用法封面,说明最高值、周期、LLV与REF区别

最后更新:2026年9月14日。通达信公式里的 HHV 经常被翻译成“最高值函数”,但它真正计算的是:某个数据序列在指定 K 线窗口内的最大值。窗口长度、数据来源和当前 K 线状态有任何一个不同,结果就可能不同。本文只用软件公式和合成数据说明计算过程,不把最高值、突破条件或历史回测结果当成收益承诺。

如果还不熟悉公式管理器,可以先看通达信基础使用教程;如果你要把 HHV 组合成条件选股,再结合通达信选股公式怎么写检查输出条件。

一、HHV 函数的基本写法

常见写法是:

HHV(X, N)
  • X 是要参与比较的数据序列,例如 HIGHLOWCLOSE、成交量或其他公式结果。
  • N 是向前计算的 K 线数量,也就是窗口长度。
  • 返回值是窗口内的最大值,不是固定返回最高价,也不是自动返回最近一次创新高的日期。

例如,HHV(HIGH,20) 表示最近 20 根 K 线的最高价中的最大值;HHV(CLOSE,20) 表示最近 20 根 K 线的收盘价中的最大值。两条公式的窗口一样,但比较的数据序列不同,结果不必相同。

二、HHV 是否包含当前 K 线

在通常的逐 K 线计算中,HHV(X,N) 会把当前 K 线作为窗口的一部分。假设当前是第 t 根 K 线,固定窗口的概念可以写成:

HHV(HIGH, 5) = MAX(HIGH[t-4], HIGH[t-3], HIGH[t-2], HIGH[t-1], HIGH[t])

因此,盘中实时 K 线还没有收盘时,当前的 HIGHLOWCLOSE 和成交量都可能继续变化,HHV 的显示值也可能随之变化。要复核历史信号,应固定复权方式、周期、数据更新时间和运行时点,不能拿盘中结果直接和收盘后结果比较。

如果想把当前 K 线排除在比较窗口之外,常见写法是:

REF(HHV(HIGH, 20), 1)

它把“上一根 K 线已经计算出的 20 根最高价”移到当前 K 线使用,适合表达“当前价格与前一窗口比较”的语义。也可以看到类似 HHV(REF(HIGH,1),20) 的写法。固定窗口、同一数据序列下,两者常常能得到相同的排除当前值效果,但复杂公式中不要只凭形式替换,最好用固定样本逐根对照。

三、LLV 与 HHV 的区别

LLV(X,N) 返回指定窗口内的最小值,和 HHV 的方向相反:

HHV(HIGH, 20)  {最近20根最高价的最高值}
LLV(LOW, 20)   {最近20根最低价的最低值}
HHV(CLOSE, 20) {最近20根收盘价的最高值}
LLV(CLOSE, 20) {最近20根收盘价的最低值}

这里的 HIGHLOWCLOSE 不能混为一谈。要研究收盘价是否超过过去窗口,应使用 CLOSE;要研究影线触及过的最高价或最低价,应使用 HIGHLOW。先写清楚比较对象,再讨论周期,能减少很多“函数算错了”的误判。

四、HHV、LLV、MAX 和 REF 不要混用

写法 主要含义 排查重点
HHV(CLOSE,20) 最近20根收盘价的最大值 窗口是否包含当前 K 线
LLV(LOW,20) 最近20根最低价的最小值 数据源是否应为 LOW
MAX(A,B) 比较两个输入值并取较大者 它不是固定长度的滚动窗口
REF(A,1) 取 A 在上一根 K 线的值 移动的是结果,不是简单改变 N

例如:

前高 := REF(HHV(HIGH,20),1);
收盘超过前高 := CLOSE > 前高;

这段示例表达的是“当前收盘价与不含当前 K 线的前 20 根最高价比较”。它只是一个公式逻辑示例,不代表任何交易建议。若要写成条件选股公式,还要确认输出条件、周期和股票范围,参考主图、副图、选股公式区别

五、为什么同一条 HHV 公式在不同周期结果不同

N=20 只表示 20 根 K 线,不天然等于 20 个交易日。放在日线图上,它通常对应最近 20 个交易日;放在 5 分钟图上,它对应最近 20 根 5 分钟 K 线;放在周线图上,则对应最近 20 周。

因此复核时至少要同时记录:

  1. 公式使用的周期,例如日线、周线或具体分钟周期。
  2. 比较的数据字段,例如 HIGH、LOW、CLOSE 或自定义中间值。
  3. 窗口长度 N、是否使用 REF 排除当前 K 线,以及当前 K 线是否已收盘。
  4. 复权方式、历史数据是否补全、样本起点和软件版本。

如果只复制公式而没有记录这些条件,看到数值不同并不能立即说明函数失效。指标参数的记录方法可参考通达信指标参数设置教程

六、用一组简单数据手算 HHV

下面使用一组虚构的收盘价,只为演示窗口计算,不对应任何股票或历史行情:

日期序号:  1   2   3   4   5   6
CLOSE:    10  12   9  15  13  14

当 N=3 时:

  • 第 3 根的 HHV(CLOSE,3)MAX(10,12,9)=12
  • 第 4 根的结果是 MAX(12,9,15)=15
  • 第 5 根的结果是 MAX(9,15,13)=15
  • 第 6 根的结果是 MAX(15,13,14)=15

如果在第 6 根使用 REF(HHV(CLOSE,3),1),取到的是第 5 根已经算出的结果 15,对应窗口为第 3 至第 5 根。把这组数字写在纸上或表格里逐根核对,通常比直接盯着一条曲线猜原因更快。

七、HHV 公式常见排查顺序

  1. 先看函数和括号:确认写的是 HHV(X,N),参数数量完整,半角逗号和括号成对出现。遇到未知字符串、括号或引用报错,可按通达信公式报错排查教程逐项检查。
  2. 再看数据字段:确认需求是最高价、最低价还是收盘价,不要把 HIGHLOWCLOSE 当成同一序列。
  3. 再看窗口边界:确认 N 是 5、20 还是其他数值,并判断当前 K 线是否应该纳入。
  4. 再看周期:相同的 N 放在日线和分钟线中代表的实际时间跨度不同。
  5. 最后看实时状态:盘中 K 线未收盘时结果可能继续变化;先用收盘数据复核,再单独验证实时行为。

历史 K 线不足完整 N 根时,软件的初始化、数据补全和客户端版本也可能影响早期显示。早期样本出现差异时,应从数据完整的区间开始对照,不要把边界样本直接当成函数错误。

八、如何验证 HHV 是否真的按预期运行

可以建立一个最小验证表,逐次只改一个条件:

公式:HHV(CLOSE,3)
周期:日线
数据:固定一只测试标的和固定日期区间
复权:固定一种方式
检查:第3、4、5、6根分别记录窗口原值与计算结果
对照:改成 HHV(HIGH,3) 后只比较数据源差异

如果要验证“排除当前 K 线”,再增加 REF(HHV(CLOSE,3),1) 一列;如果要验证选股结果,则把同一公式放进正确的条件选股入口,确认输出为单一条件。不要同时更换周期、复权、参数和公式类型,否则无法定位差异来源。

HHV 和 LLV 本身只是窗口统计函数,不等于未来函数,也不等于有效信号。若公式还组合了跨周期引用、特殊引用或其他可能改变历史显示的函数,应继续查看通达信未来函数与信号漂移排查。如果问题是公式保存后找不到,则应转到通达信自编指标保存排查,不要继续修改 HHV 参数。

风险提示:本文只用于通达信软件公式学习、语法理解和结果复核。HHV、LLV 或任何由它们组成的条件都不保证收益、胜率或未来表现,不构成投资建议。