希财网客服热线:0731-85127885
希财网 >  攻略 >  股票

如何编写选股公式

佚名            来源:网络转载

  选股公式我想炒股的朋友都不陌生,那么如何编写选股公式呢,下面我们就以通达信为例为您简单介绍如何编写选股公式。

  首先,我们先了解选股公式中非常重要的因素-函数。做个比喻,函数就是一种语言,用以去告知计算机自己的想法,并且让它去实现自己的想法。函数就是这种语言的单词。我们在编辑器中选择插入函数,可以看到很多供参考的函数列表。

  我们可以通过下面的几个常用的例子来进一步了解如何编写选股公式:

  例一:

  一根K线有四个价格组成:

  最高价:HIGH

  收盘价:CLOSE

  最低价:LOW

  开盘价:OPEN

  成交量:VOL

  成交额:AMO

  例二:

  两条均线不断地交叉,就专门设定了一条函数来描述两条线交叉:CROSS(X,Y)

  假如下图中的两条均线一条名叫X,另外一条叫Y

  CROSS(X,Y)表示X向上穿过了Y

  CROSS(Y,X)表示Y向上穿过了X

  例三:

  前面的CLOSE,还是VOL,都表示当天,或者您使用的不是日线,那就表示本周期的数据,那么前几天的怎么表示呢?

  REF(X,M)

  例如:

  REF(Close,5)表示5天前的收盘;

  REF(Vol,10)表示10天前的成交量;

  这里的M就是参数

  如果我想把两个条件并列在一起怎么办?

  AND

  X AND Y就表示条件X和条件Y

  以上就是我对如何编写选股公式的回答,希望对您有多帮助。

  写条件选股公式时常用的通式

  编写条件选股公式时常用的通式。

  一、放量、缩量(成交量函数为VOL)

  1、放量:

  (1).今天成交量较昨天增加了1倍,表示如下:

  VOL/REF(VOL,1)〉2

  (2).今天成交量较10个交易日平均成交量放大了1倍,表示如下:

  a:=ma(vol,10);

  Vol/a〉2

  或者直接用如下公式表示:

  vol/ma(vol,10)〉2;

  (3).今日的5日均量较10个交易日平均成交量放大了1倍,表示如下:

  a:=ma(vol,10);

  b:=ma(vol,5);

  b/a〉2;

  (4).今日的成交量超过了整个流通盘的5%,表示如下:

  vol/capital〉0.05;其中capital代表流通盘。

  2、缩量

  (1).今日成交量较减少了一半,表示如下:

  vol/ref(vol,1)〈0.5;

  (2).今日成交量较10个交易日平均成交量减少一倍,表示如下:

  a:=ma(vol,10);

  vol/a〈2;

  或者直接用如下公式表示:

  vol/ma(vol,10)〈2;

  (3).今日的5日均量较10个交易日平均成交量减少1倍,表示如下:

  a:=ma(vol,10);

  b:=ref(a,5);

  a/b〈2;

  (4).今日的成交量低于了整个流通盘的5%,表示如下:

  vol/capital〈0.05;

  二、上涨、下跌

  上涨:

  今天的涨幅达到5%以上,表示如下:

  close/ref(close,1)〉1.05;

  5日均价连续上涨,表示如下:

  a:=ma(close,5);

  b:=ref(a,1);

  b;

  下跌:

  今天的跌幅达到5%以上,表示如下:

  close/ref(close,1)〈0.95;

  5日均价连续下跌,表示如下:

  a:=ma(close,5);

  b:=ref(a,1);

  a〈b;

  (3)、K线的描述

  close〉open;阳线

  close〈open;阴线

  open〉ref(close,1);高开

  open〈ref(close,1);低开

  open〉ref(high,1);跳空高开(high为最高价)

  open〈ref(low,1);跳空低开(low为最低价)

  三、走势特征选股公式的编制

  (1)、n日内创新高

  hhv(high,n)=hhv(high,0) and barscount(c)〉=n;

  注:n为指标参数,可在参数设定范围内设定参数范围。Hhv(x,n),求n周期内x最高值,n=0则从第一个有效值开始;barscount(x),将当前位置到n周期前的数值设为1,若x非0,则将当前位置到n周期前的数值设为1。

  (2)、n日内创新低

  llv(low,n)=llv(low,0) and barscount(close)〉=n;

  注n为指标参数,可在参数设定范围内设定参数范围。Llv(x,n),求n周期内x最低值,n=0则从第一个有效值开始;barscount(x)第一个有效数据到当前的天数,例如,barscount(close)以于日线数据取得上市以来总交易日数。

  (3)、n日内阴线多于阳线

  count(open〉close,n)/n〈0.5;

  注:n为指标参数,可在参数设定范围内设定参数范围。同时可以自由编辑里面的数值(如0.5等 ,达到确定阴线占全部K线个数的比例)。

  (4)、n日内阳线多于阴线

  count(open〈close,n)/n〉0.5;

  注:n为指标参数,可在参数设定范围内设定参数范围。同时可以自由编辑里面的数值(如0.5等 ,达到确定阳线占全部K线个数的比例)。

  (5)、n日内上涨多于下跌(第二天开盘高于前一天收盘)

  count(c〉ref(c,1),n)/n〉0.5;

  注:n为指标参数,可在参数设定范围内设定参数范围。同时可以自由编辑里面的数值(如0.5等 ,达到确定其中比例)。

  (6)、n日内上涨少于下跌(第二天开盘低于前一天收盘)

  count(c〉ref(c,1),n)/n〈0.5;

  注:n为指标参数,可在参数设定范围内设定参数范围。同时可以自由编辑里面的数值(如0.5等,达到确定其中比例)。

  (7)、连续n日收阳线

  up:=close〉open;

  count(up,n)=n;

  注:count(x,n),统计n周期中满足x条件的周期数,若n=0则从第一个有效值开始。n为指标参数,可在参数设定范围内设定参数范围。

  (8)、连续n日内收阴线

  up:=close〈open;

  count(up,n)=n;

  注:count(x,n),统计n周期中满足x条件的周期数,若n=0则从第一个有效值开始。N为指标参数,可在参数设定范围内设定参数范围。

  (9)、连续n天上涨

  count(close〉ref(close,1),n)=n;

  注:count(x,n),统计n周期中满足x条件的周期数,若n=0则从第一个有效值开始。N为指标参数,可在参数设定范围内设定参数范围。

  (10)、连续n天下跌

  count(c〈ref(c,1),n)=n;

  注:count(x,n),统计n周期中满足x条件的周期数,若n=0则从第一个有效值开始。N为指标参数,可在参数设定范围内设定参数范围。

  (11)、首次创新高

  barssince(c〉hhv(if(barscount(c)=1,high,0),0))+1=1;

  注:barscount(x),若x非0,则将当前位置到n周期前的数值设为1。

  (12)、创历史新高

  hhv(close,0)=close;

  注:hhv(x,n),求n周期内x最高值,n=0则从第一个有效值开始。

  (13)、创历史新低

  llv(close,0)=close;

  注:llv(x,n),求n周期内x最小值,n=0则从第一个有效值开始。

  (14)、单日放量

  a:=ref(ma(vol,5),1);

  vol/a〉n and vol/capital*100〉m;

  注:n为指标参数,代表今日成交量和前一日的5日均量的比值,可在参数设定范围内设定参数范围。

  (15)、阶段缩量

  sum(vol,n1)/capital〈=n2;

  注:n1为要统计的阶段时间,n2为缩量比例,可在参数设定范围内设定参数范围。

  (16)、阶段放量

  sum(vol,n1)/capital〉=n2;

  注:n1为要统计的阶段时间,n2为y放量比例,可在参数设定范围内设定参数范围。

  (17)、持续放量

  a:=vol〉ref(vol,1);

  count(a,n)=n;

  注:其中条件a的含义为成交量较上一交易日放大,n为要统计的阶段时间,可在参数设定范围内设定参数范围。

  (18)、持续缩量

  a:=vol〈ref(vol,1);

  count(a,n)=n;

  注:其中条件a的含义为成交量较上一交易日缩小,n为要统计的阶段时间,可在参数设定范围内设定参数范围。

  (19)、间隔放量

  a:=ma(vol,5);

  barscount(c)〉=n and hhv(a,n)〈n1*llv(a,n) and count(vol〉n2*a,n)〉n3;

  注:a.barscount(x)第一个有效数据到当前的天数。Barscount(c)对于日线数据取得上市以来总交易日数。

  b.完整含义:n日内五日均量的最大值小于最小值的n1倍,成交量大于等于五日均量的n2倍的情况发生的次数多于n3次。

  (20)、放量上攻

  a:=(c-ref(c,1))/ref(c,1)〉=(n/100);

  sum(vol,n1)/capital〉=(n2/100) and count(vol〉ref(vol,1),n3 )=n3 and count(a,n3)=n3;

  完整含义:每日股价涨幅均大于n%,n1日内累计换手率大于n2%,并且成交量连续在n3日内放大。

  (21)、温和放量上攻

  股价小幅上扬

  a1:=close/ref(close,1);

  a2:=a1〉1 and a1〈1.03;

  成交量小幅上扬

  b1:=vol/ref(vol,1);

  b2:=b1〉1 and b1〈2;

  c1:=ma(vol,n)/capital〈0.05;

  count(a2 and b2,n)/n〉0.6 and c1;

  完整公式为:

  a1:=close/ref(close,1);

  a2:=a1〉1 and a1〈1.03;

  b1:=vol/ref(vol,1);

  b2:=b1〉1 and b1〈2;

  c1:=ma(vol,n)/capital〈0.05;

  count(a2 and b2,n)/n〉0.6 and c1;

  注:公式分为股价小幅上扬和成交量小幅上扬两个部分,请在指标编写时注意其结构。

  (22)、突然放量

  vol〉ref(hhv(vol,n),1*m;

  注:当前成交量高于n个周期中最大成交量的m倍。

  (23)、平台整理

  count(close,0)〉n and (hhv(close,n)-llv(close,n))/llv(close,n)〈=(n1/100);

  注:count(close,0)〉n为平台整理n个周期的设定。(hhv(close,n)-llv(close,n))/llv(close,n)〈=(n1/100)为平台整理幅度n1%的设定。

  (24)、突破长期盘整

  ref(((hhv(h,n)-llv(l,n))/llv(l,n))/llv(l,n)),1)〈=(n1/100) and c〉=ref(hhv(h,n),1) and barscount(c)〉n;

  注:前n日在上下n1%的幅度内整理:ref(((hhv(h,n)-llv(l,n))/llv(l,n))/llv(l,n)),1)〈=(n1/100);

  今日突破:c〉=ref(hhv(h,n),1)。

  (25)、阶段强势股

  a:=sum(if(date-n=0,indexc,0),0);

  b:=sum(if(date-n1=0,indexc,0)0);

  e:=sum(if(date-n=0,c,0),0);

  f:=sum(if(date-n1=0,c,0),0);

  ((f-e)/e)〉((b-a)/a);

  注:该公式求的是n日-n1日之间涨幅高于大盘的股票。n、n1参数的表达格式为yymmdd,注意在2000年前的表达为年份的后两位,例如1999年为99,从2000年开始以100依次向后累加,例如2001年9月14日为1010914,indexc函数表示同期大盘的收盘价,该函数对分笔成交分析周期无效。

  (26)、阶段弱势股

  a:=sum(if(date=n,indexc,0),0);

  b:=sum(if(date=n1,indexc,0)0);

  e:=sum(if(date=n,c,0),0);

  f:=sum(if(date=n1,c,0),0);

  ((f-e)/e)〈((b-a)/a);

  注:该公式求的是n日-n1日之间涨幅低于大盘的股票。n、n1参数的表达格式为yymmdd,注意在2000年前的表达为年份的后两位,例如1999年为99,从2000年开始以100依次向后累加,例如2001年9月14日为1010914,indexc函数表示同期大盘的收盘价,该函数对分笔成交分析周期无效。

  (27)、大盘同步

  count((c〉o and indexc〉indexo) or (c〈o and indexc〈indexo),n)/n〉m/100;

  注:含义为n周期中与大盘走势相同(同收阴线或同收阳线)的例超过m%。此处的o不是数字的零,而是开盘价open的首写字母o。

  (28)、n日内强势股

  a:=(c-ref(o,n))/ref(o,n);

  b:=(indexc-ref(indexo,n))/ref(indexo,n);

  a〉b and a/b〉=m;

  注:n日内个股涨幅大于等于大盘涨幅的m倍。

  四、形态特征选股公式的编制

  (1)、均线多头排列

  a1:=ma(c,n1);

  a2:=ma(c,n2);

  a3:=ma(c,n3);

  a4:=ma(c,n4);

  count(a1〉a2 and a2〉a3 and a3〉a4,3)=3 and isup;

  注:n1、n2、n3、n4j日均线呈多头排列,isup也可以用close〉open表示。

  (2)、均线空头排列

  a1:=ma(c,n1);

  a2:=ma(c,n2);

  a3:=ma(c,n3);

  a4:=ma(c,n4);

  count(a1〈a2 and a2〈a3 and a3〈a4,3)=3 and not(isup);

  注:n1、n2、n3、n4j日均线呈空头排列,isup也可以用close〈open表示。

  (3)、早晨之星

  ref(close,2)/ref(open,2〈0.95 and ref(open,1)〈ref(close,2) and abs(ref(open,1)-ref(close,1)/ref(close,1)〈0.03 and close/open〉1.05 and close〉ref(close,2);

  注:早晨之星,这种形态和叫法自然是后市向好,为买进信号。早晨之星由三根K线组成,其顺序是:第一天在下跌过程中已形成一根阴线:

  ref(close,2)/ref(open,2〈0.95

  第二天呈裂口下跌,K线实体较短,构成星的主体部分,阴线或阳线均可,有无上下影线均不重要。

  ref(open,1)〈ref(close,2) and abs(ref(open,1)-ref(close,1)/ref(close,1)〈0.03

  关键是第三根K线必须是阳线,且其长度至少要升至第一根阴线实体(如果能够“包容”第一根阴线则最好不过了)

  close/open〉1.05 and close〉ref(close,2)

  (4)、强势整理

  a1:=abs(close-open)/open〈0.015;

  a2:=count(a,m)=m;

  a3:=ref(o,m)〈ref(c,m) and ref (c,m)/ref(c,m+1)〉1+n/100;

  a2 and a3;

  注:一根实体超过n的长阳,后面跟m个K线实体不超过1.5%的K线。

  (5)、高开大阴线

  open〉close and open/ref(c,1)〉=1+m/100 and close/open〈=1-n/100;

  注:跳空高开m%,当日股价较开盘价跌幅大于n。股价经过一段持续攀升之后,某一日突然跳高开盘:

  open/ref(c,1)〉=1+m/100

  后股价一路下行,尾市以接近最低点收市:

  close/open〈=1-n/100

  此信号出现,往往意味着股价已形成短期头部,应注意回避风险。

  (6)、低开大阳线

  open〈close and open/ref(c,1)〈=1-m/100 and close/open〉=1+n/100;

  注:跳空低开m%,当日股价较开盘价涨幅大于n,其他描述请参见(5)。

  (7)、黄昏之星

  ref(close,2)/ref(open,2)〉1.03 and ref(open,1)〉ref(close,2) and abs(ref(open,1)-ref(close,1)/ref(close,1)〈0.02 and close/open〈0.97 and close〈ref(close,2);

  注:黄昏之星表示股价回落,是卖出信号,应伺机抛货。幕星同样由三根K线组成,其形态和晨星正好相反:

  第一天股价继续上升,拉出一根阳线:

  ref(close,2)/ref(open,2)〉1.03

  第二天波动较小,形成一根小阳线或小阴线,构成星的主体部分:

  ref(open,1)〉ref(close,2) and abs(ref(open,1)-ref(close,1)/ref(close,1)〈0.02

  第三天形成一根包容第二天并延伸至第一天阳线实体:

  close/open〈0.97 and close〈ref(close,2)

  (8)、跳空缺口

  high〈ref(low,1) or low〉ref(high,1);

  注:从内容上看,分别是向下跳空缺口和向上跳空缺口。

  (9)、均线金叉

  a;=ma(c,5);

  b:=ma(c,10);

  cross(a,b);

  注:前二句是5、10日均线,cross是交叉函数,cross(a,b)表示5日均线与10日均线金叉。

  (10)、均线死叉

  a;=ma(c,5);

  b:=ma(c,10);

  cross(b,a);

  注:前二句是5、10日均线,cross是交叉函数,cross(b,a)表示5日均线与10日均线死叉。

  (11)、均线粘合

  ma1:=ma(c,5);

  ma2:=ma(c,10),

  ma3:=ma(c,20);

  p1:=abs(ma1-ma2)+abs(ma2-ma3);

  p1/c〈m/100 and ma1〉ref(ma1,1) and ma2〉ref(ma2,1);

  注:前三句是三根均线,p1是第一根均线减第二根均线差的绝对值与第二根均线减第三根均线差的绝对值之和,最后一句是p1与收盘价的比值小于一定比率m%(一般该比率为2%以下,同时前二均线今日比上翘。