通达信K线实体和上下影线怎么算?MAX、MIN、ABS公式与异常检查

发布日期:2026年10月11日。上涨与下跌K线的实体上端不同,因此直接用HIGH-CLOSE计算上影线,只在部分情形下正确。可以用MAX和MIN先确定开收盘价的上下端,再用ABS计算实体长度,用总长度关系检查是否写反。
适用环境:提供同一根OPEN、HIGH、LOW、CLOSE数据且支持MAX、MIN、ABS的通达信公式环境。函数定义按官方红宝书核对;本文为原创数值分解模型,未做客户端实测,不构成形态选股或买卖建议。
一、先确定实体上下端,再计算长度
TOP:=MAX(OPEN,CLOSE);
BOTTOM:=MIN(OPEN,CLOSE);
BODY:ABS(CLOSE-OPEN);
UPPER:HIGH-TOP;
LOWER:BOTTOM-LOW;
RANGE:HIGH-LOW;
MAX(A,B)在当前计算位置比较两个值,MIN(A,B)同样是两值比较;ABS去掉差值的正负方向。BODY是实体长度,不包含涨跌方向;若还要区分方向,应另外保留CLOSE与OPEN的比较,不能从绝对值反推出阴阳线。
二、三根原创K线逐项复核
| 类型 | O/H/L/C | 实体 | 上影 | 下影 | 总长 |
|---|---|---|---|---|---|
| 上涨模型 | 10 / 13 / 9 / 12 | 2 | 1 | 1 | 4 |
| 下跌模型 | 12 / 13 / 9 / 10 | 2 | 1 | 1 | 4 |
| 开收相等 | 10 / 12 / 8 / 10 | 0 | 2 | 2 | 4 |
在第二行,HIGH-CLOSE等于3,但其中有2属于实体,不能都算上影线;正确上影线是13-MAX(12,10)=1。开收相等时实体长度为0,并不意味着最高价和最低价也相同。
在同根OHLC合法且口径一致时,UPPER+BODY+LOWER应等于RANGE。这是代数核对关系,不是对真实行情数据质量的证明;浮点数显示有舍入时也不必强行要求屏幕末位完全相同。
三、MAX不是最近N根的最高值
MAX(OPEN,CLOSE)比较当前根的开盘与收盘;HHV(HIGH,N)取一个窗口内的最高值。把HHV替换进实体上端,会把其他K线的高点带入当前根,改变问题本身。多根窗口的概念参见HHV与LLV周期说明,不要因为两者中文都含“最大”就混用。
四、出现负影线时先查数据,不要先取绝对值
通常同根数据应满足HIGH不小于OPEN与CLOSE,LOW不大于OPEN与CLOSE。如果计算出负影线,先检查是否混了上一根字段、复权口径、品种或自定义数据源。直接把UPPER外面包一层ABS,可能只是隐藏了不一致。
DATA_OK:HIGH>=MAX(OPEN,CLOSE)
AND LOW<=MIN(OPEN,CLOSE)
AND HIGH>=LOW;
这个输出仅检查三组数值关系。它不验证来源真实性、数据完整性、复权正确性,也不是过滤异常行情的完整算法。应先记录原始OHLC再决定如何处理异常,不能把被强行变成正数的影线当作合法数据。
五、计算占比前处理零区间
如果HIGH=LOW,总长度为0,BODY/RANGE就会遇到除零。本文不提供看似通用的占比公式:先明确零区间应标记无效、单独分类还是跳过,再选择相应保护方法。不要未经确认就把“除零返回什么”当成跨版本保证。
基础语法见选股公式入门;条件分支与分母保护的限制见IF计算排错教程;完整入口见通达信教程中心。实体或影线长度只是描述数据,不证明后续上涨概率或盈利能力。
来源与限制
原始依据:通达信用户红宝书MAX、MIN、ABS与行情字段条目。计算公式和表格为原创推导;未验证特定市场、复权方式、盘中变动或手机版表现,不作胜率和兼容性承诺。




