一、选股公式的特征
特征一、可以相当简单。例: c>o ; 找出所有收阳的股票; c>ref(c,1)*1.05;找出所有涨幅超过5%的股票。
有的又相当复杂。例:
VARC:=AMOUNT/VOL/100;
VARD:=(3*HIGH + LOW + OPEN + 2*CLOSE)/7;
VARF:=SUM(AMOUNT,13)/VARC /100;
VAR16:=DMA(VARD,VOL/VARF);
VAR31:=MA(HHV(HIGH,488),18);
VAR32:=MA(HHV(HIGH,220),18);
VAR33:=MA(HHV(HIGH,98),18);
VAR34:=MA(LLV(LOW,488),18);
VAR35:=MA(LLV(LOW,220),18);
VAR36:=MA(LLV(LOW,98),18);
VAR37:=MA((((((((VAR34 * 0.96) + (VAR35 * 0.96)) + (VAR36 * 0.96)) + (VAR31 * 0.558)) + (VAR32 * 0.558)) + (VAR33 * 0.558)) / 6),18);
VAR38:=MA((((((((VAR34 * 1.25) + (VAR35 * 1.23)) + (VAR36 * 1.2)) + (VAR31 * 0.55)) + (VAR32 * 0.55)) + (VAR33 * 0.65)) / 6),18);
VAR39:=MA((((((((VAR34 * 1.3) + (VAR35 * 1.3)) + (VAR36 * 1.3)) + (VAR31 * 0.68)) + (VAR32 * 0.68)) + (VAR33 * 0.68)) / 6),18);
VAR40:=MA(((VAR37*3 +VAR38 * 2 + VAR39) / 6) * 1.738,18);
VAR43:=REF(LOW,1);
VAR44:=(SMA(ABS((LOW - VAR43)),3,1) / SMA(MAX((LOW- VAR43),0),3,1)) * 100;
VAR45:=MA(IF(((CLOSE * 1.35) <= VAR40),(VAR44 * 10),(VAR44 / 10)),3);
VAR46:=LLV(LOW,30);
VAR47:=HHV(VAR45,30);
VAR49:=IF((LOW <= VAR46),(VAR45 + VAR47 * 2)/2,0);
提示:=MA((VAR49 AND (CLOSE < COST(1))),3);
买入:=(MA(VAR49 AND (CLOSE < COST(1)),3) AND (CLOSE - VAR16) / VAR16 * 100 < - 11)*0.5;
欢喜:=IF((REF(CLOSE,13) - CLOSE) / REF(CLOSE,13)* 100 >15 AND SUM(VOL/CAPITAL,13)*100 < 18 AND VOL/CAPITAL *100 < 2.5 AND (REF(CLOSE,1) - CLOSE)/ REF(CLOSE,1) * 100 < 8,0.7,0);
V2:=(CLOSE - REF(CLOSE,1))/REF(CLOSE,1)* 100;
V3:=MA(VOL,2) / MA(VOL,10);
V4:=VOL / CAPITAL;
A1:=0.0068 * V2 - 0.0072 * V3 - 0.5676 * V4 - 0.0105;
A2:=0.0015 * V2 - 0.0124 * V3 + 1.7461 * V4 - 0.0074;
发财:=-(12.2401 * A1)- A2 + 0.321 < 0 AND REF(C<O,1);
翻番:=(CLOSE - MA(CLOSE,27)) / MA(CLOSE,27)< -0.16;
选股:(买入+翻番+发财+欢喜+提示)>2;
当然这个不是最复杂的。
特征二,很多复杂的选股公式是可以拆分的。仍以上面这个为例,至少可以拆分成5个选股公式。比如下面这两个:
(一)
V2:=(CLOSE - REF(CLOSE,1))/REF(CLOSE,1)* 100;
V3:=MA(VOL,2) / MA(VOL,10);
V4:=VOL / CAPITAL;
A1:=0.0068 * V2 - 0.0072 * V3 - 0.5676 * V4 - 0.0105;
A2:=0.0015 * V2 - 0.0124 * V3 + 1.7461 * V4 - 0.0074;
发财:-(12.2401 * A1)- A2 + 0.321 < 0 AND REF(C<O,1);
(二)
翻番:(CLOSE - MA(CLOSE,27)) / MA(CLOSE,27)< -0.16;
特征三,大部分指标公式都可以提练出选股公式。也就是说,很多选股公式是指标公式的组成部分。指标和选股两类公式多数情况下是可以相互演变的。
比如KDJ本身是一个传统的技术指标,而 cross("kdj.j","kdj.d") and "kdj.j"<30; 就是利用KDJ指标中J与D的金叉和J小于30时所处的位置提练的。
特征四,选股公式可以根据需要无限量地增加输出限制。限制越多,信号量越少。增加限制的目的是为了提高成功率,多数情况下可以实现,少数情况下成功率不升反降。上面这个公式增加限制条件(5天内J曾经在零轴下)后:
cross("kdj.j","kdj.d") and "kdj.j"<30 and count(j<0,5)>=1;
感兴趣的朋友可分别测试信号量与成功率,看有何区别。
二、编制选股公式分类
编制选股公式的过程,实际上就是将我们所要求的某种形态或特征用函数语言表述出来。表达的方式与指标公式基本一致,只是侧重点有所区别。在编写中大致分为这样几类:
(一)将K线的基本形态用公式表述出来。
例一:跳空低开收长阳。o<ref(l,1)and (c-o)/o*100>5; 或者 o<ref(l,1)and (c-o)/o>0.05;
例二:三个白武士。
ref(c,2)>ref(o,2) and ref(c,1)>ref(o,1) and c>o and ref(c,1)>ref(c,2) and c>ref(c,1);
另一种表述方式为:count(c>o,3)=3 and count(c>ref(c,1),2)=2;
还有一种表述方式:all(c>o,3)and all(c>ref(c,1),2);
(二)将成交量的基本形态用公式表述出来。
例一:今日比昨日的成交量缩小了1倍:v/ref(v,1)<0.5;
例二:突然放量,成交量较前30天的最大成交量增大1倍。
v>ref(hhv(v,30),1)*2;
(三)将基本面的一些特征用公式表述出来。
例一:2、流通盘小于10000万且市盈率小于15。
FINANCE(7)<=10000 AND DYNAINFO(39)<=15 AND DYNAINFO(39)>0;
为什么加个大于零?不然将亏损股也选出来了,是不?
例二:换手率大于5%和振幅小于3%。
换手率:=VOL/CAPITAL*100;
振幅:=(H-L)/REF(C,1)*100;
换手率>5 and 振幅<3;
(四)将指定形态用公式表述出来。
例一:5日均线与10日均线、5日均量与10日均量、MACD这三样同时金叉 。
cross(ma(c,5),ma(c,10))and cross(ma(v,5),ma(v,10)) and cross("macd.diff","macd.dea");
例二:5日线在底下即将上穿10日线,将穿未穿的时候发出预警。
ma(c,5)>ref(ma(c,5),1) and ma(c,5)<ma(c,10) and (ma(c,10)-ma(c,5))/ma(c,5)*100<0.5;
网上所见李雨青的选股公式大多属于此类。据我所知,李雨青在著述中提供了很多好的思路,我们所见到的基本是众多公式爱好者依据他的思路编写的。
(五)将已有的指标公式中具有买点类的信号特征“剥离”出来。这种“剥离”有时是简单地分离,有时是再创作,即在原有公式的基础上还需要再加工。
关于将指标改成选股的要点,我在《公式编辑入门》中已谈过,这里不再赘述。仅举一例。公式源码如下:
{股市马经}
A1:3*SMA((C-LLV(L,55))/(HHV(H,55)-LLV(L,55))*100,5,1)-2*SMA((C-LLV(L,55))/(HHV(H,55)-LLV(L,55))*100,5,1);
黑马线:EMA(A1,5),LINETHICK2,COLOR6600FF;
A2:=(黑马线-REF(黑马线,1))/REF(黑马线,1)*100;
A3:=EMA(C,5);
A4:=((C-LLV(L,21))/(HHV(H,21)-LLV(L,21)))*100;
趋势线:(MA(3*SMA(A4,6,1)-2*SMA(SMA(A4,5,1),5,1),2)),LINETHICK2,coloryellow;
A5:=(HHV(H,60)-C)/(HHV(H,60)-LLV(L,60))*100;
DRAWTEXT(FILTER(REF(黑马线,1)>90 AND A2<0,7),黑马线,'跑'),COLOR00FF00;
DRAWTEXT(CROSS(A1,黑马线)AND 黑马线<A5,黑马线,'黑马');
DRAWTEXT(CROSS(黑马线,A5)AND 趋势线<80,黑马线,'追涨');
DRAWTEXT(CROSS(趋势线,0)AND 黑马线<40,5,'大黑马');
底部:(A2<-10 AND A2>REF(A2,1))*25,colorred;
DRAWICON(底部 AND A3>REF(A3,1),25,4);
机会来临:REF(IF((MA(C,5)-C)/C>0.04 AND (MA(C,10)-MA(C,5))/MA(C,5)>0.04,30,0),1),COLORF00FF0;
大势已去:IF(CROSS(黑马线,A1)AND 黑马线>70 AND 趋势线>80,90,100),COLORFF0000;
分析一下,这个公式中涉及“买”的信号有黑马、追涨、大黑马、底部和机会来临五个明显的,另外还有一个画图标信号。
假如我们提取其中的《机会来临》,仔细分析后,就是一句话:
机会来临:REF(IF((MA(C,5)-C)/C>0.04 AND (MA(C,10)-MA(C,5))/MA(C,5)>0.04,30,0),1);
这个可看作简单提取。
如果提取《大黑马》的话,从后向前推,涉及趋势线和黑马线两个定义,这部分都有用:
A1:3*SMA((C-LLV(L,55))/(HHV(H,55)-LLV(L,55))*100,5,1)-2*SMA((C-LLV(L,55))/(HHV(H,55)-LLV(L,55))*100,5,1);
黑马线:EMA(A1,5),LINETHICK2,COLOR6600FF;
A4:=((C-LLV(L,21))/(HHV(H,21)-LLV(L,21)))*100;
趋势线:(MA(3*SMA(A4,6,1)-2*SMA(SMA(A4,5,1),5,1),2)),LINETHICK2,coloryellow;
DRAWTEXT(CROSS(趋势线,0)AND 黑马线<40,5,'大黑马');
再删去修饰符后:
A1:=3*SMA((C-LLV(L,55))/(HHV(H,55)-LLV(L,55))*100,5,1)-2*SMA((C-LLV(L,55))/(HHV(H,55)-LLV(L,55))*100,5,1);
黑马线:=EMA(A1,5);
A4:=((C-LLV(L,21))/(HHV(H,21)-LLV(L,21)))*100;
趋势线:=(MA(3*SMA(A4,6,1)-2*SMA(SMA(A4,5,1),5,1),2));
大黑马:CROSS(趋势线,0)AND 黑马线<40;
这个公式可看作简单加工。
如果要三天内曾出现过“机会来临”,而今天是“黑马”,就是一个再加工的了。有兴趣的可编一个,效果会不错的。如图:
三、选股公式的运用
(一)直接加入《条件选股》分类中。
左键单击条件选股,出现下拉菜单,右键单击任一公式组,出现对话框,点击新建公式,出现公式编辑器,按提示操作。
(二)加入到交易系统分类里。加入过程与上一项完全一样。区别是,最后一句,也就是结果要放到ENTERLONG:(多头买入)后。使用的方式是双击公式,信号会以红箭头的形态出现在主图中,可用于预警。
条件选股中的信号也可按着这一方法操作。信号也会出现在主图中。
(三)无需建立新组,在指标公式分类中随时使用。好处:省去了单独建立公式的过程;缺点:随着公式的增多或者每个公式中有较多的信号,不便于查找。
请看下面这个公式,共有七个信号提示,分别是“天堂”、“熊短牛长”、“全仓买”、“IF”、“加仓”、“买入”和“出货”。假如我们认为“全仓买”这个信号效果较好,选择该项即可,如果需要的是IF之类的信号,则需要事先查出该信号是第几条线,然后方可操作。
AA:=CROSS(MA(C,5),MA(C,20))AND CROSS(MA(C,5),MA(C,30))AND CROSS(MA(C,5),MA(C,60));
BB:=MA(C,60)>MA(C,10)AND CROSS(MA(C,10),MA(C,30))AND MA(C,30)>MA(C,20)AND ABS(MA(C,60)-MA(C,20))/MA(C,20)<0.05;
CC:=MA(C,30)>MA(C,5)AND CROSS(MA(C,5),MA(C,20))AND MA(C,20)>MA(C,10);
DD:=ABS((MA(C,5)-MA(C,10))+(MA(C,10)-MA(C,20))+(MA(C,20)-MA(C,30)))<0.02 AND MA(C,5)>REF(MA(C,5),1)AND
MA(C,10)>REF(MA(C,10),1);
EE:=MA(C,20)>MA(C,5)AND CROSS(MA(C,5),MA(C,10))AND
MA(C,10)>MA(C,60)AND ABS(MA(C,20)-MA(C,60))/MA(C,60)<0.05;
FF:=AA OR BB OR CC OR DD OR EE;
天堂:FF AND FILTER(FF,8);
AA1:=AMOUNT/V;BB1:=L<AA1*0.9;
CC1:=(C-REF(C,1))/REF(C,1)*100>1.2;
DD1:=L<MA(C,5)*0.921;EE1:=V<MA(V,5)*1.5;
熊短牛长:BB1 AND CC1 AND DD1 AND EE1;
上线:=sma(c,6.5,1);
下线:=sma(c,13.5,1);
上线1:=sma(c,3,1);
下线1:=sma(c,8,1);
全仓买:cross(上线,下线);
D:=MA(CLOSE,80)-MA(CLOSE,10)/3;
if(CLOSE<D and VOL/240>MA(VOL,5)/240 AND CLOSE>REF(CLOSE,1)*1.08
AND CLOSE<MA(CLOSE,13)*1.3,1,0);
能量线:=DMA(((CLOSE + OPEN) / 2),(VOL / (SMA(VOL,4,1) *4)));
x1:=(3*C+H+L+O)/6;
x2:=EMA(x1,10);
x3:=REF(x2,1);
x4:=(REF(HIGH,1)+REF(LOW,1))/2;
x5:=MA(CLOSE,21)+2*STD(CLOSE,21);
x6:=REF(CLOSE,1);
x7:=SMA(MAX(CLOSE-x6,0),7,1)/SMA(ABS(CLOSE-x6),7,1)*100;
x8:=CROSS(79,x7);
x9:=FILTER(x8,4);
XL11:=EMA(CLOSE,10)/100;
XL2:= MA((XL11-REF(XL11,10))/REF(XL11,10),3)*100;
XL3:= MA(XL2,3);
XL4:=SMA((CLOSE-LLV(LOW,9))/(HHV(HIGH,9)-LLV(LOW,9))*100,3,1);
加仓:CROSS(2*(EMA((CLOSE*2+HIGH+LOW)/4,12)-EMA((CLOSE*2+HIGH+LOW)/4,26)-EMA(EMA((CLOSE*2+HIGH+LOW)/4,12)-EMA((CLOSE*2+HIGH+LOW)/4,26),2))*5.8,0.47) and x2>x3;
A:=(HIGH+LOW+OPEN+2*CLOSE)/5;
var2:=REF(A,1);
var3:=SMA(MAX(A-var2,0),10,1)/SMA(ABS(A-var2),10,1)*100;
买入:IF(COUNT(var3<20,5)>=1 AND COUNT(A=LLV(A,10),10)>=1 AND CLOSE>=OPEN*1.038 AND VOL>MA(VOL,5)*1.2,1,0);
AAA:=REF(CLOSE,1);
BBB:=((SMA(MAX((CLOSE - AAA),0),7,1) / SMA(ABS((CLOSE - AAA)),7,1)) * 100);
CCC:=CROSS(79,BBB);
出货:FILTER(CCC,4);
需要说明的是,利用指标公式直接选股,对于主图中文字、图标、柱线之类的信号提示都不适用,仅适用于副图中向上箭头类提示的信号。用于均线类选股时,若选择某条均线大于或小于多少参数,对主副图均适用。
结束语
本文不是教材,只是一个关于选股公式的简要介绍,希望对于初学者了解选股公式有所裨益。
[ 本帖最后由 大庆老杨 于 2009-6-4 05:56 编辑 ]