达斯·瑞文:编写简单选股公式的方法

来源:百度文库 编辑:九乡新闻网 时间:2024/04/29 16:11:51

编写简单选股公式的方法

引用:

1.将所有的显示式":",改为不显示式":="
选股条件的基本要求,为只能输出1个条件式,故需先将公式中所有的显示式":"改为不显示式":=",
如果原来显示式后面接有线型描述(颜色.对齐..等),亦请一并删除(有些软件不支援如:分析家)

例如:
ma1:ma(c,5),colorred;
ma2:ma(c,10),colorgreen,POINTDOT;
.....

先改为
ma1:=ma(c,5);
ma2:=ma(c,10);
.....


2.找出选股条件,并写成选股式
条件的寻找方法,依不同目的,大致可分以下几种:

1.'字'选股     如:'买'选股
方法:先找出公式中出现有'字'的地方,该式开头会以DRAW..TEXT开头,
DRAWTEXT  DRAWTEXTEX  DRAWYITEXT DRAWFLAGTEXT DRAWMOVETEXT
找到后,该函数(条件, ,'字')后面括号内的第1个即为条件,将该条件复制出来并加上分号即可

例如:
{求'5日均>10日均'选股}
ma1:=ma(c,5);
ma2:=ma(c,10);
DRAWTEXT(ma1>ma2,ma1,'5日均>10日均');
[解]
ma1:=ma(c,5);
ma2:=ma(c,10);
ma1>ma2;



2.图标选股     如:笑脸选股
方法:
先依不同软件,找出该图标的代号,
再找出公式中出现DRAWICON函数(条件,   ,图标代号)的式子,对照图标的代号(括号内的第3个),如果该图标代号为所求代号,
该函数后面括号内的第1个即为条件,将该条件复制出来并加上分号即可

例如:
{求图标1选股}
ma1:=ma(c,5);
ma2:=ma(c,10);
DRAWicon(ma1>ma2,ma1,1);
[解]
ma1:=ma(c,5);
ma2:=ma(c,10);
ma1>ma2;
注:不同股软图标有所不同,大家可以从网上搜索。在這不再描述。
3.A线上穿(下穿)B线选股  {上穿--金叉,下穿--死叉}
方法:A线上穿B线:  cross(A,B);
     A线下穿B线:  cross(B,A);

例如:
{求ma1上穿ma2选股}
ma1:ma(c,5);
ma2:ma(c,10);
[解]
ma1:=ma(c,5);
ma2:=ma(c,10);
cross(ma1,ma2);

{求ma1下穿ma2选股}
ma1:ma(c,5);
ma2:ma(c,10);
[解]
ma1:=ma(c,5);
ma2:=ma(c,10);
cross(ma2,ma1);


4.线A上拐(下拐) 选股  
方法:线A上拐:  cross(A,ma(A,2));    或  cross(A,ref(A,1));{aduo提供}
        线A下拐:  cross(ma(A,2),A);    或  cross(ref(A,1),A);{aduo提供}

例如:
{求改成ma1上拐}
ma1:ma(c,5);
[解]
ma1:=ma(c,5);
cross(ma1,ma(ma1,2));

ma1:=ma(c,5);
cross(ma1,ref(ma1,1));

{求改成ma1下拐}
ma1:ma(c,5);
[解]
ma1:=ma(c,5);
cross(ma(ma1,2),ma1);
或  
ma1:=ma(c,5);
cross(ref(ma1,1),ma1);

3..最后将所有绘图函数及单一输出值(如 0;  k;  if(,,); )全删除,使公式只剩1个选股式输出即成,
(若有2个以上条件,条件同时成立时,可在条件间用"and"连接;
  若有2个以上条件,条件不同时成立时,可在条件间用"or"连接)


举个例子:条件如下:(1)MACD日线金叉;  (2)CCI 指标刚刚上穿0轴线;  (3)股价刚刚在BOLL的中轨;
我们可能这样做:DIF:=EMA(CLOSE,12)-EMA(CLOSE,26);
DEA:=EMA(DIF,9);
MACD:=(DIF-DEA)*2;
K1:=CROSS(MACD,0);     这就是MACD发生金叉的语句

TYP:=(HIGH+LOW+CLOSE)/3;
CCI:=(TYP-MA(TYP,14))/(0.015*AVEDEV(TYP,14));
K2:=CROSS(CCI,0);         这是CCI上穿0轴的语句

BOLL:=MA(CLOSE,20);    这是股价在BOLL线中轨的语句
K1 AND K2 AND RANGE(BOLL,L,H);这就是三者同时成立的选股公式,其中H表示当天的最高价HIGH,当然你也可以用收盘价c,即CLOSE。

 

如何编写简单选股公式的方法

2008-10-28 03:17:23

编写简单选股公式的方法

1.将所有的显示式":",改为不显示式":="
选股条件的基本要求,为只能输出1个条件式,故需先将公式中所有的显示式":"改为不显示式":=",
如果原来显示式后面接有线型描述(颜色.对齐..等),亦请一并删除(有些软件不支援 如:分析家)

例如:
ma1:ma(c,5),colorred;
ma2:ma(c,10),colorgreen,POINTDOT;
.....

先改为
ma1:=ma(c,5);
ma2:=ma(c,10);
.....


2.找出选股条件,并写成选股式
条件的寻找方法,依不同目的,大致可分以下几种:

1.'字'选股     如:'买'选股
方法:先找出公式中出现有'字'的地方,该式开头会以DRAW..TEXT开头,
DRAWTEXT  DRAWTEXTEX  DRAWYITEXT DRAWFLAGTEXT DRAWMOVETEXT
找到后,该函数(条件, ,'字')后面括号内的第1个即为条件,将该条件复制出来并加上分号即可

例如:
{求'5日均>10日均'选股}
ma1:=ma(c,5);
ma2:=ma(c,10);
DRAWTEXT(ma1>ma2,ma1,'5日均>10日均');
[解]
ma1:=ma(c,5);
ma2:=ma(c,10);
ma1>ma2;

2.图标选股     如:笑脸选股
方法:
先依不同软件,找出该图标的代号,
再找出公式中出现DRAWICON函数(条件,   ,图标代号)的式子,对照图标的代号(括号内的第3个),如果该图标代号为所求代号,
该函数后面括号内的第1个即为条件,将该条件复制出来并加上分号即可

例如:
{求图标1选股}
ma1:=ma(c,5);
ma2:=ma(c,10);
DRAWicon(ma1>ma2,ma1,1);
[解]
ma1:=ma(c,5);
ma2:=ma(c,10);
ma1>ma2;
注:不同股软图标有所不同,大家可以从网上搜索。在這不再描述。
3.A线上穿(下穿)B线选股  {上穿--金叉,下穿--死叉}
方法:A线上穿B线:  cross(A,B);
     A线下穿B线:  cross(B,A);

例如:
{求ma1上穿ma2选股}
ma1:ma(c,5);
ma2:ma(c,10);
[解]
ma1:=ma(c,5);
ma2:=ma(c,10);
cross(ma1,ma2);

{求ma1下穿ma2选股}
ma1:ma(c,5);
ma2:ma(c,10);
[解]
ma1:=ma(c,5);
ma2:=ma(c,10);
cross(ma2,ma1);


4.线A上拐(下拐) 选股 
方法:线A上拐:  cross(A,ma(A,2));    或  cross(A,ref(A,1));{aduo提供}
        线A下拐:  cross(ma(A,2),A);    或  cross(ref(A,1),A);{aduo提供}

例如:
{求改成ma1上拐}
ma1:ma(c,5);
[解]
ma1:=ma(c,5);
cross(ma1,ma(ma1,2));

ma1:=ma(c,5);
cross(ma1,ref(ma1,1));

{求改成ma1下拐}
ma1:ma(c,5);
[解]
ma1:=ma(c,5);
cross(ma(ma1,2),ma1);
或 
ma1:=ma(c,5);
cross(ref(ma1,1),ma1);

3..最后将所有绘图函数及单一输出值(如 0;  k;  if(,,); )全删除,使公式只剩1个选股式输出即成,
(若有2个以上条件,条件同时成立时,可在条件间用"and"连接;
  若有2个以上条件,条件不同时成立时,可在条件间用"or"连接)


举个例子:条件如下:(1)MACD日线金叉;  (2)CCI 指标刚刚上穿0轴线;  (3)股价刚刚在BOLL的中轨;
我们可能这样做:DIF:=EMA(CLOSE,12)-EMA(CLOSE,26);
DEA:=EMA(DIF,9);
MACD:=(DIF-DEA)*2;
K1:=CROSS(MACD,0);     这就是MACD发生金叉的语句

TYP:=(HIGH+LOW+CLOSE)/3;
CCI:=(TYP-MA(TYP,14))/(0.015*AVEDEV(TYP,14));
K2:=CROSS(CCI,0);         这是CCI上穿0轴的语句

BOLL:=MA(CLOSE,20);    这是股价在BOLL线中轨的语句
K1 AND K2 AND RANGE(BOLL,L,H);这就是三者同时成立的选股公式,其中H表示当天的最高价HIGH,当然你也可以用收盘价c,即CLOSE。

走势特征选股公式的编制
(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(open0.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:=closecount(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注: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:=volcount(a,n)=n;
注:其中条件a的含义为成交量较上一交易日缩小,n为要统计的阶段时间,可在参数设定范围内设定参数范围。
(19)间隔放量
  a:=ma(vol,5);
barscount(c)>=n and hhv(a,n)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 (cm/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倍。

常用的通式:
{设A,B,R为三条曲线;N,M等为参数。如:A:ma(c,N) ; B:=ma(c,M); R:=c/ref(c,1)-1;等。。。}
(一).曲线在N天内的平均变化率
Fa:=(A/ref(A,N)-1)/N; Fb:=(B/ref(B,N)-1)/N; Fr:=(R/ref(R,N)-1)/N;
(二).变动角
∮a:=atan(Fa);    ∮b:=atan(Fb);  ∮r:=atan(Fr);
(三).曲线上相距N天的两点的连线的斜率
Ka:=(A-ref(A,N))/N;   Kb:=(B-ref(B,N))/N; Kr:=(R-ref(R,N))/N;
(四).倾角
∠a:=atan(Ka);   ∠b:=atan(Kb);   ∠r:=atan(Kr);
(五).交叉点
Cab:=cross(A,B);{交叉}    Jab:=longcross(A,B,N);{维持 -交叉}
JYa:=between(A,N,M);{介于}     FWa:=range(A,N,M);{范围}
(六).下拐点(由下向上转)
xD1:=llvbars(A,N)=M;{以N日最低点}
xD2:=ref(count(A-ref(A,1)<=0,N)=N,M) and count(A-ref(A,1)>0,M)=M;{以M日变化量的正负}
xD3:=ref(count(∠a-ref(∠a,1)<=0,N)=N,M) and ∠a>0;{以当日变化角的正负}
(七).上拐点(由上向下转)
sD1:=hhvbars(A,N)=M;{以N日最低点}
sD2:=ref(count(A-ref(A,1)>=0,N)=N,M) and count(A-ref(A,1)<0,M)=M;{以当日变化量的正负}
sD3:=ref(count(∠a-ref(∠a,1)>=0,N)=N,M) and ∠a<0;{以当日变化角的正负}
(八).位置(求得交叉点/拐点到当前的周期)
Wz1:=barslast(Cab);{第一(交叉)点的位置}
Wz2:=ref(Wz1,Wz1+1)+Wz1+2;{第二(交叉)点的位置}
Wz3:=ref(Wz1,Wz2+1)+Wz2+2;{第三(交叉)点的位置}
Wz4:=ref(Wz1,Wz3+1)+Wz3+2;{第四(交叉)点的位置}
Wz5:=ref(Wz1,Wz4+1)+Wz4+2;{第五(交叉)点的位置}
{Wzn:=ref(Wz1,Wz(n-1)+1)+Wz(n-1)+2;}
(九).曲线A叠加曲线B
F:=A/ref(A,1)-1;{A的变化率}
Js:=ref(B,barscount(c));{叠加位置(初始)}
DJ: (sum(F,0)+1)*Js;{叠加曲线(初始位置)}
Jd:=ref(B,barslast(条件));{叠加位置(定点)}
Dj:=(sum(F,0)+1)*Jd;{叠加曲线(预定位置)}

十:几个语句的区别

barscount(x)

第一个有效数据到当前的天数,例如,barscount(close)以于日线数据取得上市以来总交易日数。

BARSLAST(X);

上一个有效数据到今天的天数。



HHVBARS(X,N);

上一高点到今天的天数

HHV(X,N);

N日内X的最大值。