很多新手会把CROSS(A,B)和A>B混为一谈,这是编写指标时最容易踩的坑。A>B是一个状态:只要A在B上方,它就一直成立。而CROSS(A,B)是一个动作:它只关心“从下方穿到上方”那一瞬间是否发生。
官方定义写得非常精确:CROSS(A,B)表示A从下方向上穿过B,成立返回1,否则返回0。成立的条件是上根K线满足A≤B,当根K线满足A>B,两者缺一不可。注意这里用的是“≤”,不是“<”。也就是说,上根K线A和B相等也是允许的,只要当根A真正大于B,就算一次有效穿越。

如果把CROSS拆开写成代码,它等价于:
text
A > B AND REF(A,1) <= REF(B,1)REF(A,1)表示上一根K线的A值。前半句管“现在在上方”,后半句管“之前不在上方”。两者同时满足,才是穿越。你可以把CROSS(A,B)和这个展开式同时挂在副图上对比,两条输出线应当完全重合。
这也解释了为什么用CROSS写出的信号在图表上通常是一根“脉冲”式的标记,而用A>B写出来是一整段连续的色带。前者定位“哪一根发生了穿越”,后者描述“当前处于什么状态”。
原文给出的例子是最实用的入门写法:
text
CROSS(CLOSE, MA(CLOSE,5));含义是:收盘线从下方向上穿过5周期均线,即俗称的“金叉”。拆解来看,它要求上一根K线的收盘价小于等于5周期均线值,而当前这根K线的收盘价站上了均线。只有这一根K线会返回1,下一根即使收盘价继续在均线上方,也不会再次触发。
如果想反过来判断“下穿”(死叉),只需调换参数顺序:CROSS(MA(CLOSE,5), CLOSE),表示均线从下方向上穿过收盘价——等价于收盘价跌破均线。
错误一:用>代替CROSS做选股。如果你写CLOSE > MA(CLOSE,5)做条件选股,结果会包含均线上方的一大段日期,同一波行情可能选出十几根K线。而CROSS只选出穿越那一根,信号干净得多。
错误二:忽视震荡市的重复信号。当价格在均线附近反复上下摆动时,CROSS会忠实地记录每一次穿越,图上可能出现密集的小箭头。这不是函数写错了,而是行情本身在反复“穿来穿去”。如果觉得信号太碎,可以附加一个过滤条件,比如要求穿越时均线方向向上,或者要求收盘价与均线的差值超过某个阈值。
声明:(请您认真阅读一下条款!)
1、所有资源仅限学习研究,不构成任何投资建议,使用风险自行承担,我方不承担任何相关责任。
2、指标无准确率、无成功率承诺,请仔细阅读说明,理性学习使用。
3、仅提供安装指导,不提供使用方法,指标修改、转换、定制等服务,费用另议。
4、指标为虚拟文件,下载前请确认;一经付费 / 下载,不予退换退款。