通达信FILTER函数怎么用?连续信号去重、过滤周期与边界排查

FILTER原始条件与过滤窗口检查流程示意,非软件截图
原创计算流程示意,非通达信客户端截图。

发布日期:2026年10月8日。同一条件连续出现多根时,通达信FILTER可以用于减少重复标记。但“把某些信号隐藏”不是把原条件改成只成立一次,更不代表信号质量提高。本篇只解决保留哪一根、屏蔽后面多少根、怎样复核边界这三个问题。

适用说明:本文按通达信官网“用户红宝书”提供的《通达信公式-全部函数.docx》核对函数语义,核对日期为2026年10月8日。代码和数列由本站原创,只用于公式学习;本次进行了计算模型核对,未在具体通达信客户端上实测,不能据此宣称所有版本或手机端兼容。

一、FILTER处理的是条件输出,不是行情本身

基本形式为FILTER(X,N)。官方说明中,X满足条件后,其后的N个周期输出被置为0,N为常量。使用时应把X作为原始条件,把返回结果作为另一条序列保存,避免把“原条件又成立了”和“这一次是否保留显示”混为一谈。

RAW:=CLOSE>OPEN;
KEPT:=FILTER(RAW,2);
OUT:KEPT;

上述例子只观察收盘价高于开盘价的条件,不构成买卖规则。把RAW和KEPT分开之后,出现“这一根有原始条件却没画出来”时,可以先查是否处于过滤区间,而不是删除整条公式。

二、用一组原创真假序列逐根核对

假设N固定为2,原始条件已经转成0或1,使用下面的合成序列,不对应任何证券行情:

根序号 原始X 过滤后 原因
1 1 1 保留;随后第2、3根处于屏蔽区间
2 1 0 处于第1根建立的屏蔽区间
3 0 0 仍在屏蔽区间,原条件也不成立
4 1 1 前一次区间结束,保留;屏蔽第5、6根
5 1 0 本次被屏蔽
6 1 0 仍被屏蔽,不延长本次区间
7 1 1 第4根建立的区间已结束,可以再次保留
8 0 0 原条件不成立

这张表按“保留一次后屏蔽其后N根”的递推模型手算。第2根虽然原始X为1,但它已经被屏蔽,模型不把它重新当成保留信号去延长屏蔽期。复核客户端时,重点观察这个区别;若实际结果不同,保留版本、参数和原序列再检查,不能把手算表冒充软件实测。

三、它与“条件第一次变真”有什么区别

如果问题是“这段连续成立的条件只在开头标记一次”,可以先研究另一种逻辑:

RAW:=CLOSE>OPEN;
START:RAW AND NOT(REF(RAW,1));

它检查当前真、上一根假,关注的是状态转变,而不是固定间隔。假设原始条件连续10根为真,N=2的过滤模型可以在第1、4、7、10根保留;状态起点判断通常只标记从假转真的那一根。两者解决不同问题,不能只因为输出都变少就当成等价。样本最早一根的历史引用如何初始化,需要另外核对,不能给它随意补一个真或假。

四、N的单位是计算周期,不是固定自然日

在日线、周线与分钟线中,2个计算周期代表不同的实际时间跨度。排查时同时记录周期和N,只写“过滤两天”容易把分钟图或周线图的含义说错。本文使用正整数常量2,不推断负数、变量参数或特殊边界值在所有版本中的处理。参数习惯不要直接从其他软件移植过来。

五、过滤后仍有重复标记,先检查哪几项

  1. 检查画图用的变量:绘图或最终输出到底使用KEPT还是RAW?只计算KEPT但仍画RAW,显示不会按过滤结果变化。
  2. 检查是否混入第二条条件:其他语句也可能绘制相同标记,先只保留一条测试输出定位来源。
  3. 检查间隔:固定区间结束后原条件仍真,可以再次保留;这不等于过滤未生效。
  4. 检查当前K线状态:盘中CLOSE和条件可能变化,盘中出现又消失与历史过滤规则不是同一问题。
  5. 检查代码是否误用了FILTERX:官方将FILTERX描述为反向过滤,方向不同。不要仅凭名称接近就替换;涉及历史显示的完整公式应另做时间可用性检查。

六、怎样建立最小复核记录

准备一段可核对的历史区间,逐根记录原始X、是否在屏蔽期、保留结果和N。先单独输出RAW,再单独输出KEPT,最后才加入原来的绘图语句。每次只改变N或周期中的一个因素。记录样本起点及缺失数据,避免用短样本开头的特殊显示判断所有历史行为。

不熟悉输出形式时,可看条件选股公式入门;报错查公式语法排查;历史信号变化应结合未来函数与信号漂移检查分析,不能因为一项过滤能运行就给整条源码贴上“无未来函数”标签。

来源与限制

原始资料:通达信用户红宝书中的《通达信公式-全部函数.docx》,FILTER/FILTERX条目。更多操作见教程中心。本文不转载付费指标,未验证客户端兼容、胜率或收益;过滤信号不构成投资建议。