? ? ? ? ? ? ? ? ?教你编写条件选股指标?
什么是条件选股?
简单讲,就是按照您设定的条件用电脑帮助您完成一些太多太复杂的挑选--比如您有一些好的心得和方法,可是有2700多只股票,您就是有100双眼睛有时也不一定可以看得过来,这时条件选股公式 电脑就派上用场了!编写条件选股公式其实很简单,它是在技术公式的基础上编写而成的,我们还可以将任意一个技术指标公式改写成选股公式。值得注意的是,选股公式与技术公式的区别是它只有一个返回值,通俗的讲就是选股公式只有一个不带“=”号的语句,其它语句都要有“=”号,否则在测试时会提示"选股公式必须只有一个返回值",如图:
好了,我们开始建立一个选股公式。点击”条件选股“选项,选择”新建“,开始编写,写完后给指标起个名字,点击测试通过后保存。我们举例来说明:
{龙行KDJ}
RSV:=(CLOSE-LLV(LOW,7))/(HHV(HIGH,7)-LLV(LOW,7))*100;
短K:SMA(RSV,3,1),COLORFF00FF;
短D:SMA(短K,3,1),COLORYELLOW;
RSV1:=(CLOSE-LLV(LOW,38))/(HHV(HIGH,38)-LLV(LOW,38))*100;
长K:SMA(RSV1,5,1),COLORRED;
长D:SMA(长K,10,1),COLOR66CC33;
18,COLORWHITE;
85,COLORBLUE;
STICKLINE(短K>短D,短K,短D,4,0),COLORYELLOW;
STICKLINE(短K<=短D,短K,短D,4,0),COLORGREEN;< /p>
STICKLINE(长K>长D,长K,长D,4,0),COLORRED;
STICKLINE(长K<=长D,长K,长D,4,0),COLOR669933;< /p>
上面是《龙行KDJ》技术指标,根据这个指标改编成选股指标。
{龙行短线选股}
RSV:=(CLOSE-LLV(LOW,7))/(HHV(HIGH,7)-LLV(LOW,7))*100;
短K:=SMA(RSV,3,1);
短D:=SMA(短K,3,1);
cross(短K,短D)
{配合龙行kdj指标使用}
{龙行长线选股}
RSV:=(CLOSE-LLV(LOW,38))/(HHV(HIGH,38)-LLV(LOW,38))*100;
长K:=SMA(RSV1,5,1);
长D:=SMA(长K,10,1);
cross(长K,长D)
{配合龙行KDJ指标使用}
看明白了吧!我们把一个技术指标改编成了2个选股指标,而且每个只用了4条语句就OK啦!那么我们就可以开始选股啦,把选出的股票存放在大智慧自选1板块里,用龙行KDJ技术指标对照比较一下,看看选出的股票走势都是在技术指标的什么位置上,是处在低位还是处在阶段低位,你就可以根据判断择机介入了。凡是用技术指标改编的选股公式建议你都这样做。条件选股的优势在于语句少、速度快,凡是符合条件的股票一个不漏的选出来存放在自选1或自选2等自定义的板块里供你挑选。下面选择一些各种走势特征和形态特征的指标供朋友参考。
一、放量、缩量(成交量函数为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;< /p>
(2).今日成交量较10个交易日平均成交量减少一倍,表示如下:
a:=ma(vol,10);
vol/a<2;< /p>
或者直接用如下公式表示:
vol/ma(vol,10)<2;< /p>
(3).今日的5日均量较10个交易日平均成交量减少1倍,表示如下:
a:=ma(vol,10);
b:=ref(a,5);
a/b<2;< /p>
(4).今日的成交量低于了整个流通盘的5%,表示如下:
vol/capital<0.05;< /p>
二、上涨、下跌
上涨:
今天的涨幅达到5%以上,表示如下:
close/ref(close,1)>1.05;
5日均价连续上涨,表示如下:
a:=ma(close,5);
b:=ref(a,1);
b;
下跌:
今天的跌幅达到5%以上,表示如下:
close/ref(close,1)<0.95;< /p>
5日均价连续下跌,表示如下:
a:=ma(close,5);
b:=ref(a,1);
a
(3)、K线的描述
close>open;阳线
close open>ref(close,1);高开 open
open>ref(high,1);跳空高开(high为最高价) open
三、走势特征选股公式的编制 (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;< /p>
注:n为指标参数,可在参数设定范围内设定参数范围。同时可以自由编辑里面的数值(如0.5等 ,达到确定阴线占全部K线个数的比例)。 (4)、n日内阳线多于阴线 count(open 注: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;< /p>
注:n为指标参数,可在参数设定范围内设定参数范围。同时可以自由编辑里面的数值(如0.5等 ,达到确定其中比例)。 (7)、连续n日收阳线 up:=close>open; count(up,n)=n; 注:count(x,n),统计n周期中满足x条件的周期数,若n=0则从第一个有效值开始。n为指标参数,可在参数设定范围内设定参数范围。 (8)、连续n日内收阴线 up:=close 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
注: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;< /p>
注: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
count(a,n)=n; 注:其中条件a的含义为成交量较上一交易日缩小,n为要统计的阶段时间,可在参数设定范围内设定参数范围。 (19)、间隔放量 a:=ma(vol,5); barscount(c)>=n and hhv(a,n) 注: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;< /p>
成交量小幅上扬 b1:=vol/ref(vol,1); b2:=b1>1 and b1<2;< /p>
c1:=ma(vol,n)/capital<0.05;< /p>
count(a2 and b2,n)/n>0.6 and c1; 完整公式为: a1:=close/ref(close,1); a2:=a1>1 and a1<1.03;< /p>
b1:=vol/ref(vol,1); b2:=b1>1 and b1<2;< /p>
c1:=ma(vol,n)/capital<0.05;< /p>
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 注:含义为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 注:n1、n2、n3、n4j日均线呈空头排列,isup也可以用close (3)、早晨之星 ref(close,2)/ref(open,2<0.95 and ref(open,1)1.05 and close>ref(close,2); 注:早晨之星,这种形态和叫法自然是后市向好,为买进信号。早晨之星由三根K线组成,其顺序是: 第一天在下跌过程中已形成一根阴线: ref(close,2)/ref(open,2<0.95< /p>
第二天呈裂口下跌,K线实体较短,构成星的主体部分,阴线或阳线均可,有无上下影线均不重要。 ref(open,1)
关键是第三根K线必须是阳线,且其长度至少要升至第一根阴线实体(如果能够“包容”第一根阴线则最好不过了) close/open>1.05 and close>ref(close,2) (4)、强势整理 a1:=abs(close-open)/open<0.015;< /p>
a2:=count(a,m)=m; a3:=ref(o,m)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 注:跳空低开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
注:黄昏之星表示股价回落,是卖出信号,应伺机抛货。幕星同样由三根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< /p>
第三天形成一根包容第二天并延伸至第一天阳线实体: close/open<0.97 and close
(8)、跳空缺口 highref(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 注:前三句是三根均线,p1是第一根均线减第二根均线差的绝对值与第二根均线减第三根均线差的绝对值之和,最后一句是p1与收盘价的比值小于一定比率m%(一般该比率为2%以下,同时前二均线今日比昨日上翘。 ? ? 交易系统指标的编写 交易系统指标是通过大智慧的函数及条件所编制的在主图K线图上显示买卖红绿箭头的指标,是大智慧在条件选股功能上的一个大的延伸,旨在建立一套完整的交易规则体系,系统可以通过此平台对我们的买入、卖出等操作发出明确的买卖信号指示。 一、 编辑交易系统公式 进入大智慧“公式编辑器” (1) 、点击“交易系统”选项,选择“新建”,可以建立一个新的交易系统。 (2) 、选中一个具体的交易系统,双击名称或者点击“修改”,可能浏览并编辑该系统的公式内容。 二、 交易提示编辑时常用的函数: (1)、前提:交易系统一共包含多头买入(卖出)、空头买入(卖出)四种情况,但是由于我们只允许多头买入、卖出,故我们这里不讨论空头情况。 (2)、函数 ENTERLONG:多头买入函数。 EXITLONG:多头卖出函数。 简单的交易系统模型应该如下表示: ENTERLONG:条件A; EXITLONG:条件B; 注意:一个完整的交易系统必须有进出两个条件组成,也就是说是ENTERLONG、EXITLONG或者ENTERSHORT、EXITSHORT(空头买入、卖出函数)中其中一组组成。 三、 交易系统的编制方法 首先,要确定的是交易系统是多个条件的组合。通过不同条件的叠加、修正,系统自动在满足我们组合条件的个股K线图中添加买卖信号。 (1)、均线交易系统 如果个股5日均线上穿10日均线时,我要买入;相反,个股5日均线下穿10日均线我就卖出,这样的一个思路我们怎么来编写交易系统呢?很简单 {均线交易} a1:=CROSS(MA(CLOSE,5),MA(CLOSE,10));{5日均线上穿10日均线(买入条件)} a2:=CROSS(MA(CLOSE,10),MA(CLOSE,5));{10日均线下穿5日均线(卖出条件)} ENTERLONG:CROSS(MA(CLOSE,5),MA(CLOSE,10));{多头买入ENTERLONG:条件a1} EXITLONG:CROSS(MA(CLOSE,10),MA(CLOSE,5));{多头卖出EXITLONG:条件a2} 同时按照自己的需求选择正确的介入点,如果不作选择,系统将默认在满足条件时发出提示信号。 为了方便修改指标参数,也可以将5日均线、10日均线设定成参数:N(1 100 5)和M(1 100 10),并将其默认为5、10。参数自述中加上“短期均线上穿长期均线买入,长期均线上穿短期均线卖出。” 那么在使用该交易系统时,用鼠标右健点击发出的买卖提示点,选择“调整指标参数”,就可以很方便的修改里面的2条均线参数。 (2)、KDJ交易系统 我们知道如果在K小于20的区域发生了K线上穿过D线是很好的买入条件;相反,K>80并且K线下穿过了D线,则是很好的卖出条件。如何编辑呢? 第一步:在公式编写栏中分别设定公式的名称、分析周期、参数的各项内容,并编写KD的表达式,并且将K、D表达为两个中间表达式。中间表达式用符号“:=” RSB:=(CLOSE-LLV(LOW,N))/(HHV(HIGN,N)-LLV(LOW,N)0*100; K:=SMA(RSV,M1,1); D:=SMA(K,M2,1); 第二步:完成交易系统的结构 ENTERLONG:CROSS(K,D) AND K<20;< /p>
EXITLONG:CROSS(D,K) AND K>80; 完整表达式: RSV:=(CLOSE-LLV(LOW,9))/(HHV(HIGH,9)-LLV(LOW,9))*100; K:=SMA(RSV,3,1); D:=SMA(K,3,1); ENTERLONG:CROSS(K,D) AND K<20;< /p>
EXITLONG:CROSS(D,K) AND K>80; 测试通过,退出。 但是,假设在一个KD强势的市场中,如果股价从下方穿过了30日均线,并且当天的成交量有比较明显的放大,我会买入;我的卖出条件是股价跌下10日均线之下立即抛出。这个交易系统怎么编辑呢? 买入条件: KDJ强势: AA:="KDJ.D"(9,3,3);{因为KDJ指标中3个参数默认值分别为9、3、3,故我们应在指标中增加默认值}。 A1:=AA>40; A2:=VOL/MA(VOL,5)>2;{成交量明显放大,量化为大于5日均量的一倍} A3:=CROSS(CLOSE,MA(CLOSE,30));{股价从下方上穿过了30日均线} ENTERLONG:A1 AND A2 AND A3;{买入条件} A4:=CROSS(MA(CLOSE,5),CLOSE);{股价从上方下穿过了5日均线} EXITLONG:A4 AND COUNT(A1 AND A2 AND A3,20)=1;{卖出条件:注意其后的COUNT( )是用来限定卖出信号发生在买入条件发生的20天内。} 那么,完整的公式为: AA:="kdj.d"(9,3,3); A1:=AA>40; A2:=VOL/MA(VOL,5)>2; A3:=CROSS(CLOSE,MA(CLOSE,30)); A4:=CROSS(MA(CLOSE,5),CLOSE); ENTERLONG:A1 AND A2 AND A3; EXITLONG:A4 AND COUNT(A1 AND A2 AND A3,20)=1; 测试通过,退出。 交易系统公式最好找自己熟悉的且常用的技术指标(主副图)或选股指标公式来改编,一是容易上手;二是使用放心。 公式举例: {均线轨道 参数 N: 1 100 26} VAR1:=MA(CLOSE,N);{对“VAR1”赋值} VAR2:=MA(CLOSE,2*N);{对“VAR2”赋值} VAR3:=MA(CLOSE,3*N);{对“VAR3”赋值} VAR4:=MA(CLOSE,4*N);{对“VAR4”赋值} VAR5:=MA((VAR1 VAR2 VAR3 VAR4)/4,5);{一条多条均线的平均线} 上轨:=VAR5*1.08;{在均线“VAR5”上加上8%的幅度变成“上轨”} 下轨:=VAR5*0.92; {在均线“VAR5”上减去8%的幅度变成“下轨”} {多头买入} ENTERLONG:CLOSE<下轨;< /p>
{多头卖出} EXITLONG:CLOSE>上轨;?