【数据弟】选股公式详解

数据弟 第一财经今日股市 2018-06-10

    不少朋友在自编公式的时候都会遇到各种各样的难点,本周数据弟就给大家逐字逐句地解释一下我们目前为止用到的两个公式。

01

中线模型

  低位启动突破年线三天模型是我们用来筛选中线品种的公式,它的选股条件是这样的:

选股逻辑

1

短期均线多头排列;

2

近期上穿年线,且三日内收盘不低于年线;

3

近期有涨停基因;

4

量价配合理想,近期有量堆。

     选股公式是:

A1:=MA(C,5);

A2:=MA(C,10);

A3:=MA(C,20);

A4:=MA(C,30);

A5:=MA(C,250);

ZT:=C>REF(C,1)*1.095;

A1>A2 AND A2>A3 AND A3>A4 AND REF(A5,2)>REF(O,2) AND EVERY(C>A5,3) AND COUNT(ZT,80)>0 AND MA(V,BARSSINCEN(ZT,80))>2*REF(MA(V,80), BARSSINCEN(ZT,80));

    本周参数已经需要改成80了,因为距离创业板1571低点目前经过了79个交易日。

    首先,给大家解释一下,在公式之中输出只能有一个,也就是说如果我们需要在条件选股中用到这个公式,那必须把所有的条件糅杂在一起,形成一个总的条件。为了把多个条件连在一起,比较常用的是“AND”和“OR”,前者代表“而且”,后者代表“或者”。但“OR”用多了在执行的时候容易形成逻辑错误,需要特别小心。

    虽然选股的输出条件只能有一个,但是我们可以用赋值的方式进行过渡,比如在上面的公式中“ZT:=CLOSE>REF(CLOSE,1)*1.095;”一句就是标准的赋值语句。它的作用是把“涨停”这个条件单独拎出来,这样在后续汇总条件的时候不需要每次都赘述整个语句,而可以用“ZT”两个字母直接来代替涨停的情况。“:=”的符号就是赋值语句的专用标志,与之相对的是“:”代表了条件输出,每个公式中只能出现一次。

    用张图来说明一下公式编写的结构:

    在上述的公式中出现了以下这些函数:

C:收盘价;

O:开盘价;

V:成交量;

MA(X,N): X的N日简单移动平均;

REF(X,N):引用N周期前的X值;

EVERY(X,N):N个周期内条件X一直都满足;

COUNT(X,N):统计N周期中满足X条件的周期数;

BARSSINCEN (X,N):N周期内第一次条件X成立到当前的周期数。

    接下来我们就来逐句分析一下公式的意义。

A1:=MA(C,5)

    给A1赋值为收盘价的5日简单移动平均(也就是我们常用的“五天线”)

A2:=MA(C,10)

    给A2赋值为收盘价的10日简单移动平均(也就是我们常用的“十天线”)

A3:=MA(C,20)

    给A3赋值为收盘价的20日简单移动平均(也就是我们常用的“二十天线”)

A4:=MA(C,30)

    给A4赋值为收盘价的30日简单移动平均(也就是我们常用的“三十天线”)

A5:=MA(C,250)

    给A5赋值为收盘价的250日简单移动平均(也就是我们常用的“年线”)

ZT:=C>REF(C,1)*1.095

    给ZT赋值为收盘上涨9.5%以上

A1>A2

    五天线在十天线之上

A2>A3

    十天线在二十天线之上

A3>A4

    二十天线在三十天线之上(以上三个条件的意思是短期均线多头排列)

REF(A5,2)>REF(O,2)

    倒数第三根K线的开盘价在当时的年线之下

EVERY(C>A5,3)

    最近三根K线的收盘价都在年线之上(以上两个条件的意思三天前上穿年线,且三日收盘在年线之上)

COUNT(ZT,80)>0

    最近80个交易日中出现过涨停(有涨停基因)

MA(V,BARSSINCEN(ZT,80))>2*REF(MA(V,80), BARSSINCEN(ZT,80))

    最近八十天内第一次出现涨停之后的平均量能大于这一天之前80个交易日平均量能的两倍(近期有量堆)

    以上便是中线选股公式每一个语句的具体含义,如果您对公式设置还有疑问,请点击下方的传送门,回看《自编公式选股的常见问题》一文。

传送门

《自编公式选股的常见问题》

02

盘中选股

    上周我们对盘中寻找具有涨停基因的选股模型进行了升级,除了本来的四个选股条件外还增加了三个辅助条件。

选股条件

1

开盘的60分钟内完成一波拉升(10:30前);

2

拉升幅度大于5%(计算的是开盘后的低点和拉升后的高点);

3

 回调后在均线附近盘整60分钟以上;

4

最大偏离均线幅度小于1.5%。

   辅助条件

1

拉升之后回踩幅度小于拉升幅度的一半;

2

没有冲击过涨停;

3

 回调后在均线附近盘整60分钟以上;

4

排除开盘低开之后拉起,最高点涨幅不到2%的情况。

    升级后的选股公式是:

开盘至今:=BARSLAST(DATE>REF(DATE,1))+1;

均价:=SUM(V*C,开盘至今)/SUM(V,开盘至今);

HHV(H,开盘至今)>HHV(H,开盘至今-60) AND HHV(H,开盘至今)/REF(O,开盘至今-1)>1.035 AND HHV(H,开盘至今)/LLV(L,开盘至今)>1.05 AND EVERY(BETWEEN(C,均价*0.985,均价*1.015),60) AND BARSLAST(L=LLV(L, 开盘至今))>BARSLAST(H=HHV(H,开盘至今)) AND LLV(L, BARSLAST(H=HHV(H,开盘至今)))>( HHV(H,开盘至今)+ LLV(L, 开盘至今))/2 AND 1.09*REF(C,开盘至今)>HHV(H,开盘至今) AND HHV(H,开盘至今)>1.02*REF(C,开盘至今);

    公式中出现了以下函数:

C:收盘价;

O:开盘价;

H:最高价;

L:最低价;

V:成交量;

DATE:日期;

REF(X,N):引用N周期前的X值;

BARSLAST(X):最近一次X条件成立到现在的周期数;

HHV(X,N):N个周期里X的最大值;

LLV(X,N):N个周期里X的最小值;

SUM(X,N):N周期里所有X的总和;

EVERY(X,N):N个周期内条件X一直都满足;

BETWEEN(A,B,C):A的值在B和C之间。

    每句的具体意义是:

开盘至今:=BARSLAST(DATE>REF(DATE,1))+1

    给“开盘至今”赋值为最近一次满足比前一个1分钟K线日期大的1分钟K线至今的周期数加一(其实就是开盘第一根1分钟K线至今的周期数)

均价:=SUM(V*C,开盘至今)/SUM(V,开盘至今)

    给“均价”赋值为开盘至今的加权平均收盘价

HHV(H,开盘至今)>HHV(H,开盘至今-60)

    开盘以来的最高价比开盘60分钟之后再出现的最高价高(到目前为止最高价出现在开盘后的头60分钟内)

HHV(H,开盘至今)/REF(O,开盘至今-1)>1.035

    开盘至今的最高点比开盘价至少高3.5%

HHV(H,开盘至今)/LLV(L,开盘至今)>1.05

    开盘至今的最高点比最低点至少高5%(拉升幅度大于5%)

EVERY(BETWEEN(C,均价*0.985,均价*1.015),60)

    60分钟内的1分钟K线收盘价都在均价线的上下1.5%之间(回调后在均线附近盘整60分钟以上且最大偏离均线幅度小于1.5%)

BARSLAST(L=LLV(L, 开盘至今))>BARSLAST(H=HHV(H,开盘至今))

    开盘至今的最低点早于最高点出现(回调不破开盘后的低点)

LLV(L, BARSLAST(H=HHV(H,开盘至今)))>( HHV(H,开盘至今)+ LLV(L, 开盘至今))/2

    最高点之后的低点高于最高点和最低点的半分位(回踩幅度小于拉升幅度的一半)

1.09*REF(C,开盘至今)>HHV(H,开盘至今)

    开盘至今最高点的涨幅不到9%(未冲击涨停)

HHV(H,开盘至今)>1.02*REF(C,开盘至今)

    开盘至今最高点的涨幅大于2%(排除开盘低开之后拉起,最高点涨幅不到2%的情况)

    以上就是公式中所有语句的解释。用盘中1分钟级别的选股要特别注意设置问题,具体注意事项和步骤请回看《盘中寻找具有涨停基因的个股》一文。

传送门

《盘中寻找具有涨停基因的个股》

    另外,数据弟将休假一周,所以下周的文章就只得暂停一次,和大家事先打声招呼,十分抱歉!