通达信COUNT统计为什么多一次?当前K线、滚动窗口与连续条件

发布日期:2026年10月8日。通达信COUNT统计结果与手工数图差一次,常见原因不是函数失效,而是把当前根漏数、窗口起点数错,或把“出现几次”理解成“连续几次”。本篇只解决统计窗口如何移动,以及怎样核对当前根和连续条件。
语义依据为通达信官方红宝书《通达信公式-全部函数.docx》的COUNT等相关条目,核对日期2026年10月8日。示例序列和窗口模型为原创,已做计算核对,未在具体客户端实测;数据不足时的早期显示和版本差异需在实际软件中复核。
一、先写清X和N,统计的是条件出现次数
COUNT(X,N)统计N个计算周期中满足X的周期数。以N=3的正常固定窗口为例,当前在第t根时,窗口是第t-2、t-1、t根,而不是从t-3一直数到t根的四根。应先列出根序号,再数条件真假。
RAW:=CLOSE>OPEN;
TIMES:COUNT(RAW,3);
这是指标数值输出示例。它回答最近三根中有几根收盘高于开盘,不预测下一根走势。官方对N不大于0另有从首个有效值开始的定义,但本篇只使用正整数3,不把不同窗口模式混到同一手算表里。
二、用原创序列观察窗口加入和移出
条件序列为1、0、1、1、0、0、1、1,1表示满足,0表示不满足,不对应真实证券:
| 当前根 | 完整三根窗口 | COUNT(X,3) | 窗口变化 |
|---|---|---|---|
| 3 | 1、0、1 | 2 | 第1至3根 |
| 4 | 0、1、1 | 2 | 移出第1根的1,加入第4根的1 |
| 5 | 1、1、0 | 2 | 移出0,加入0,次数不变 |
| 6 | 1、0、0 | 1 | 移出1,加入0,次数减少 |
| 7 | 0、0、1 | 1 | 移出1,加入1,次数不变 |
| 8 | 0、1、1 | 2 | 移出0,加入1,次数增加 |
所以COUNT可以下降,也可以在新条件成立时保持不变,因为窗口同时移出了旧条件。不要把它误当成只增加不减少的累计计数。表从第3根开始,只讨论已具备完整三根数据的模型,不替软件规定前两根的初始化输出。
三、需要排除当前根时怎样表达
如果问题是“当前根之前的三根出现几次”,常见结构为引用上一根已经完成的计数:
RAW:=CLOSE>OPEN;
PREV3:REF(COUNT(RAW,3),1);
在第6根,它取第5根的计数,窗口为第3、4、5根,结果2;当前COUNT的窗口为第4、5、6根,结果1。这种差异是问题定义不同,不是两种写法互相矛盾。固定偏移和完整有效数据条件下,也可核对COUNT(REF(RAW,1),3);复杂公式不要未经对照就通用替换。
四、出现次数、连续次数和距离不是同一件事
在上面的第5根,最近三根条件是1、1、0,出现两次,但截至当前根并没有连续成立。窗口中包含几次,不等于当前连续几次。
| 需求 | 检查方向 |
|---|---|
| 最近3根至少出现2次 | COUNT(X,3)>=2 |
| 最近3根全部成立 | 核对完整窗口后可检查COUNT(X,3)=3,或对应EVERY语义 |
| 截至当前连续成立几根 | 核对BARSLASTCOUNT,而非把窗口出现次数当连续长度 |
| 距离上一次成立多少根 | 核对BARSLAST,另见距离与连续条件教程 |
上述对照以每根真假明确、窗口数据完整为前提。不要在数据不足的早期区间直接用等号推断连续长度;如果条件本身是多项组合,应先检查每项真假。
五、盘中多一次,收盘后少一次怎么查
如果X使用当前CLOSE、HIGH或VOL,尚未结束的K线内,X可能改变。COUNT把当前根纳入时,结果也可能随条件变化。应把盘中记录和收盘后的历史复核分开;不能因为公式没有报错,就把盘中截屏与收盘数据当作相同输入。
- 记录实际运行时间、周期和当前K线是否已结束。
- 固定同一个窗口,输出原始条件RAW,不只看最终次数。
- 标出最早和最晚根序号,确认总共N根。
- 检查是否使用REF排除了当前根,以及偏移是否与需求一致。
- 核对公式参数与证券范围,操作入口见条件选股器设置。
- 数据完整后再讨论条件是否过严,不靠扩大N凑结果数量。
六、最小学习输出与选股输出分开保存
RAW:=CLOSE>OPEN;
XG:COUNT(RAW,3)>=2;
这一条件选股示例与TIMES数值输出不同,适合在测试副本中观察真假。它只演示统计条件的写法,不是经过收益或胜率验证的策略。初学者可先看公式结构与常用函数,不要直接覆盖唯一可用源码。
来源与限制
来源:通达信用户红宝书中的全部函数文档,COUNT/BARSLASTCOUNT/EVERY相关条目;合成表由本站原创。返回教程中心。本文不提供个股建议,不承诺代码在所有版本中兼容或具备投资效果。




