均线、成交量、MACD三线金叉共振选股公式思路还是比较简单的,分别写出均线金叉、成交量的均量线金叉、MACD的快线和慢线金叉,最后用AND连接这三个条件。

python 金叉 cross 金叉算法_python 金叉 cross

 

一、编写选股公式所需通达信函数

1、EXIST函数

含义:是否存在

用法:EXIST(X,N),N周期内是否存在满足X条件

举例:EXIST(CROSS(MA(C,5),MA(C,10)),3) ,表示3日内是否存在5日均线、10日均线金叉,如果存在,结果为1,否则为0

2、FILTER函数

含义:过滤连续出现的信号

用法:FILTER(X,N),表示满足X条件后,将后面的N周期置为0

举例:FILTER(C>O,3),C>O表示阳线,FILTER(C>O,3)表示出现阳线之后,后面三天再次出现阳线也不会出现信号。看一眼下图,就明白了。

python 金叉 cross 金叉算法_经验分享_02

 

二、三线金叉选股公式编写

以5日均线、10日均线,5日均量线、10日均量线为例

MA5:=MA(C,5);{5日均线}

MA10:=MA(C,10);{10日均线}

V5:=MA(VOL,5);{5日均量线}

V10:=MA(VOL,10);{10日均量线}

DIF:=EMA(C,12)-EMA(C,26);{MACD指标快线}

DEA:=EMA(DIF,9);{MACD指标慢线}


A1:=CROSS(MA5,MA10);{5日均线、10日均线金叉}

A2:=CROSS(V5,V10);{5日均量线、10日均量线金叉}

A3:=CROSS(DIF,DEA);{快线、慢线金叉}


XG:A1 AND A2 AND A3;{三线金叉同时成立};

python 金叉 cross 金叉算法_python 金叉 cross_03

 

python 金叉 cross 金叉算法_经验分享_04

 

三、三线金叉选股公式改进

上面的公式中,用AND直接连接了三个金叉条件,表示三个金叉条件在同一天同时成立,这样的条件比较苛刻,符合条件的结果比较少。均线、均量线、MACD三线金叉只要在几日之内发生就可以,不一定要在同一天。用EXIST函数可以对公式进行改进优化。

MA5:=MA(C,5);{5日均线}

MA10:=MA(C,10);{10日均线}

V5:=MA(VOL,5);{5日均量线}

V10:=MA(VOL,10);{10日均量线}

DIF:=EMA(C,12)-EMA(C,26);{MACD指标快线}

DEA:=EMA(DIF,9);{MACD指标慢线}


MAJC:=CROSS(MA5,MA10);{5日均线、10日均线金叉}

VJC:=CROSS(V5,V10);{5日均量线、10日均量线金叉}

MACDJC:=CROSS(DIF,DEA);{快线、慢线金叉}


A1:=EXIST(MAJC,3);{最近三天存在均线金叉}

A2:=EXIST(VJC,3);{最近三天存在均量线金叉}

A3:=EXIST(MACDJC,3);{最近三天存在快线慢线金叉}


XG:FILTER(A1 AND A2 AND A3,2);{过滤信号,最近三天三个金叉条件都存在,满足该条件出信号,之后两天不出信号};

python 金叉 cross 金叉算法_经验分享_05

 

python 金叉 cross 金叉算法_python 金叉 cross_06

 

四、公式补充

python 金叉 cross 金叉算法_python 金叉 cross_07

上面的公式中,最后一句XG:FILTER(A1 AND A2 AND A3,2);,除了可以使用FILTER函数过滤信号,还可以使用在之前的文章中提到过的CROSS函数。XG:CROSS(A1 AND A2 AND A3,0.5);这样的写法可以实现相同的效果。