通达信EXISTR和LAST怎么查历史区间?前N到前M周期条件排错

适用范围:通达信条件选股中“只检查前一段历史区间”的逻辑排错。想检查前8个周期到前3个周期之间,不能直接用EXIST(X,8)代替;后者的窗口问法会把靠近当前的位置也纳入考虑。EXISTR与LAST有两个区间参数,分别问指定区间里是否出现、是否一直成立。

指定历史区间与当前附近窗口区别的原创示意,非软件截图
原创周期偏移示意,非软件截图;条件只用于逻辑说明。

一、先画出希望检查的那一段

把当前根标为0,越早的根偏移越大。假设主问题是前8周期到前3周期之间的条件,前1周期的新信号就不应代替那一段的判断。只写最近N周期出现,容易在这一点上偏离原问题。

官方EXISTR(X,A,B)说明存在性区间,例子EXISTR(CLOSE>OPEN,10,5)表示前10日到前5日内存在阳线;LAST的对应例子问这段时间是否一直阳线。本文沿用两端偏移的表达,不把日线“日”直接推广成所有周期的自然日。

二、存在一次与一直成立分开观察

COND0:=CLOSE>OPEN;
IN_RANGE:EXISTR(COND0,8,3);
ALL_RANGE:LAST(COND0,8,3);

这段应先放在技术指标观察公式中,便于同时看两个逻辑输出。假设指定历史段里只有位于内部的前5周期满足条件,其他位置不满足,那么“出现过”和“一直成立”显然不是同一问法。此例刻意把成立点放在区间内部,不借此推断未实测的端点计数细节。

如果只是前1周期满足,而指定历史段里没有满足点,最近窗口条件可能为真,指定历史段的存在条件却不能靠这个前1周期的新点满足。排错时先做这样的时间位置对照,再比较两种函数。

三、放进条件选股时只保留目标输出

XG:EXISTR(CLOSE>OPEN,8,3);

这是一条最小逻辑示例,不是交易策略。如果要求该历史段一直符合条件,则换成针对LAST的单输出公式,不能把两条观察输出直接塞入同一个条件选股公式。先核对选股周期和范围,再看结果。

四、0不是随意的“零长度”参数

官方条目说明A为0表示从第一天开始,B为0表示到最后日止;EXISTR还明确第二、第三个参数为常量。不要把0简单解释成空区间,也不要在没有客户端验证前把两个端点任意颠倒,或认定两个函数支持完全相同的参数变化方式。

窗口不足、相同端点、端点恰好成立和非法范围,应各自建立最小记录,在客户端核对;文档短条目未展开这些边界,本文不编造返回数字。

五、它与已有窗口教程的差别

EXIST与EVERY讨论是否出现与连续成立;本文主问题是把检查段移到历史中,并排除近期不属于目标段的位置。BARSLAST返回距离,不等于直接判定任意历史段是否全部成立。

记录每根条件、当前根、A/B、周期、复权和可用历史长度,才能复现“只在今天多选了一项”之类差异。不要以修改历史起点的方式追求更好的回测外观。

来源与限制

原始依据为通达信官方文档目录中的EXISTR、LAST、EXIST条目。周期图解与公式组合为原创,未做各版本端点行为、手机兼容或未来函数检测,不承诺选股效果或收益。

公式基础入口见通达信教程中心。