最高价等于最低价时KDJ怎么算:横盘窗口的特殊处理
窗口最高价等于最低价时,RSV的分子分母可能同时为零,不能直接按普通公式计算。填零、填中点或沿用前值都属于实现约定,会改变之后的KDJ路径。本文固定相同初始K和D为五十,对三种约定分别复算;后面即便重新出现有效价格区间,差异也不会立即消失,因为递推仍记得此前状态。
平价窗口与缺失价格是一回事吗?
不是。平价窗口表示明确观测到所有价格相同,缺失表示不知道价格。若把缺失值先填成前一日价格,可能人为造出最高等于最低的窗口,再让边界分支输出一个看似确定的数字。此时需要同时披露填补与分支,不能把填补后的结果包装成实际观察到的横盘。
本实验让六个观察值的高、低、收都等于同一列价格:十、十、十、十一、九、十,窗口为三项。这样第三项窗口最高最低均十,之后三个窗口依次有正常区间。全部数据为合成,不对应真实交易中的涨跌限制,也不讨论某类行情下的交易含义。
三种约定分别怎样定义?
普通RSV为100×(本收−窗口最低)/(窗口最高−窗口最低)。当分母为零,本例方案甲使用零,方案乙使用五十,方案丙沿用预存的上一个有效RSV八十。初始K和D都设五十;预存RSV八十只是人为给定的历史状态,不暗示这六个价格之前真的有某段行情。
更新统一采用K新=2K旧/3+RSV/3,随后D新=2D旧/3+K新/3,最后J=3K−2D。D用的是本期已经更新的K,不能误用旧K;后者是另一个算法,即使边界约定相同也会得到不同结果。
后续正常窗口能否把差异立刻洗掉?
第三根是平价窗口,第四根有效RSV一百,第五根为零,第六根为五十。三组除平价处理以外完全相同,结果如下,内部完整精度递推。
| 零分母约定 | 序号 | 实际使用RSV | K | D | J |
|---|---|---|---|---|---|
| 填零 | 3 | 0 | 33.333333 | 44.444444 | 11.111111 |
| 填零 | 4 | 100 | 55.555556 | 48.148148 | 70.370370 |
| 填零 | 5 | 0 | 37.037037 | 44.444444 | 22.222222 |
| 填零 | 6 | 50 | 41.358025 | 43.415638 | 37.242798 |
| 填中点 | 3 | 50 | 50.000000 | 50.000000 | 50.000000 |
| 填中点 | 4 | 100 | 66.666667 | 55.555556 | 88.888889 |
| 填中点 | 5 | 0 | 44.444444 | 51.851852 | 29.629630 |
| 填中点 | 6 | 50 | 46.296296 | 50.000000 | 38.888889 |
| 沿用前值 | 3 | 80 | 60.000000 | 53.333333 | 73.333333 |
| 沿用前值 | 4 | 100 | 73.333333 | 60.000000 | 100.000000 |
| 沿用前值 | 5 | 0 | 48.888889 | 56.296296 | 34.074074 |
| 沿用前值 | 6 | 50 | 49.259259 | 53.950617 | 39.876543 |
平价首步填零使K降到约三十三点三三,填中点让K保持五十,沿前值则升到六十。第四根三组都使用一百,仍各有不同K和D;第六根的J也仍不同。这正是状态递推的持续影响,不是后面窗口又出现了新的数据差异。
哪一种约定可以称为唯一正确?
零除零本身无法提供唯一数值,所以必须回到目标实现的文档与源码。你可以为研究选择一种约定,但应明确它在全平窗口的含义与处理顺序,并保持前后一致。本文不声称三种都被某个具体平台采用,也不把其中一种作为收益更好的方法推荐。
若某实现返回缺失,后续状态如何恢复还需要另一条约定:跳过更新、重新初始化或传播缺失,都可能产生不同后果。不能仅记录当根显示为空,就推断下一根一定与其他方案重新一致。异常输入、输出缺失与状态更新是三个独立环节,应分别核对。
价格只相差很小一点,是否也当成平价?
本文用完全相等的整数构造,分母为精确零。如果真实价格经历小数处理,最高与最低极近但不相等,则是否使用容差需要明示,不能仅靠屏幕都显示十元就当它们相同。若输入精度被导出过程截断,也可能把一个原本有区间的窗口变成平价。
应保留完整价格、窗口最高最低、分母与触发分支。先看原始数据,再看计算精度,才能区分真实平价与显示平价。更换元、分单位后容差还要同步换算,否则同样价格路径会因为单位变化进入不同分支,这不是指标本身需要的行为。
如何写一个可复现的异常窗口报告?
保存窗口内高低收、数据有效性、窗口长度、平价判断、备用RSV来源、K与D初始值、更新顺序和首个有效输出位置。表里三组只改变一个条件,所以可以观察边界约定的净影响;若你同时更换了平滑周期、历史长度和价格来源,就不能把差额全部归因于平价处理。
本文是独立定义的KDJ数值实验,引用随机指标相关源码只用于辅助理解,不声称TA-Lib输出直接等于这里的J线。相关夏普工具也不具备本表KDJ功能。边界输出清楚,不代表能够预测价格,本文不从任何K、D、J数值提供操作建议。
后续差异为什么逐步变小,却不要求立即相等?
若之后每根RSV都相同,两方案之间的K差每次会再乘三分之二;D差则同时受到旧D差与当期K差影响。它们按递推逐步衰减,但不是下一根直接清零。舍入可能让显示数值提早看起来一样,不能据此认定底层状态已经完全相同。
这也意味着长时间以后才截取末值,可能看不到平价分支最初造成的大差别。要诊断异常窗口,应保存窗口前后连续序列,而不是只看很久之后的最后一个数字。本文列出平价当根与随后三根,就是为了把这个影响路径直接放在表上。
若主动选择每次平价都重置K与D,则又是第四种状态政策,与本文只替换RSV的三种实验不同。应单独命名并重新计算,不能把重置后的较快一致归因于原有三种约定本来等价。
复核时还应限制数据有效性:最高价不应低于最低价,收盘应位于当天高低范围内。负的窗口区间不能当成平价分支继续算,它提示源数据或字段映射出了问题。只有输入约束通过,讨论零分母策略才有意义。把无效窗口与有效平价窗口分别标记,能够避免坏数据被一个备用数字掩盖。
在哪里继续核对基础概念?
概念背景见本站已有文章;相关基础核算工具提供其界面列明的计算。本文扩展实验依靠上面的独立输入和表格复现,不把全部情景视为工具已有功能。
道积君编辑组|AI辅助起草,构造算例经程序复算。本文数据、价格及规则假设均为教学构造,不是实盘或历史记录;仅用于投资教育,不推荐具体产品,不提供交易信号,不预测或保证收益。
来源核对:TA-Lib v0.6.4源码目录。核对日:2026-10-23。来源用于公式和概念比对,本文自定实验不冒称第三方软件运行结果;真实产品适用条件需查相应有效文件。
复算资料
本篇编号为DJ055。可下载Python核算脚本(文本)与完整输入输出JSON,对照文中表格复算。脚本文件改存为.py后可用Python运行;数据均为构造教学样本。