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

最后更新:2026年9月14日。通达信公式里的 HHV 经常被翻译成“最高值函数”,但它真正计算的是:某个数据序列在指定 K 线窗口内的最大值。窗口长度、数据来源和当前 K 线状态有任何一个不同,结果就可能不同。本文只用软件公式和合成数据说明计算过程,不把最高值、突破条件或历史回测结果当成收益承诺。
如果还不熟悉公式管理器,可以先看通达信基础使用教程;如果你要把 HHV 组合成条件选股,再结合通达信选股公式怎么写检查输出条件。
一、HHV 函数的基本写法
常见写法是:
HHV(X, N)
X是要参与比较的数据序列,例如HIGH、LOW、CLOSE、成交量或其他公式结果。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 线还没有收盘时,当前的 HIGH、LOW、CLOSE 和成交量都可能继续变化,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根收盘价的最低值}
这里的 HIGH、LOW 和 CLOSE 不能混为一谈。要研究收盘价是否超过过去窗口,应使用 CLOSE;要研究影线触及过的最高价或最低价,应使用 HIGH、LOW。先写清楚比较对象,再讨论周期,能减少很多“函数算错了”的误判。
四、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 周。
因此复核时至少要同时记录:
- 公式使用的周期,例如日线、周线或具体分钟周期。
- 比较的数据字段,例如 HIGH、LOW、CLOSE 或自定义中间值。
- 窗口长度 N、是否使用 REF 排除当前 K 线,以及当前 K 线是否已收盘。
- 复权方式、历史数据是否补全、样本起点和软件版本。
如果只复制公式而没有记录这些条件,看到数值不同并不能立即说明函数失效。指标参数的记录方法可参考通达信指标参数设置教程。
六、用一组简单数据手算 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 公式常见排查顺序
- 先看函数和括号:确认写的是
HHV(X,N),参数数量完整,半角逗号和括号成对出现。遇到未知字符串、括号或引用报错,可按通达信公式报错排查教程逐项检查。 - 再看数据字段:确认需求是最高价、最低价还是收盘价,不要把
HIGH、LOW、CLOSE当成同一序列。 - 再看窗口边界:确认 N 是 5、20 还是其他数值,并判断当前 K 线是否应该纳入。
- 再看周期:相同的 N 放在日线和分钟线中代表的实际时间跨度不同。
- 最后看实时状态:盘中 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 或任何由它们组成的条件都不保证收益、胜率或未来表现,不构成投资建议。




