公式编写入门
来源:百度文库 编辑:神马文学网 时间:2024/04/29 02:15:37
《公式编写入门》第三讲:
总目录
第一讲:认识公式编辑器
第二讲:公式编写的基础函数
第三讲:认识颜色符号或绘图函数
第四讲:源码的引入和修改
第五讲:各种形态的描述
第六讲:均线(选股)的基本形态
第七讲:在源码中提取选股公式
第八讲:函数的综合运用
第九讲:常用函数示例
第十讲:系统常用指标原理解析
第一讲:认识公式编辑器(简略)
公式编辑器共分4种,分别是:1、技术指标公式编辑器;2、条件选股公式编辑器;3、交易系统公式编辑器;4、五彩K线公式编辑器。
这几种也都大同小异,通达信用的是第一种。
第二讲:公式编写的基础函数
一、K线函数
1、开盘价:OPEN 可简写为 O
2、最高价:HIGH 可简写为 H
3、最低价:LOW 可简写为 L
4、收盘价:CLOSE 可简写为 C
例:收盘价小于开盘价,即阴线:C 二、均线函数
最常见的三个均线:
1、MA(X,N),求X的N周期简单移动平均值。
算法:(X1+X2+X3+...+Xn)/N
例如:MA(CLOSE,20),表示求20日均价。
2、EMA(X,N),求X的N周期指数平滑移动平均。
算法: 若Y=EMA(X,N) 则Y=[2*X+(N-1)*Y']/(N+1), 其中Y'表示上一周期Y值。
例如:EMA(CLOSE,20),表示求20日指数平滑均价。
3、SMA(X,N,M),求X的N周期移动平均,M为权重。
算法: 若Y=SMA(X,N,M) 则 Y=(M*X+(N-M)*Y')/N, 其中Y'表示上一周期Y值,N必须大于M。
例如:SMA(CLOSE,20,1),表示求20日移动平均价。
这三个均线函数在股软中是通用的。要均线真实反映每天的价格变化,用MA,适当圆滑些就用EMA 或SMA。
三、常用连接函数
1、AND 就是“和”的意思。如:A AND B;就是A和B两个条件要同时成立。
2、OR “或”,“或者”的意思。如:A OR B;就是A和B两个条件有其中一个成立就行。
3、IF 根据条件取不同的值。如:IF(X,A,B),若X不为0则返回A,否则返回B。实例:IF(C 4、CROSS 交叉函数。CROSS(A,B),表示A从下方向上穿过B。
5、REF 向前引用。引用若干周期前的数据。例如:REF(CLOSE,1),表示昨收的收盘价。那么前天的最高价呢,就是:REF(H,2)。
四、成交量
VOL 表示每天的成交量。
第三讲:认识颜色符号或绘图函数
一、颜色函数
(一)基本符号:COLOR
举例:COLORBLACK;后面加上英文的黑色单词,在图中就会显示出黑色来了。
(二)常用颜色:
颜 色 1:飞狐的: 2、大智慧2 3、大智慧 4、通达信 5、同花顺 6、通用符号
红 色 COLORRED; 同前 同前 与飞狐基本相通 同 前
白 色 COLORWHITE; 同前 同前 一般不用修改 以下略--
黄 色 COLORYELLOW; 同前 同前 以下略--
黑 色 COLORBLACK; 同前
蓝 色 COLORBLUE; 同前 同前 COLORFFFF00
棕 色 COLORBROWN; 同前 COLOR0055FF
青 色(淡蓝)COLORCYAN; 同前 COLORFFFF00 COLORF0F000
灰 色 COLORGRAY; 同前 同前
绿 色 COLORGREEN; 同前 同前 COLOR00FF00
晶红色(粉)COLORMAGENTA; 同前 COLORff00ff COLORF00FF0
此外还有:金黄色COLOR008364 紫红COLOR000999 深黄色COLOR00CCCC 紫罗蓝COLORE66878 等等。
(三)常见颜色问题。
从上表中我们可以看出,大部分颜色符号是通用的。但在将源码粘贴时,因股软的不同,有时会出现《未定义的标识符》字样,很多时候就是颜色惹的祸。常见的是:
COLORCYAN 淡蓝色,大智慧不识别,需改成:COLORFF0000
COLORMAGENTA 晶红色,大智慧不识别,需改成:COLORF00FF0
特别提示:找不到相对应的颜色函数怎么办?一是删除,让系统自动填加。二是更换数字或字母。
实际上只要在COLOR后面加上0-9、A-F中的任意6个数字字母,就可组成不同的颜色。有兴趣的可试试。
(四)指标线粗细函数 LINETHICK 放在语句的后面,用 , 号隔开。例:LINETHICK2,后面的数值越大,线就越粗。
特别提示:LINETHICK0 表示不画出指标线,但可在顶部显示数值。
二、绘图函数
1、DRAWICON 在图形上绘制小图标。这是最常用的绘图函数之一。
用法:DRAWICON(条件,位置,图标)
飞狐15种图标编码为1-15(1-3为小脸,4-5为上下箭头,6-7为红绿小旗,8-9为三角形,10-12为信号灯,13-15为O、X、四方形)。
大智慧2的图标编码为14个。
其他股软略少。
这个函数通用。但同一数字编码,显示出的图形区别却非常大,形态也不一样。大家可通过变动数字编码自行调整。
2、DRAWTEXT 在图形上显示文字。这也是最常用的绘图函数之一。
用法:DRAWTEXT(条件,位置,文字),注意,文字必须用单引号 '' 引上才能输出。
飞狐可用'\n'换行, 飞狐和大智慧2可用 ALIGN 0-3 定义对齐方式。
3、STICKLINE 在图形上绘制柱线。
用法:STICKLINE(条件,上位置,下位置,宽度,实体或空心)。
此函数股软通用。宽度最大为10(一般K线的宽度为6)。 0 --画实心柱, 1 --画空心柱。
4、PARTLINE 分段绘制指标线。
飞狐用法:PARTLINE(条件,需要变色的线)。
例如:PARTLINE(C>REF(C,1),C),colorred 表示收盘大于前收以红色绘制收盘价连线。
大智慧2用法:PARTLINE(需要变色的线,条件1,条件1用的颜色,条件2,条件2用的颜色...),最多可以有10组条件。
例如:PARTLINE(C,C>O,RGB(255,0,0),C 特别提示:大智慧2同分析家一样,在绘制分段线时,用的不是正常的颜色函数,而是用RGB(255,0,0)来表达。以下是几种常用颜色:
洋红(255,0,255) 红色(255,0,0) 绿色(0,255,250) 黄色(255,255,0) 紫色(128,0,128)
灰色(169,169,169) 天蓝(255,215,0)。
同花顺和大智慧2一样,运用相同的函数。
通达信的划分段线是用IF条件函数来实现的。
例:IF(C>=O,A线,DRAWNULL),COLORRED,LINETHICK2;
翻译过来是:当收盘价大于等于开盘价时,在A线上划红色,否则不划。指标线为2等粗。
特别提示:DRAWNULL 是通达信的专用函数。意思是返回0。其他股软遇到此函数时,可直接用0替代。
大智慧没有这项功能。一般用如下三种方式替代:
第一种:用 DRAWTEXT 在图形上显示文字的方式。在文字栏用的文字是小圆圈。
第二种:用 STICKLINE 在图形上绘制柱线的方式。但注意柱线必须要短。
第三种:用 IF 条件函数的方式,适用于3条线以上。本文略去。
5、FILLRGN 画区间彩带
飞狐用法:FILLRGN(条件,线1,线2)
例如:FILLRGN(MA1>MA2, MA1,MA2),colorred 表示MA1>MA2时以红色填充MA1和MA2之间的区域。
大智慧2用法:FILLRGN(线1,线2,条件1,颜色1,条件2,颜色2...),填充条件1到条件2之间的区域,当条件1满足时,用颜色1,当条件2满足时,用颜色2,否则不填充,最多可以有
10组条件。
例如:FILLRGN(CLOSE,OPEN,CLOSE>OPEN,RGB(255,0,0),CLOSE 其他三种股软好像都没有这项功能。
为了实现这一效果,一般都是用划柱线的方式替代。注意的是,一般要将宽窄的数字加大,目的是让相邻的柱线合在一起显示出整体的效果。
例:STICKLINE(J
第四讲:源码的引入和修改
(一)在各种股软中的引入方法
一、大智慧
1. 把要导入的公式(源码)考下来,方法是用左键先把源码变蓝,之后点右键,点复制;
2. 进入大智慧------>特色功能------>自编指标------>常用------>技术指标------>新建,在出现的公式编辑区的下面的空白处,把刚考的源码粘贴上,将公式名称复制后粘
贴到公式名称栏------>确认------>退出。
3、在大智慧的底部显示栏中点击公式名称即可看到刚刚导入的公式。
二、飞狐
1、复制源码,方法同上。
2、进入主界面,即K线图模式。
用鼠标靠近左侧单击,出现管理面板------>双击技术指标------>用鼠标右键单击任何一个公式组的名称,比如“其它”------>点新建公式------>在出现的公式编辑区的下
面的空白处,把刚考的源码粘贴上,将公式名称复制后粘贴到公式名称栏------>确定------>退出。
3、找到新建的公式,双击即可使用。
三、大智慧2
特别提示:必须在联网的状态下才可操作
有两种方式可以进入公式编辑页面。一是将鼠标靠近上部,点击《公式》―――《公式管理》―――双击《技术指标》―――单击指标组―――《新建》。
另一种方式是,将鼠标靠近左边,在出现的对话框中双击《技术指标》―――右键单击选定的公式组―――《新建》。
三、分析家
复制公式原码到分析家界面―――点击上面的《公式》―――点击《公式管理》―――按公式归类把其点击变色―――点击《新建》。
四、通达信
打开“功能”菜单,指到“专家系统”,点击“公式管理器”(具体操作图示详见地板第4楼),点“新建”。
五、同花顺
将鼠标靠近上部―――点击《公式》图标,进入后的操作与其他股软基本一样。
特别提示:必须在《描述》栏中加上文字或字母之类,否则无法通过。
(二)公式引入时的注意事项和说明
一、参数问题
复制的源码中有参数的,例如:{N 1 100 15},有三种解决办法:
1、手工将参数分别填加到参数表中。
2、采取变通方式进行改动。{N 1 100 15}改动后为:N:=15;
特别提示:注意用参数的大小处于中间的值来替换。这个中间值也是缺省值。另外:N后面必须加上等号,它的意思是不显示。
3、对于INPUT:N(5), M(10,1,100,2);这类有申明参数函数的,飞狐,大智慧2和分析家可不用理它,系统会自动将参数填加到参数表中。这里的M(10,1,100,2)里面的2是步长
,手工填加时可删去。
二、粘贴源码时常见的问题和注意事项
1、未定义的标识符
多数是由参数引起的。还有就是有些源码中附带了公式名称或说明,这些公式源码以外的内容,如:名称,说明以及参数等等,凡在{ }以外的,均要删除,或者用{ }
将其括上。
2、条件选股类的公式,应加入到和“技术指标”并列的“条件选股”组中。
3、是主图公式的,需在公式编辑区中点“主图叠加”。
4、通达信的输出一般都限定在16条。多出的解决办法是:将没有必要输出的语句后面加上“等号”,或者删去。例:
Var2:MA(CLOSE,10);
Var3:MA(CLOSE,20);
Var4:MA(CLOSE,30);
加上后:
Var2:MA(CLOSE,10);
Var3:=MA(CLOSE,20);
Var4:MA(CLOSE,30);
意思是保留了10日均线和30日均线的输出,将20日的隐去。
特别提示:不论什么股软,当遇到线条过多过乱时,都可以采用这种办法使图形简练清晰。
5、颜色符号及逗号问题
例:仓:EMA(100*(CLOSE-LLV(LOW,34))/(HHV(HIGH,34)-LLV(LOW,34)),3),,colormagenta;
此句可能存在两个问题,一是后面有两个“逗号”,对于飞狐等通过,而对于大智慧2和分析家等,则是问题,必须删去一个。反之,一个没有也不行。二是后面的
colormagenta,大智慧是不认识的。换成通用的:colorf00ff0就行了。
6、是否输出与颜色标识问题
例:仓:=EMA(100*(CLOSE-LLV(LOW,34))/(HHV(HIGH,34)-LLV(LOW,34)),3),colormagenta,LINETHICK0;
这个语句的特点是在前面有等号“ = ”,意思是不输出,但后面还有颜色修饰符和指标线粗细函数。有些股软对此是放行的,即:不输出。而大智慧2和分析家却不认,把它
看成相互矛盾的病句。解决办法:将修饰符全部删去,或将前面的 = 号去掉,让语句输出。
第五讲:各种形态的描述
懂得运用公式编辑器,掌握了公式的基本函数,就可以进行简单的公式编写了。下面我们共同认识一下公式的基本语句。这些基本语句,是编写公式和整理选股公式信号的基
础,大家要熟知。
(一)K线的基本形态
1、当天收阳:CLOSE>OPEN;
2、当天收阴:CLOSE<OPEN;
3、当天股价高开,言下之意开盘高于昨日收盘:OPEN>REF(CLOSE,1);
4、当天股价低开:OPEN<REF(CLOSE,1);
5、跳空高开:OPEN>REF(HIGH,1);当日开盘在昨日最高价之上
6、跳空低开:POEN<REF(LOW,1);
7、长阳:C/O>1.03 或者 (C-O)/O*100>5 或者 (C-O)/O>0.05 意思是收盘价比开盘价上涨5%以上。当然,用7%以上也可。
8、长阴:C/O<0.94; 注意:同一语句可有多种表述,此为其一。
9、高开大阴:O/REF(C,1)>1.04 AND C/O<1.94; 今天开盘比昨天收盘高出4%和收盘价较开盘下降6%。低开大阳与此正好相反。
10、标准十字星:CLOSE=OPEN AND HIGH<>LOW
更多见的是近似十字星。例:ABS(C-O)<0.02 AND H-C>0.03 AND C-L>0.03; 该语句用上了一个函数:ABS,意思是求绝对值。这样,该近似十字星即可能是阳星也可能是阴星
。
再认识两个函数:MAX(A,B) 求A和B中的最大值。
MIN(A,B) 求A和B中的较小值
有了这两个函数,近似十字星还可这样表述:ABS(C-O)<0.02 AND H> MAX(C,O) AND L< MIN(C,O);
另外,该公式还可以用比例数编写。
11、长下影线:也有收阴收阳之分。以阳线长下影线为例:C>O AND (O-L)>(C-O);此公式只表达了下影线比实体线长,并没有表达长度比例和有无上影线。
形态还有许多,有几十种,不一一例举了,大家举一反三,慢慢摸索吧。
(二)条件选股的基本形态
1、阶段最高价:HHV(H,N) 意思是取得N天之内的最高价。新函数:HHV,最高值。
2、阶段最低价:LLV(L,N)意思是取得N天之内的最低价。新函数:LLV,最低值。
3、阶段涨幅 (C-REF(C,N))/REF(C,N)*100 N日收盘价的差值的百分比。
4、再创新高 HIGH=HHV(HIGH,N) 是指今日最高价是N日以来的最高价.。 再创新低:略。
5、放量:
(1)今日比昨日的成交量放大了1倍: VOL/REF(VOL,1)>2;
(2)今日的五日均量比前五天的五日均量放大了3倍:
AA:=MA(VOL,5);
BB:=REF(AA,5);
AA/BB>4;
(3)今天的成交量达到了整个流通盘的10%以上: VOL/CAPITAL>10/100;
注意,10%的表达式是10/100,或者0.1
6、缩量:
(1)今日比昨日的成交量缩小了1倍: VOL/REF(VOL,1)<0.5;
(2)今日的五日均量比前五天的五日均量缩小了一半:
AA:=MA(VOL,1)<0.5;
BB:=REF(AA,5);
AA/BB<0.5;
(3)今天的成交量不足整个流通盘的0.5%: VOL/CAPITAL<0.5/100;
7、放量上攻 是指价格上扬,成交量剧增
C/REF(C,5)>1.2 AND VOL>MA(VOL,5)*3; 表示5日上涨20%和成交量超过5日均量的3倍。
8、持续放量:COUNT(V>REF(V,1),N)=N; 实际上这种情况不是很多。如果用3日均量,或5日均量则非常普遍。即:COUNT(MA(V,3)>REF(MA(V,3),1),N)=N;
9、阶段放量
N(1,100,10) M(1,100,5)
SUM(VOL,N1)/CAPITAL>=(N/100) M日内换手率大于百分之N
10、温和放量上攻
M(2,10,3) N(1,40,10)
UP:=MAX(C,O)>REF(MAX(C,O),1);
A:=VOL>REF(VOL,1);
COUNT(IF((UP AND A),1,0),N)=N AND C>O
AND (C-REF(MAX(C,OPEN),1))/REF(MAX(O,C),1)<=(3/100)
AND VOL/CAPITAL<=(M/100)
连续N个周期放大并保持上涨势头 当日换手率小于 M%
11、突然放量
N(1,300,10)M(1,40,3)
VOL>REF(HHV(VOL,N),1)*M
成交量较前N周期的最大成交量增大M倍
12、上涨: C/REF(C,1)>1.07;今日涨幅达到了7%以上。
注意:涨幅是指当天收盘价与昨天的收盘价之比。
13、下跌: 同上面的表达方式一样,将方向改变了而已。
14、十日均价继续上涨:
AA:=MA(C,10);
BB:=REF(AA,1);
AA>BB;
15、窄幅整理:就是指近一段时期价格维持在一定幅度之内
(HHV(C,20)-LLV(C,20))/C<0.08 ;即20日内价格振幅在8%以内波动。
16、连续N天收阳:COUNT(C>O,N)=N;
特别提示:新函数:COUNT(X,N),统计满足条件的周期数。若N=0则从第一个有效值开始。
例:COUNT(C(C 17、N日内阳线多于阴线:COUNT(C>O,N)>N/2;
18、创历史新高:C=HHV(C,0);
特别提示:此公式本应为:C=HHV(C,N); 当N等于0时,从第一天开始统计。统计历史数据时,如果从头开始,都用0。
19、尾盘拉升
HOUR>14 AND MINUTE>56 AND CLOSE/REF(CLOSE,2) >= 1+N/100
14:56以后2分钟涨幅超过N%
20、突破长期盘整
N(10,60,30) M(5,50,30)
REF(((HHV(H,N)-LLV(L,N))/LLV(L,N)),1)<=(M/100)AND C>=REF(HHV(H,N),1) AND BARSCOUNT(C)>N
前N日在上下M%的幅度内整理,今日突破。
21、阶段强势股
N(700101,1341231,990519) M(700101,1341231,990913)
A:=SUM(IF(DATE-N=0,INDEXC,0),0);
B:=SUM(IF(DATE-M=0,INDEXC,0),0);
E:=SUM(IF(DATE-N=0,C,0),0);
F:=SUM(IF(DATE-M=0,C,0),0);
((F-E)/E)>((B-A)/A)
选择N日----M日之间内走势强于大盘的股票.
22、大盘同步选股
N(1,100,10)M(1,100,50)
COUNT((C>O AND INDEXC>INDEXO) OR (C< O AND INDEXC< INDEXO),N)/N > M/100
N周期中与大盘走势相同(同收阴线或同收阳线)的比例超过M%
23、今收盘对于N日内最低收盘价的涨幅(%)
(C-LLV(C,N))/LLV(C,N)*100;
24、今收盘对于N日内最高收盘价的跌幅(%)
(HHV(C,N)-C)/HHV(C,N)*100;
25、股价在过去N日内运行空间的相对位置
(C-LLV(L,N))/(HHV(H,N)-LLV(L,N))*100;
26、股价上方N1%至N2%处的筹码(%)
AA:=WINNER(C+C*N2/100)*100;
BB:=WINNER(C+C*N1/100)*100;
AA-BB
认识新函数:WINNER(CLOSE) 获利盘比例。表示以当前收市价卖出的获利盘比例,如返回0.2表示20%获利盘;例如:WINNER(10) 表示10元价格的获利盘比例。该函数仅对比较
日线分析周期有效。
27、股价下方N1%至N2%处的筹码(%)
(WINNER(C-C*N1/100)-WINNER(C-C*N2/100))*100;
28、收盘价N%处的套牢盘
100-(WINNER(C*N/100))*100;
29、收盘价N%处的获利盘
WINNER(C*N/100)*100;
(三)基本面选股举例
1、小盘选股
CAPITAL<=500000 AND FINANCE(33)>=0.01 AND CLOSE<=30
2、低市盈率选股
DYNAINFO(39)<=N AND DYNAINFO(39)>0
3、业绩选股
N(0,100,0.4)
FINANCE(33)>N 每股收益在0.4元以上
4、小盘股
N:=5000;
FINANCE(7)<=N
5、大盘股
N:=20000;
FINANCE(7)>=N
6、净资产收益率选股
FINANCE(37)>(N/100) 净资产收益率高于N的股票
7、每股净资产选股
FINANCE(34)>N 选出每股净资产大于N元的股票.
8、每股未分配利润选股
FINANCE(32)>N 每股未分配利润大于N的股票
9、市净率选股
C/FINANCE(34)< N
市净率=市价/每股净资产 市净率>N
市净率越低公司股价越有被低估的可能,这类股票从理论上讲具有更高的安全性.
10、换手率选股
DYNAINFO(37)>=N/100 单日换手率大于N的股票
换手率的计算公式或表达式:VOL/CAPITAL*100; 因此也可写作:VOL/CAPITAL*100>=N/100
11、掁幅:(H-L)/REF(C,1)*100; 注意:是比的昨天收盘价。 第五讲:
第六讲:均线(选股)的基本形态
提示:K线的初步平均。(O+H+L+C*2)/5; 或 (H+L+C*2)/4;
一般认为:收盘价是最有说服力的和最有价值的,它是每天激烈争夺的最后妥协。但也有人认为:收盘价固然重要,其他价格也是争夺的产物。所以将全天的几种价格因素都考虑进去更能反映每天的真实情况。
1、最简单的指标线
(1)均价线 就是 移动平均线MA,“MA”表示的就是计算平均值。
MA1=MA(CLOSE,5);5日平均线=(今天收盘价+昨天收盘价+.....--5天前的收盘价)/5;
MA2=MA(CLOSE,10);10日平均线=(今天收盘价+昨天收盘价+......+10天前的收盘价)/10;
(2)均量线 均价线会了,照着葫芦画瓢,把收盘价CLOSE换成成交量VOL就行了!
例:MA1:MA(VOL,5);
MA2:MA(VOL,10);
2、再次平均 指将已有的均线(多条均线)相加后进行再平均。
MA1=MA(CLOSE,5);
MA2=MA(CLOSE,10);
(MA1+MA2)/2;
3、N日均线向上 (本题反映均线波浪式延伸过程中某阶段的形态。)
AA:=MA(C,N);
BB:=REF(AA,1);
AA>BB
均线向下呢? AA< BB 就可以了。
N日均线走平怎么表述?AA=BB
4、均线由下跌状态刚刚转为上升
AA:=MA(C,N);
COUNT(AA AND AA>REF(AA,5);
5、年线拐头向上
A250:=MA(C,250);
REF(A250,1)REF(A250,1);
6、两条均线交叉
股软中专门设定了一条函数来描述两条线交叉:CROSS(X,Y) ,此函数通用。
假如两条均线一条名叫X,另外一条叫Y 且(X<Y)
CROSS(X,Y)表示X向上穿过了Y 通称:金叉
CROSS(Y,X)表示Y向上穿过了X 通称:死叉
特别提示:交叉有两种,一种是向上交叉,另一种是向下交叉。如果要求向上交叉时,X线必须比前一天高,所以需要加上 X>REF(X,1) 。完整的表达式为:CROSS(X,Y)AND X>REF(X,1)
加餐:
上述交叉是不限制周期的,有时我们会感到交叉特别频繁,如何取得他们较长时间交叉一次的数据呢,系统提供了另一个函数: LONGCROSS(X,Y,N) 两条线维持N周期后交叉。如果N等于15,则X Y两条线超过15天后交叉有效,否则不输出。
7、多次金叉(以常见的MACD指标为例)
(1)二次金叉
(COUNT(CROSS(DIF,DEA),20)=2 AND CROSS(DIF,DEA);
(2)二次死叉
COUNT(CROSS(DEA,DIF),20)=2 AND CROSS(DEA,DIF);
(3)0轴上二次金叉
COUNT(CROSS(DIF,DEA) AND DEA>0,20)=2 AND CROSS(DIF,DEA) AND
DEA>0;
(4)0轴上三次金叉
COUNT(CROSS(DIF,DEA) AND DEA>0,20)=3 AND CROSS(DIF,DEA) AND
DEA>0;
8、三线金叉
A5:=MA(C,5);
A10:=MA(C,10);
A30:=MA(C,30);
AA:=CROSS(A5,A10);
BB:=CROSS(A5,A30);
CC:=CROSS(A10,A30);
COUNT(AA,3)=1 AND COUNT(BB,3)=1 AND COUNT(CC,3)=1;
9、三线同时金叉
A5:=MA(C,5);
A10:=MA(C,10);
A20:=MA(C,20);
AA:=CROSS(C,A5);
BB:=CROSS(C,A10);
CC:=CROSS(C,A20);
AA AND BB AND CC;
10、均线多头排列
A1:=MA(C,N1);
A2:=MA(C,N2);
A3:=MA(C,N3);
A4:=MA(C,N4);
A1>A2 AND A2>A3 AND A3>A4;
11、均线空头排列3天以上
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;
12、向前N日至M日出现过均线死叉(P1< P2)
AA:=MA(C,P1);
BB:=MA(C,P2);
CC:=REF(CROSS(BB,AA),N);
COUNT(CC,M);
13、均线粘合
MA1:=MA(C,5);
MA2:=MA(C10);
MA3:=MA(C,20);
P1:=ABS(MA1-MA2)+ABS(MA2-MA3);
P1/C<1/100 AND MA1>REF(MA1,1) AND MA2>REF(MA2,1);
14、均线粘合(另种表达式)
MA1:=MA(C,5);
MA2:=MA(C,10);
MA3:=MA(C,30);
A:=MAX(MAX(MA1,MA2),MA3);
B:=MIN(MIN(MA1,MA2),MA3);
COUNT(ABS(A-B)/B<0.01,3)=3;表示已粘合3天(含3天)以上
15、多条均线粘合 如5、10、20、30、120、250日移动平均线粘合
aa:=(ma(c,5)+ma(c,10)+ma(c,20)+ma(c,30)+ma(c,120)+ma(c,250))/6;
up:=aa*n/100+aa;
down:=aa-aa*n/100;
count(BETWEEN(ma(c,5),up,down) and BETWEEN(ma(c,10),up,down) and BETWEEN(ma(c,20),up,down) and BETWEEN(ma(c,30),up,down)and BETWEEN(ma(c,120),up,down) and BETWEEN(ma(c,250),up,down),m)=m;
n(2,1,500) m(10,1,100) 调整参数n为粘合程度,n值越小粘合的程度越高,即均线距离越近;m为粘合周期。
16、乖离均线
BIAS1:(CLOSE-MA(CLOSE,N))/MA(CLOSE,N)*100;
当日股价与N日均线的乖离率=(当日股价-N日均价)/N日均价*100;
特别提示:乖离均线是由乖离率的“点”连成的均线。 此线虽非普通均线,因常用,故单提出来。
原理:以当日的均线价格为准,股价和均价之间的差距称为乖离程度,以乖离程度除以均价的百分比就是乖离率。
第七讲从源码中提取选股公式
要点:从后往前找,删除没用条,去掉修饰符,个别加等号。
例一:找出买点
VAR1:=(((HHV(HIGH,36) - CLOSE) / (HHV(HIGH,36) - LLV(LOW,36))) * 100);
VAR2:=SMA(VAR1,5,1);
VAR3:=SMA(VAR2,8,1);
H1:EMA(CLOSE,8),LINETHICK1;
H2:EMA(H1,20),LINETHICK1;
VAR4:=(CROSS(VAR2,VAR3) AND (VAR3 < 20));
VAR5:=((CLOSE > (LLV(CLOSE,60) + (0.3 * LLV(CLOSE,60)))) AND VAR4);
VAR6:=IF((CLOSE > 1000),VAR4,VAR5);
M1:EMA(CLOSE,60);
M2:EMA(CLOSE,89);
M3:EMA(CLOSE,233),LINETHICK1;
M4:EMA(CLOSE,583),LINETHICK1;
STICKLINE((H1 > H2),H1,H2,1,0.8);
STICKLINE((H1 < H2),H1,H2,1,0.8);
DRAWTEXT((CROSS(H1,H2) AND (CLOSE < EMA(CLOSE,60))),(LOW * 0.92),'买');
DRAWTEXT(VAR6,(HIGH * 1.08),'卖');
分解说明:
VAR1:=(((HHV(HIGH,36) - CLOSE) / (HHV(HIGH,36) - LLV(LOW,36))) * 100);
VAR2:=SMA(VAR1,5,1);
VAR3:=SMA(VAR2,8,1);
H1:EMA(CLOSE,8),LINETHICK1;
H2:EMA(H1,20),LINETHICK1;
VAR4:=(CROSS(VAR2,VAR3) AND (VAR3 < 20));
VAR5:=((CLOSE > (LLV(CLOSE,60) + (0.3 * LLV(CLOSE,60)))) AND VAR4);
VAR6:=IF((CLOSE > 1000),VAR4,VAR5);
M1:EMA(CLOSE,60);
M2:EMA(CLOSE,89);
M3:EMA(CLOSE,233),LINETHICK1;
M4:EMA(CLOSE,583),LINETHICK1;
STICKLINE((H1 > H2),H1,H2,1,0.8);
STICKLINE((H1 < H2),H1,H2,1,0.8);
第一步{从后往前找}找到下面这行“买”的输出语句。然后看这条语句的基本条件。
DRAWTEXT((CROSS(H1,H2) AND (CLOSE < EMA(CLOSE,60))),(LOW * 0.92),'买');
查看结果:输出文字 交叉 条件,条件 直 接 输 出 语 句 输出位置 文字
DRAWTEXT(VAR6,(HIGH * 1.08),'卖');
知道“基本条件”为 H1,H2,那么与此没有任何关系的语句从后往前删除。删的办法有两种:一是直接删掉;二是先用{}括上,待没问题时再一次性删除。加蓝色的为找到的不
输出语句。
第二步{删除没用条}后,剩下的有用语句:
H1:EMA(CLOSE,8),LINETHICK1; {加蓝的为修饰类函数,原则一律删除。}
H2:EMA(H1,20),LINETHICK1;
DRAWTEXT((CROSS(H1,H2) AND (CLOSE < EMA(CLOSE,60))),(LOW * 0.92),'买');
第三步{去掉修饰符} 分别去掉:指标线粗细、显示文字、文字位置函数和文字
H1:EMA(CLOSE,8);
H2:EMA(H1,20);
CROSS(H1,H2) AND CLOSE < EMA(CLOSE,60);
第四步{个别加等号} 条件选股只能输出一条语句,上面这三行为全部输出,所以,作为“条件”的前两行还必须在冒号后面加上等号,表达不输出。结果:
H1:=EMA(CLOSE,8);
H2:=EMA(H1,20);
CROSS(H1,H2) AND CLOSE < EMA(CLOSE,60);
例二、找出笑脸和买入信号
以本人发过的《跟庄建仓》为例。
A01:=DYNAINFO(7);
A03:=BARSCOUNT(CLOSE);
A04:=(SMA((CLOSE / HHV(HIGH,120)),3,1) * 100);
A05:=IF((A03 > 20),A04,0);
A06:=IF((LOW > A01),0,IF((HIGH < A01),1,(((A01 - LOW) + 0.009) / ((HIGH - LOW) + 0.009))));
A07:=DMA(A06,(VOL / CAPITAL)) * 60;
A09:=IF((((A07 > 0) AND (A07 > REF(A07,1))) AND (A05 <= 88)),A07,0);
Var1:=3*SMA((CLOSE-LLV(LOW,27))/(HHV(HIGH,27)-LLV(LOW,27))*100,5,1)-2*SMA(SMA((CLOSE-LLV(LOW,27))/(HHV(HIGH,27)-LLV(LOW,27))*100,5,1),3,1);
Var2:=EMA(Var1,8);
Var3:=3*SMA((C-LLV(L,55))/(HHV(H,55)-LLV(L,55))*100,5,1)-2*SMA(SMA((C-LLV(L,55))/(HHV(H,55)-LLV(L,55))*100,5,1),3,1);
趋势:=EMA(Var3,3)-10;
FILLRGN(趋势>80,趋势,80);
DRAWICON(CROSS(趋势,0),0,1);
FILLRGN((A09 > 0 AND (趋势<20 OR 趋势>REF(趋势,1)AND 趋势<50)),0,A09),colorFFFF00;
机构建仓区:0,LINETHICK0,colorFFFF00;
Var4:=(趋势-REF(趋势,1))/REF(趋势,1)*100;
STICKLINE(趋势<=13,0,20,5,0),colorcc9900;
DRAWTEXT(FILTER(趋势<=13,15),30,'准备现金'),colorcc9900;
STICKLINE(趋势<=13 AND Var4>13,0,50,5,0),color0099ff;
Var5:=FILTER((趋势<=13 AND Var4>13),10);
DRAWTEXT(Var5,60,'买入'),color0099ff;
STICKLINE(趋势>=90 AND Var4,0,30,5,0),colorgray;
Var6:=FILTER(趋势>=90,10);
DRAWTEXT(Var6,40,'清仓'),colorgray;
Var7:=LLV(LOW,30);
Var8:=HHV(HIGH,30);
Var9:=EMA((CLOSE-Var7)/(Var8-Var7)*4,4)*25;
STICKLINE(Var9>90,100,105,10,2),COLORRED;
STICKLINE(CROSS(Var4,-40),10,55,6,0),COLORRED;
Var10:=(Var9-LLV(Var9,4))/(HHV(Var9,4)-LLV(Var9,4))*100;
DRAWTEXT(IF(CROSS(Var9,Var10) AND Var9>87,95,0),88,'险'),Color00FF00,ALIGN1;
DRAWICON(CROSS(90,Var9),95,9);
Var11:=SMA(ABS(L-REF(L,1)),3,1)/SMA(MAX(L-REF(L,1),0),3,1)*100;
Var12:=HHV(Var11,30)*8;
火焰山:EMA(IF(LOW<=Var7 AND 趋势<40,(Var11+Var12),0),3)/618,COLORRED,linethick2;
STICKLINE(火焰山>0,0 ,火焰山*1.2,8,0 ),COLORRED;
Var13:=(MA(C,1)+MA(C,3)+MA(C,5)+MA(C,7)+MA(C,9))/5;
Var14:=(MA(C,2)+MA(C,4)+MA(C,6)+MA(C,8)+MA(C,10))/5;
趋势线: 趋势,colorff0000;
Var16:=MAX(EMA(Var13,2)-EMA(Var14,5),0)*200;
Var17:=EMA(Var16,5);
波浪峰:Var17,stick,colorff00ff;
STICKLINE(Var17Var18:=MA(趋势线,8);
if(CROSS(Var2,Var18) AND Var2<15,50,0),COLORRED;
DRAWTEXT(CROSS(趋势线,Var2)AND 趋势线>REF(趋势线,1)AND 趋势线<50,50,'追涨'),COLORFF0000;
分析:这个公式输出语句非常多,但多数都是用于趋势判断的。所以不用管它。仍按我们既定的思路进行。
第一步{从后往前找},先删除发出信号关键语句之后的(红色为输出语句,它以下的语句已经删去,蓝色为等待下步删除的)
A01:=DYNAINFO(7);
A03:=BARSCOUNT(CLOSE);
A04:=(SMA((CLOSE / HHV(HIGH,120)),3,1) * 100);
A05:=IF((A03 > 20),A04,0);
A06:=IF((LOW > A01),0,IF((HIGH < A01),1,(((A01 - LOW) + 0.009) / ((HIGH - LOW) + 0.009))));
A07:=DMA(A06,(VOL / CAPITAL)) * 60;
A09:=IF((((A07 > 0) AND (A07 > REF(A07,1))) AND (A05 <= 88)),A07,0);
Var1:=3*SMA((CLOSE-LLV(LOW,27))/(HHV(HIGH,27)-LLV(LOW,27))*100,5,1)-2*SMA(SMA((CLOSE-LLV(LOW,27))/(HHV(HIGH,27)-LLV(LOW,27))*100,5,1),3,1);
Var2:=EMA(Var1,8);
Var3:=3*SMA((C-LLV(L,55))/(HHV(H,55)-LLV(L,55))*100,5,1)-2*SMA(SMA((C-LLV(L,55))/(HHV(H,55)-LLV(L,55))*100,5,1),3,1);
趋势:=EMA(Var3,3)-10;
FILLRGN(趋势>80,趋势,80);
DRAWICON(CROSS(趋势,0),0,1);
FILLRGN((A09 > 0 AND (趋势<20 OR 趋势>REF(趋势,1)AND 趋势<50)),0,A09),colorFFFF00;
机构建仓区:0,LINETHICK0,colorFFFF00;
Var4:=(趋势-REF(趋势,1))/REF(趋势,1)*100;
STICKLINE(趋势<=13,0,20,5,0),colorcc9900;
DRAWTEXT(FILTER(趋势<=13,15),30,'准备现金'),colorcc9900;
STICKLINE(趋势<=13 AND Var4>13,0,50,5,0),color0099ff;
Var5:=FILTER((趋势<=13 AND Var4>13),10);
DRAWTEXT(Var5,60,'买入'),color0099ff;
第二步{删除没用条}后
Var3:=3*SMA((C-LLV(L,55))/(HHV(H,55)-LLV(L,55))*100,5,1)-2*SMA(SMA((C-LLV(L,55))/(HHV(H,55)-LLV(L,55))*100,5,1),3,1);
趋势:=EMA(Var3,3)-10;
DRAWICON(CROSS(趋势,0),0,1);
Var4:=(趋势-REF(趋势,1))/REF(趋势,1)*100;
Var5:=FILTER((趋势<=13 AND Var4>13),10);
DRAWTEXT(Var5,60,'买入'),color0099ff;
第三步{去掉修饰符后}:
趋势:=EMA(Var3,3)-10;
CROSS(趋势,0);
Var4:=(趋势-REF(趋势,1))/REF(趋势,1)*100;
Var5:=FILTER((趋势<=13 AND Var4>13),10);
Var5;
第四步{个别加等号}本公式中的“条件”语句都是不输出的,所以此项省略,但因是要笑脸和买入两个信号,所以还必须把它们连结起来:
Var3:=3*SMA((C-LLV(L,55))/(HHV(H,55)-LLV(L,55))*100,5,1)-2*SMA(SMA((C-LLV(L,55))/(HHV(H,55)-LLV(L,55))*100,5,1),3,1);
趋势:=EMA(Var3,3)-10;
Var4:=(趋势-REF(趋势,1))/REF(趋势,1)*100;
Var5:=FILTER((趋势<=13 AND Var4>13),10);
CROSS(趋势,0)or Var5;
第八讲 函数的综合运用
第一部分:引用已有公式中的数据
基本引用例一
"macd. diff", "macd.dea";
基本格式: 指标名称 语句名称 (注意:必须用双引号引上)
加入参数例二
"kdj. k" (9,3,3) ;
基本格式:指标名称 语句名称 参数 (指标名称和语句名称之间用隔点.隔开)
加入参数例三
周m:"macd. diff #WEEK";
引用周线:指标名称 语句名称 周函数 (注意:周函数前加#字号)
月K:"kdj.k#MONTH";
引用月线同上,只是换成月函数。
-
应用实例:主图 顶底背离
A1:=BARSLAST(ref(cross("macd.diff"(12,26,9),"macd.dea"(12,26,9)),1));
B1:=ref(c,A1+1)>c and ref("macd.diff"(12,26,9),A1+1)<"macd.diff"(12,26,9) and cross("macd.diff"(12,26,9),"macd.dea"(12,26,9));
MACD底背离:STICKLINE(FILTER(B1>0,5),0,0.75,3,0),COLOR00FF00;
DRAWTEXT(FILTER(B1>0,5),0.57,'MACD底背离'),COLOR00FF00;
A2:=BARSLAST(ref(cross("kdj.k"(9,3,3),"kdj.d"(9,3,3)),1));
B2:=ref(c,A2+1)>c and ref("kdj.k"(9,3,3),A2+1)<"kdj.k"(9,3,3) and cross("kdj.k"(9,3,3),"kdj.d"(9,3,3));
KDJ底背离:STICKLINE(FILTER(B2>0,5),0,1,3,0),COLORYELLOW;
DRAWTEXT(FILTER(B2>0,5),0.80,'KDJ底背离'),COLORYELLOW;
A3:=BARSLAST(ref(cross("RSI.RSI1"(6,12,24),"RSI.RSI2"(6,12,24)),1));
B3:=ref(c,A3+1)>c and ref("RSI.RSI1"(6,12,24),A3+1)<"RSI.RSI1"(6,12,24) and cross("RSI.RSI1"(6,12,24),"RSI.RSI2"(6,12,24));
RSI底背离:STICKLINE(FILTER(B3>0,5),0,0.5,3,0),COLORFFCC66;
DRAWTEXT(FILTER(B3>0,5),0.25,'RSI底背离'),COLORFFCC66;
DRAWTEXT(FILTER(D1>0,5),1.47,'MACD顶背离'),COLOR0066FF;
C2:=BARSLAST(ref(cross("kdj.d"(9,3,3),"kdj.k"(9,3,3)),1));
D2:=ref(c,C2+1)"kdj.k"(9,3,3) and cross("kdj.d"(9,3,3),"kdj.k"(9,3,3));
KDJ顶背离:STICKLINE(FILTER(D2>0,5),2,1,3,0),COLORRED;
DRAWTEXT(FILTER(D2>0,5),1.2,'KDJ顶背离'),COLORRED;
C3:=BARSLAST(ref(cross("RSI.RSI2"(6,12,24),"RSI.RSI1"(6,12,24)),1));
D3:=ref(c,C3+1)"RSI.RSI1"(6,12,24) and cross("RSI.RSI2"(6,12,24),"RSI.RSI1"(6,12,24));
RSI顶背离:STICKLINE(FILTER(D3>0,5),2,1.5,3,0),COLORFF00FF;
DRAWTEXT(FILTER(D3>0,5),1.75,'RSI顶背离'),COLORFF00FF;
第二部分 逐步增加函数
以均线为例,主图:
基本句型
MA5:MA(C,5);
MA10:MA(C,10);
MA30:MA(C,30);
MA60:MA(C,60);
增加颜色(注:在没有颜色输出符号时,系统会自动加上颜色)
MA5:MA(C,5),COLORBLUE;
MA10:MA(C,10),COLORF00FF0;
MA30:MA(C,30),COLORFFFF00;
MA60:MA(C,60),COLORYELLOW;
将10日均线变成小圆圈线
MA5:MA(C,5),COLORBLUE;
MA10:MA(C,10),COLORF00FF0,CIRCLEDOT;
MA30:MA(C,30),COLORFFFF00;
MA60:MA(C,60),COLORYELLOW;
将60日均线加粗
MA5:MA(C,5),COLORBLUE;
MA10:MA(C,10),COLORF00FF0,CIRCLEDOT;
MA30:MA(C,30),COLORFFFF00;
MA60:MA(C,60),COLORYELLOW,LINETHICK3;
在5日均线金叉10日均线处显示符号
MA5:MA(C,5),COLORBLUE;
MA10:MA(C,10),COLORF00FF0,CIRCLEDOT;
MA30:MA(C,30),COLORFFFF00;
MA60:MA(C,60),COLORYELLOW,LINETHICK3;
金叉:=CROSS(MA5,MA10);
DRAWICON(金叉,L,1);
DRAWTEXT(金叉,L,'金叉');
STICKLINE(金叉,H,L,6,0); (注:这三种显示方式用其中一种就行)
30日均线向上时显示红色,否则为绿色
MA5:MA(C,5),COLORBLUE;
MA10:MA(C,10),COLORF00FF0,CIRCLEDOT;
MA30:MA(C,30),COLORFFFF00;
MA60:MA(C,60),COLORYELLOW,LINETHICK3;
金叉:=CROSS(MA5,MA10);
DRAWICON(金叉,L,1);
DRAWTEXT(金叉,L,'金叉');
STICKLINE(金叉,H,L,6,0);
PARTLINE(MA30>=REF(MA30,1),MA30),COLORRED;
PARTLINE(MA30(注:最后两行为划分段线,大智慧没有此项功能,大智慧2和分析家 同花顺用下面这行)
PARTLINE(MA30,MA30>=REF(MA30,1),RGB(255,0,0),MA30通达信用下面这两行:
IF(MA30>=REF(MA30,1),MA30,DRAWNULL),COLORRED;
IF(MA30
总目录
第一讲:认识公式编辑器
第二讲:公式编写的基础函数
第三讲:认识颜色符号或绘图函数
第四讲:源码的引入和修改
第五讲:各种形态的描述
第六讲:均线(选股)的基本形态
第七讲:在源码中提取选股公式
第八讲:函数的综合运用
第九讲:常用函数示例
第十讲:系统常用指标原理解析
第一讲:认识公式编辑器(简略)
公式编辑器共分4种,分别是:1、技术指标公式编辑器;2、条件选股公式编辑器;3、交易系统公式编辑器;4、五彩K线公式编辑器。
这几种也都大同小异,通达信用的是第一种。
第二讲:公式编写的基础函数
一、K线函数
1、开盘价:OPEN 可简写为 O
2、最高价:HIGH 可简写为 H
3、最低价:LOW 可简写为 L
4、收盘价:CLOSE 可简写为 C
例:收盘价小于开盘价,即阴线:C
最常见的三个均线:
1、MA(X,N),求X的N周期简单移动平均值。
算法:(X1+X2+X3+...+Xn)/N
例如:MA(CLOSE,20),表示求20日均价。
2、EMA(X,N),求X的N周期指数平滑移动平均。
算法: 若Y=EMA(X,N) 则Y=[2*X+(N-1)*Y']/(N+1), 其中Y'表示上一周期Y值。
例如:EMA(CLOSE,20),表示求20日指数平滑均价。
3、SMA(X,N,M),求X的N周期移动平均,M为权重。
算法: 若Y=SMA(X,N,M) 则 Y=(M*X+(N-M)*Y')/N, 其中Y'表示上一周期Y值,N必须大于M。
例如:SMA(CLOSE,20,1),表示求20日移动平均价。
这三个均线函数在股软中是通用的。要均线真实反映每天的价格变化,用MA,适当圆滑些就用EMA 或SMA。
三、常用连接函数
1、AND 就是“和”的意思。如:A AND B;就是A和B两个条件要同时成立。
2、OR “或”,“或者”的意思。如:A OR B;就是A和B两个条件有其中一个成立就行。
3、IF 根据条件取不同的值。如:IF(X,A,B),若X不为0则返回A,否则返回B。实例:IF(C
5、REF 向前引用。引用若干周期前的数据。例如:REF(CLOSE,1),表示昨收的收盘价。那么前天的最高价呢,就是:REF(H,2)。
四、成交量
VOL 表示每天的成交量。
一、颜色函数
(一)基本符号:COLOR
举例:COLORBLACK;后面加上英文的黑色单词,在图中就会显示出黑色来了。
(二)常用颜色:
颜 色 1:飞狐的: 2、大智慧2 3、大智慧 4、通达信 5、同花顺 6、通用符号
红 色 COLORRED; 同前 同前 与飞狐基本相通 同 前
白 色 COLORWHITE; 同前 同前 一般不用修改 以下略--
黄 色 COLORYELLOW; 同前 同前 以下略--
黑 色 COLORBLACK; 同前
蓝 色 COLORBLUE; 同前 同前 COLORFFFF00
棕 色 COLORBROWN; 同前 COLOR0055FF
青 色(淡蓝)COLORCYAN; 同前 COLORFFFF00 COLORF0F000
灰 色 COLORGRAY; 同前 同前
绿 色 COLORGREEN; 同前 同前 COLOR00FF00
晶红色(粉)COLORMAGENTA; 同前 COLORff00ff COLORF00FF0
此外还有:金黄色COLOR008364 紫红COLOR000999 深黄色COLOR00CCCC 紫罗蓝COLORE66878 等等。
(三)常见颜色问题。
从上表中我们可以看出,大部分颜色符号是通用的。但在将源码粘贴时,因股软的不同,有时会出现《未定义的标识符》字样,很多时候就是颜色惹的祸。常见的是:
COLORCYAN 淡蓝色,大智慧不识别,需改成:COLORFF0000
COLORMAGENTA 晶红色,大智慧不识别,需改成:COLORF00FF0
特别提示:找不到相对应的颜色函数怎么办?一是删除,让系统自动填加。二是更换数字或字母。
实际上只要在COLOR后面加上0-9、A-F中的任意6个数字字母,就可组成不同的颜色。有兴趣的可试试。
(四)指标线粗细函数 LINETHICK 放在语句的后面,用 , 号隔开。例:LINETHICK2,后面的数值越大,线就越粗。
特别提示:LINETHICK0 表示不画出指标线,但可在顶部显示数值。
二、绘图函数
1、DRAWICON 在图形上绘制小图标。这是最常用的绘图函数之一。
用法:DRAWICON(条件,位置,图标)
飞狐15种图标编码为1-15(1-3为小脸,4-5为上下箭头,6-7为红绿小旗,8-9为三角形,10-12为信号灯,13-15为O、X、四方形)。
大智慧2的图标编码为14个。
其他股软略少。
这个函数通用。但同一数字编码,显示出的图形区别却非常大,形态也不一样。大家可通过变动数字编码自行调整。
2、DRAWTEXT 在图形上显示文字。这也是最常用的绘图函数之一。
用法:DRAWTEXT(条件,位置,文字),注意,文字必须用单引号 '' 引上才能输出。
飞狐可用'\n'换行, 飞狐和大智慧2可用 ALIGN 0-3 定义对齐方式。
3、STICKLINE 在图形上绘制柱线。
用法:STICKLINE(条件,上位置,下位置,宽度,实体或空心)。
此函数股软通用。宽度最大为10(一般K线的宽度为6)。 0 --画实心柱, 1 --画空心柱。
4、PARTLINE 分段绘制指标线。
飞狐用法:PARTLINE(条件,需要变色的线)。
例如:PARTLINE(C>REF(C,1),C),colorred 表示收盘大于前收以红色绘制收盘价连线。
大智慧2用法:PARTLINE(需要变色的线,条件1,条件1用的颜色,条件2,条件2用的颜色...),最多可以有10组条件。
例如:PARTLINE(C,C>O,RGB(255,0,0),C
洋红(255,0,255) 红色(255,0,0) 绿色(0,255,250) 黄色(255,255,0) 紫色(128,0,128)
灰色(169,169,169) 天蓝(255,215,0)。
同花顺和大智慧2一样,运用相同的函数。
通达信的划分段线是用IF条件函数来实现的。
例:IF(C>=O,A线,DRAWNULL),COLORRED,LINETHICK2;
翻译过来是:当收盘价大于等于开盘价时,在A线上划红色,否则不划。指标线为2等粗。
特别提示:DRAWNULL 是通达信的专用函数。意思是返回0。其他股软遇到此函数时,可直接用0替代。
大智慧没有这项功能。一般用如下三种方式替代:
第一种:用 DRAWTEXT 在图形上显示文字的方式。在文字栏用的文字是小圆圈。
第二种:用 STICKLINE 在图形上绘制柱线的方式。但注意柱线必须要短。
第三种:用 IF 条件函数的方式,适用于3条线以上。本文略去。
5、FILLRGN 画区间彩带
飞狐用法:FILLRGN(条件,线1,线2)
例如:FILLRGN(MA1>MA2, MA1,MA2),colorred 表示MA1>MA2时以红色填充MA1和MA2之间的区域。
大智慧2用法:FILLRGN(线1,线2,条件1,颜色1,条件2,颜色2...),填充条件1到条件2之间的区域,当条件1满足时,用颜色1,当条件2满足时,用颜色2,否则不填充,最多可以有
10组条件。
例如:FILLRGN(CLOSE,OPEN,CLOSE>OPEN,RGB(255,0,0),CLOSE
为了实现这一效果,一般都是用划柱线的方式替代。注意的是,一般要将宽窄的数字加大,目的是让相邻的柱线合在一起显示出整体的效果。
例:STICKLINE(J
(一)在各种股软中的引入方法
一、大智慧
1. 把要导入的公式(源码)考下来,方法是用左键先把源码变蓝,之后点右键,点复制;
2. 进入大智慧------>特色功能------>自编指标------>常用------>技术指标------>新建,在出现的公式编辑区的下面的空白处,把刚考的源码粘贴上,将公式名称复制后粘
贴到公式名称栏------>确认------>退出。
3、在大智慧的底部显示栏中点击公式名称即可看到刚刚导入的公式。
二、飞狐
1、复制源码,方法同上。
2、进入主界面,即K线图模式。
用鼠标靠近左侧单击,出现管理面板------>双击技术指标------>用鼠标右键单击任何一个公式组的名称,比如“其它”------>点新建公式------>在出现的公式编辑区的下
面的空白处,把刚考的源码粘贴上,将公式名称复制后粘贴到公式名称栏------>确定------>退出。
3、找到新建的公式,双击即可使用。
三、大智慧2
特别提示:必须在联网的状态下才可操作
有两种方式可以进入公式编辑页面。一是将鼠标靠近上部,点击《公式》―――《公式管理》―――双击《技术指标》―――单击指标组―――《新建》。
另一种方式是,将鼠标靠近左边,在出现的对话框中双击《技术指标》―――右键单击选定的公式组―――《新建》。
三、分析家
复制公式原码到分析家界面―――点击上面的《公式》―――点击《公式管理》―――按公式归类把其点击变色―――点击《新建》。
四、通达信
打开“功能”菜单,指到“专家系统”,点击“公式管理器”(具体操作图示详见地板第4楼),点“新建”。
五、同花顺
将鼠标靠近上部―――点击《公式》图标,进入后的操作与其他股软基本一样。
特别提示:必须在《描述》栏中加上文字或字母之类,否则无法通过。
(二)公式引入时的注意事项和说明
一、参数问题
复制的源码中有参数的,例如:{N 1 100 15},有三种解决办法:
1、手工将参数分别填加到参数表中。
2、采取变通方式进行改动。{N 1 100 15}改动后为:N:=15;
特别提示:注意用参数的大小处于中间的值来替换。这个中间值也是缺省值。另外:N后面必须加上等号,它的意思是不显示。
3、对于INPUT:N(5), M(10,1,100,2);这类有申明参数函数的,飞狐,大智慧2和分析家可不用理它,系统会自动将参数填加到参数表中。这里的M(10,1,100,2)里面的2是步长
,手工填加时可删去。
二、粘贴源码时常见的问题和注意事项
1、未定义的标识符
多数是由参数引起的。还有就是有些源码中附带了公式名称或说明,这些公式源码以外的内容,如:名称,说明以及参数等等,凡在{ }以外的,均要删除,或者用{ }
将其括上。
2、条件选股类的公式,应加入到和“技术指标”并列的“条件选股”组中。
3、是主图公式的,需在公式编辑区中点“主图叠加”。
4、通达信的输出一般都限定在16条。多出的解决办法是:将没有必要输出的语句后面加上“等号”,或者删去。例:
Var2:MA(CLOSE,10);
Var3:MA(CLOSE,20);
Var4:MA(CLOSE,30);
加上后:
Var2:MA(CLOSE,10);
Var3:=MA(CLOSE,20);
Var4:MA(CLOSE,30);
意思是保留了10日均线和30日均线的输出,将20日的隐去。
特别提示:不论什么股软,当遇到线条过多过乱时,都可以采用这种办法使图形简练清晰。
5、颜色符号及逗号问题
例:仓:EMA(100*(CLOSE-LLV(LOW,34))/(HHV(HIGH,34)-LLV(LOW,34)),3),,colormagenta;
此句可能存在两个问题,一是后面有两个“逗号”,对于飞狐等通过,而对于大智慧2和分析家等,则是问题,必须删去一个。反之,一个没有也不行。二是后面的
colormagenta,大智慧是不认识的。换成通用的:colorf00ff0就行了。
6、是否输出与颜色标识问题
例:仓:=EMA(100*(CLOSE-LLV(LOW,34))/(HHV(HIGH,34)-LLV(LOW,34)),3),colormagenta,LINETHICK0;
这个语句的特点是在前面有等号“ = ”,意思是不输出,但后面还有颜色修饰符和指标线粗细函数。有些股软对此是放行的,即:不输出。而大智慧2和分析家却不认,把它
看成相互矛盾的病句。解决办法:将修饰符全部删去,或将前面的 = 号去掉,让语句输出。
第五讲:各种形态的描述
懂得运用公式编辑器,掌握了公式的基本函数,就可以进行简单的公式编写了。下面我们共同认识一下公式的基本语句。这些基本语句,是编写公式和整理选股公式信号的基
础,大家要熟知。
(一)K线的基本形态
1、当天收阳:CLOSE>OPEN;
2、当天收阴:CLOSE<OPEN;
3、当天股价高开,言下之意开盘高于昨日收盘:OPEN>REF(CLOSE,1);
4、当天股价低开:OPEN<REF(CLOSE,1);
5、跳空高开:OPEN>REF(HIGH,1);当日开盘在昨日最高价之上
6、跳空低开:POEN<REF(LOW,1);
7、长阳:C/O>1.03 或者 (C-O)/O*100>5 或者 (C-O)/O>0.05 意思是收盘价比开盘价上涨5%以上。当然,用7%以上也可。
8、长阴:C/O<0.94; 注意:同一语句可有多种表述,此为其一。
9、高开大阴:O/REF(C,1)>1.04 AND C/O<1.94; 今天开盘比昨天收盘高出4%和收盘价较开盘下降6%。低开大阳与此正好相反。
10、标准十字星:CLOSE=OPEN AND HIGH<>LOW
更多见的是近似十字星。例:ABS(C-O)<0.02 AND H-C>0.03 AND C-L>0.03; 该语句用上了一个函数:ABS,意思是求绝对值。这样,该近似十字星即可能是阳星也可能是阴星
。
再认识两个函数:MAX(A,B) 求A和B中的最大值。
MIN(A,B) 求A和B中的较小值
有了这两个函数,近似十字星还可这样表述:ABS(C-O)<0.02 AND H> MAX(C,O) AND L< MIN(C,O);
另外,该公式还可以用比例数编写。
11、长下影线:也有收阴收阳之分。以阳线长下影线为例:C>O AND (O-L)>(C-O);此公式只表达了下影线比实体线长,并没有表达长度比例和有无上影线。
形态还有许多,有几十种,不一一例举了,大家举一反三,慢慢摸索吧。
(二)条件选股的基本形态
1、阶段最高价:HHV(H,N) 意思是取得N天之内的最高价。新函数:HHV,最高值。
2、阶段最低价:LLV(L,N)意思是取得N天之内的最低价。新函数:LLV,最低值。
3、阶段涨幅 (C-REF(C,N))/REF(C,N)*100 N日收盘价的差值的百分比。
4、再创新高 HIGH=HHV(HIGH,N) 是指今日最高价是N日以来的最高价.。 再创新低:略。
5、放量:
(1)今日比昨日的成交量放大了1倍: VOL/REF(VOL,1)>2;
(2)今日的五日均量比前五天的五日均量放大了3倍:
AA:=MA(VOL,5);
BB:=REF(AA,5);
AA/BB>4;
(3)今天的成交量达到了整个流通盘的10%以上: VOL/CAPITAL>10/100;
注意,10%的表达式是10/100,或者0.1
6、缩量:
(1)今日比昨日的成交量缩小了1倍: VOL/REF(VOL,1)<0.5;
(2)今日的五日均量比前五天的五日均量缩小了一半:
AA:=MA(VOL,1)<0.5;
BB:=REF(AA,5);
AA/BB<0.5;
(3)今天的成交量不足整个流通盘的0.5%: VOL/CAPITAL<0.5/100;
7、放量上攻 是指价格上扬,成交量剧增
C/REF(C,5)>1.2 AND VOL>MA(VOL,5)*3; 表示5日上涨20%和成交量超过5日均量的3倍。
8、持续放量:COUNT(V>REF(V,1),N)=N; 实际上这种情况不是很多。如果用3日均量,或5日均量则非常普遍。即:COUNT(MA(V,3)>REF(MA(V,3),1),N)=N;
9、阶段放量
N(1,100,10) M(1,100,5)
SUM(VOL,N1)/CAPITAL>=(N/100) M日内换手率大于百分之N
10、温和放量上攻
M(2,10,3) N(1,40,10)
UP:=MAX(C,O)>REF(MAX(C,O),1);
A:=VOL>REF(VOL,1);
COUNT(IF((UP AND A),1,0),N)=N AND C>O
AND (C-REF(MAX(C,OPEN),1))/REF(MAX(O,C),1)<=(3/100)
AND VOL/CAPITAL<=(M/100)
连续N个周期放大并保持上涨势头 当日换手率小于 M%
11、突然放量
N(1,300,10)M(1,40,3)
VOL>REF(HHV(VOL,N),1)*M
成交量较前N周期的最大成交量增大M倍
12、上涨: C/REF(C,1)>1.07;今日涨幅达到了7%以上。
注意:涨幅是指当天收盘价与昨天的收盘价之比。
13、下跌: 同上面的表达方式一样,将方向改变了而已。
14、十日均价继续上涨:
AA:=MA(C,10);
BB:=REF(AA,1);
AA>BB;
15、窄幅整理:就是指近一段时期价格维持在一定幅度之内
(HHV(C,20)-LLV(C,20))/C<0.08 ;即20日内价格振幅在8%以内波动。
16、连续N天收阳:COUNT(C>O,N)=N;
特别提示:新函数:COUNT(X,N),统计满足条件的周期数。若N=0则从第一个有效值开始。
例:COUNT(C
18、创历史新高:C=HHV(C,0);
特别提示:此公式本应为:C=HHV(C,N); 当N等于0时,从第一天开始统计。统计历史数据时,如果从头开始,都用0。
19、尾盘拉升
HOUR>14 AND MINUTE>56 AND CLOSE/REF(CLOSE,2) >= 1+N/100
14:56以后2分钟涨幅超过N%
20、突破长期盘整
N(10,60,30) M(5,50,30)
REF(((HHV(H,N)-LLV(L,N))/LLV(L,N)),1)<=(M/100)AND C>=REF(HHV(H,N),1) AND BARSCOUNT(C)>N
前N日在上下M%的幅度内整理,今日突破。
21、阶段强势股
N(700101,1341231,990519) M(700101,1341231,990913)
A:=SUM(IF(DATE-N=0,INDEXC,0),0);
B:=SUM(IF(DATE-M=0,INDEXC,0),0);
E:=SUM(IF(DATE-N=0,C,0),0);
F:=SUM(IF(DATE-M=0,C,0),0);
((F-E)/E)>((B-A)/A)
选择N日----M日之间内走势强于大盘的股票.
22、大盘同步选股
N(1,100,10)M(1,100,50)
COUNT((C>O AND INDEXC>INDEXO) OR (C< O AND INDEXC< INDEXO),N)/N > M/100
N周期中与大盘走势相同(同收阴线或同收阳线)的比例超过M%
23、今收盘对于N日内最低收盘价的涨幅(%)
(C-LLV(C,N))/LLV(C,N)*100;
24、今收盘对于N日内最高收盘价的跌幅(%)
(HHV(C,N)-C)/HHV(C,N)*100;
25、股价在过去N日内运行空间的相对位置
(C-LLV(L,N))/(HHV(H,N)-LLV(L,N))*100;
26、股价上方N1%至N2%处的筹码(%)
AA:=WINNER(C+C*N2/100)*100;
BB:=WINNER(C+C*N1/100)*100;
AA-BB
认识新函数:WINNER(CLOSE) 获利盘比例。表示以当前收市价卖出的获利盘比例,如返回0.2表示20%获利盘;例如:WINNER(10) 表示10元价格的获利盘比例。该函数仅对比较
日线分析周期有效。
27、股价下方N1%至N2%处的筹码(%)
(WINNER(C-C*N1/100)-WINNER(C-C*N2/100))*100;
28、收盘价N%处的套牢盘
100-(WINNER(C*N/100))*100;
29、收盘价N%处的获利盘
WINNER(C*N/100)*100;
(三)基本面选股举例
1、小盘选股
CAPITAL<=500000 AND FINANCE(33)>=0.01 AND CLOSE<=30
2、低市盈率选股
DYNAINFO(39)<=N AND DYNAINFO(39)>0
3、业绩选股
N(0,100,0.4)
FINANCE(33)>N 每股收益在0.4元以上
4、小盘股
N:=5000;
FINANCE(7)<=N
5、大盘股
N:=20000;
FINANCE(7)>=N
6、净资产收益率选股
FINANCE(37)>(N/100) 净资产收益率高于N的股票
7、每股净资产选股
FINANCE(34)>N 选出每股净资产大于N元的股票.
8、每股未分配利润选股
FINANCE(32)>N 每股未分配利润大于N的股票
9、市净率选股
C/FINANCE(34)< N
市净率=市价/每股净资产 市净率>N
市净率越低公司股价越有被低估的可能,这类股票从理论上讲具有更高的安全性.
10、换手率选股
DYNAINFO(37)>=N/100 单日换手率大于N的股票
换手率的计算公式或表达式:VOL/CAPITAL*100; 因此也可写作:VOL/CAPITAL*100>=N/100
11、掁幅:(H-L)/REF(C,1)*100; 注意:是比的昨天收盘价。 第五讲:
第六讲:均线(选股)的基本形态
提示:K线的初步平均。(O+H+L+C*2)/5; 或 (H+L+C*2)/4;
一般认为:收盘价是最有说服力的和最有价值的,它是每天激烈争夺的最后妥协。但也有人认为:收盘价固然重要,其他价格也是争夺的产物。所以将全天的几种价格因素都考虑进去更能反映每天的真实情况。
1、最简单的指标线
(1)均价线 就是 移动平均线MA,“MA”表示的就是计算平均值。
MA1=MA(CLOSE,5);5日平均线=(今天收盘价+昨天收盘价+.....--5天前的收盘价)/5;
MA2=MA(CLOSE,10);10日平均线=(今天收盘价+昨天收盘价+......+10天前的收盘价)/10;
(2)均量线 均价线会了,照着葫芦画瓢,把收盘价CLOSE换成成交量VOL就行了!
例:MA1:MA(VOL,5);
MA2:MA(VOL,10);
2、再次平均 指将已有的均线(多条均线)相加后进行再平均。
MA1=MA(CLOSE,5);
MA2=MA(CLOSE,10);
(MA1+MA2)/2;
3、N日均线向上 (本题反映均线波浪式延伸过程中某阶段的形态。)
AA:=MA(C,N);
BB:=REF(AA,1);
AA>BB
均线向下呢? AA< BB 就可以了。
N日均线走平怎么表述?AA=BB
4、均线由下跌状态刚刚转为上升
AA:=MA(C,N);
COUNT(AA AND AA>REF(AA,5);
5、年线拐头向上
A250:=MA(C,250);
REF(A250,1)REF(A250,1);
6、两条均线交叉
股软中专门设定了一条函数来描述两条线交叉:CROSS(X,Y) ,此函数通用。
假如两条均线一条名叫X,另外一条叫Y 且(X<Y)
CROSS(X,Y)表示X向上穿过了Y 通称:金叉
CROSS(Y,X)表示Y向上穿过了X 通称:死叉
特别提示:交叉有两种,一种是向上交叉,另一种是向下交叉。如果要求向上交叉时,X线必须比前一天高,所以需要加上 X>REF(X,1) 。完整的表达式为:CROSS(X,Y)AND X>REF(X,1)
加餐:
上述交叉是不限制周期的,有时我们会感到交叉特别频繁,如何取得他们较长时间交叉一次的数据呢,系统提供了另一个函数: LONGCROSS(X,Y,N) 两条线维持N周期后交叉。如果N等于15,则X Y两条线超过15天后交叉有效,否则不输出。
7、多次金叉(以常见的MACD指标为例)
(1)二次金叉
(COUNT(CROSS(DIF,DEA),20)=2 AND CROSS(DIF,DEA);
(2)二次死叉
COUNT(CROSS(DEA,DIF),20)=2 AND CROSS(DEA,DIF);
(3)0轴上二次金叉
COUNT(CROSS(DIF,DEA) AND DEA>0,20)=2 AND CROSS(DIF,DEA) AND
DEA>0;
(4)0轴上三次金叉
COUNT(CROSS(DIF,DEA) AND DEA>0,20)=3 AND CROSS(DIF,DEA) AND
DEA>0;
8、三线金叉
A5:=MA(C,5);
A10:=MA(C,10);
A30:=MA(C,30);
AA:=CROSS(A5,A10);
BB:=CROSS(A5,A30);
CC:=CROSS(A10,A30);
COUNT(AA,3)=1 AND COUNT(BB,3)=1 AND COUNT(CC,3)=1;
9、三线同时金叉
A5:=MA(C,5);
A10:=MA(C,10);
A20:=MA(C,20);
AA:=CROSS(C,A5);
BB:=CROSS(C,A10);
CC:=CROSS(C,A20);
AA AND BB AND CC;
10、均线多头排列
A1:=MA(C,N1);
A2:=MA(C,N2);
A3:=MA(C,N3);
A4:=MA(C,N4);
A1>A2 AND A2>A3 AND A3>A4;
11、均线空头排列3天以上
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;
12、向前N日至M日出现过均线死叉(P1< P2)
AA:=MA(C,P1);
BB:=MA(C,P2);
CC:=REF(CROSS(BB,AA),N);
COUNT(CC,M);
13、均线粘合
MA1:=MA(C,5);
MA2:=MA(C10);
MA3:=MA(C,20);
P1:=ABS(MA1-MA2)+ABS(MA2-MA3);
P1/C<1/100 AND MA1>REF(MA1,1) AND MA2>REF(MA2,1);
14、均线粘合(另种表达式)
MA1:=MA(C,5);
MA2:=MA(C,10);
MA3:=MA(C,30);
A:=MAX(MAX(MA1,MA2),MA3);
B:=MIN(MIN(MA1,MA2),MA3);
COUNT(ABS(A-B)/B<0.01,3)=3;表示已粘合3天(含3天)以上
15、多条均线粘合 如5、10、20、30、120、250日移动平均线粘合
aa:=(ma(c,5)+ma(c,10)+ma(c,20)+ma(c,30)+ma(c,120)+ma(c,250))/6;
up:=aa*n/100+aa;
down:=aa-aa*n/100;
count(BETWEEN(ma(c,5),up,down) and BETWEEN(ma(c,10),up,down) and BETWEEN(ma(c,20),up,down) and BETWEEN(ma(c,30),up,down)and BETWEEN(ma(c,120),up,down) and BETWEEN(ma(c,250),up,down),m)=m;
n(2,1,500) m(10,1,100) 调整参数n为粘合程度,n值越小粘合的程度越高,即均线距离越近;m为粘合周期。
16、乖离均线
BIAS1:(CLOSE-MA(CLOSE,N))/MA(CLOSE,N)*100;
当日股价与N日均线的乖离率=(当日股价-N日均价)/N日均价*100;
特别提示:乖离均线是由乖离率的“点”连成的均线。 此线虽非普通均线,因常用,故单提出来。
原理:以当日的均线价格为准,股价和均价之间的差距称为乖离程度,以乖离程度除以均价的百分比就是乖离率。
第七讲从源码中提取选股公式
要点:从后往前找,删除没用条,去掉修饰符,个别加等号。
例一:找出买点
VAR1:=(((HHV(HIGH,36) - CLOSE) / (HHV(HIGH,36) - LLV(LOW,36))) * 100);
VAR2:=SMA(VAR1,5,1);
VAR3:=SMA(VAR2,8,1);
H1:EMA(CLOSE,8),LINETHICK1;
H2:EMA(H1,20),LINETHICK1;
VAR4:=(CROSS(VAR2,VAR3) AND (VAR3 < 20));
VAR5:=((CLOSE > (LLV(CLOSE,60) + (0.3 * LLV(CLOSE,60)))) AND VAR4);
VAR6:=IF((CLOSE > 1000),VAR4,VAR5);
M1:EMA(CLOSE,60);
M2:EMA(CLOSE,89);
M3:EMA(CLOSE,233),LINETHICK1;
M4:EMA(CLOSE,583),LINETHICK1;
STICKLINE((H1 > H2),H1,H2,1,0.8);
STICKLINE((H1 < H2),H1,H2,1,0.8);
DRAWTEXT((CROSS(H1,H2) AND (CLOSE < EMA(CLOSE,60))),(LOW * 0.92),'买');
DRAWTEXT(VAR6,(HIGH * 1.08),'卖');
分解说明:
VAR1:=(((HHV(HIGH,36) - CLOSE) / (HHV(HIGH,36) - LLV(LOW,36))) * 100);
VAR2:=SMA(VAR1,5,1);
VAR3:=SMA(VAR2,8,1);
H1:EMA(CLOSE,8),LINETHICK1;
H2:EMA(H1,20),LINETHICK1;
VAR4:=(CROSS(VAR2,VAR3) AND (VAR3 < 20));
VAR5:=((CLOSE > (LLV(CLOSE,60) + (0.3 * LLV(CLOSE,60)))) AND VAR4);
VAR6:=IF((CLOSE > 1000),VAR4,VAR5);
M1:EMA(CLOSE,60);
M2:EMA(CLOSE,89);
M3:EMA(CLOSE,233),LINETHICK1;
M4:EMA(CLOSE,583),LINETHICK1;
STICKLINE((H1 > H2),H1,H2,1,0.8);
STICKLINE((H1 < H2),H1,H2,1,0.8);
第一步{从后往前找}找到下面这行“买”的输出语句。然后看这条语句的基本条件。
DRAWTEXT((CROSS(H1,H2) AND (CLOSE < EMA(CLOSE,60))),(LOW * 0.92),'买');
查看结果:输出文字 交叉 条件,条件 直 接 输 出 语 句 输出位置 文字
DRAWTEXT(VAR6,(HIGH * 1.08),'卖');
知道“基本条件”为 H1,H2,那么与此没有任何关系的语句从后往前删除。删的办法有两种:一是直接删掉;二是先用{}括上,待没问题时再一次性删除。加蓝色的为找到的不
输出语句。
第二步{删除没用条}后,剩下的有用语句:
H1:EMA(CLOSE,8),LINETHICK1; {加蓝的为修饰类函数,原则一律删除。}
H2:EMA(H1,20),LINETHICK1;
DRAWTEXT((CROSS(H1,H2) AND (CLOSE < EMA(CLOSE,60))),(LOW * 0.92),'买');
第三步{去掉修饰符} 分别去掉:指标线粗细、显示文字、文字位置函数和文字
H1:EMA(CLOSE,8);
H2:EMA(H1,20);
CROSS(H1,H2) AND CLOSE < EMA(CLOSE,60);
第四步{个别加等号} 条件选股只能输出一条语句,上面这三行为全部输出,所以,作为“条件”的前两行还必须在冒号后面加上等号,表达不输出。结果:
H1:=EMA(CLOSE,8);
H2:=EMA(H1,20);
CROSS(H1,H2) AND CLOSE < EMA(CLOSE,60);
例二、找出笑脸和买入信号
以本人发过的《跟庄建仓》为例。
A01:=DYNAINFO(7);
A03:=BARSCOUNT(CLOSE);
A04:=(SMA((CLOSE / HHV(HIGH,120)),3,1) * 100);
A05:=IF((A03 > 20),A04,0);
A06:=IF((LOW > A01),0,IF((HIGH < A01),1,(((A01 - LOW) + 0.009) / ((HIGH - LOW) + 0.009))));
A07:=DMA(A06,(VOL / CAPITAL)) * 60;
A09:=IF((((A07 > 0) AND (A07 > REF(A07,1))) AND (A05 <= 88)),A07,0);
Var1:=3*SMA((CLOSE-LLV(LOW,27))/(HHV(HIGH,27)-LLV(LOW,27))*100,5,1)-2*SMA(SMA((CLOSE-LLV(LOW,27))/(HHV(HIGH,27)-LLV(LOW,27))*100,5,1),3,1);
Var2:=EMA(Var1,8);
Var3:=3*SMA((C-LLV(L,55))/(HHV(H,55)-LLV(L,55))*100,5,1)-2*SMA(SMA((C-LLV(L,55))/(HHV(H,55)-LLV(L,55))*100,5,1),3,1);
趋势:=EMA(Var3,3)-10;
FILLRGN(趋势>80,趋势,80);
DRAWICON(CROSS(趋势,0),0,1);
FILLRGN((A09 > 0 AND (趋势<20 OR 趋势>REF(趋势,1)AND 趋势<50)),0,A09),colorFFFF00;
机构建仓区:0,LINETHICK0,colorFFFF00;
Var4:=(趋势-REF(趋势,1))/REF(趋势,1)*100;
STICKLINE(趋势<=13,0,20,5,0),colorcc9900;
DRAWTEXT(FILTER(趋势<=13,15),30,'准备现金'),colorcc9900;
STICKLINE(趋势<=13 AND Var4>13,0,50,5,0),color0099ff;
Var5:=FILTER((趋势<=13 AND Var4>13),10);
DRAWTEXT(Var5,60,'买入'),color0099ff;
STICKLINE(趋势>=90 AND Var4,0,30,5,0),colorgray;
Var6:=FILTER(趋势>=90,10);
DRAWTEXT(Var6,40,'清仓'),colorgray;
Var7:=LLV(LOW,30);
Var8:=HHV(HIGH,30);
Var9:=EMA((CLOSE-Var7)/(Var8-Var7)*4,4)*25;
STICKLINE(Var9>90,100,105,10,2),COLORRED;
STICKLINE(CROSS(Var4,-40),10,55,6,0),COLORRED;
Var10:=(Var9-LLV(Var9,4))/(HHV(Var9,4)-LLV(Var9,4))*100;
DRAWTEXT(IF(CROSS(Var9,Var10) AND Var9>87,95,0),88,'险'),Color00FF00,ALIGN1;
DRAWICON(CROSS(90,Var9),95,9);
Var11:=SMA(ABS(L-REF(L,1)),3,1)/SMA(MAX(L-REF(L,1),0),3,1)*100;
Var12:=HHV(Var11,30)*8;
火焰山:EMA(IF(LOW<=Var7 AND 趋势<40,(Var11+Var12),0),3)/618,COLORRED,linethick2;
STICKLINE(火焰山>0,0 ,火焰山*1.2,8,0 ),COLORRED;
Var13:=(MA(C,1)+MA(C,3)+MA(C,5)+MA(C,7)+MA(C,9))/5;
Var14:=(MA(C,2)+MA(C,4)+MA(C,6)+MA(C,8)+MA(C,10))/5;
趋势线: 趋势,colorff0000;
Var16:=MAX(EMA(Var13,2)-EMA(Var14,5),0)*200;
Var17:=EMA(Var16,5);
波浪峰:Var17,stick,colorff00ff;
STICKLINE(Var17Var18:=MA(趋势线,8);
if(CROSS(Var2,Var18) AND Var2<15,50,0),COLORRED;
DRAWTEXT(CROSS(趋势线,Var2)AND 趋势线>REF(趋势线,1)AND 趋势线<50,50,'追涨'),COLORFF0000;
分析:这个公式输出语句非常多,但多数都是用于趋势判断的。所以不用管它。仍按我们既定的思路进行。
第一步{从后往前找},先删除发出信号关键语句之后的(红色为输出语句,它以下的语句已经删去,蓝色为等待下步删除的)
A01:=DYNAINFO(7);
A03:=BARSCOUNT(CLOSE);
A04:=(SMA((CLOSE / HHV(HIGH,120)),3,1) * 100);
A05:=IF((A03 > 20),A04,0);
A06:=IF((LOW > A01),0,IF((HIGH < A01),1,(((A01 - LOW) + 0.009) / ((HIGH - LOW) + 0.009))));
A07:=DMA(A06,(VOL / CAPITAL)) * 60;
A09:=IF((((A07 > 0) AND (A07 > REF(A07,1))) AND (A05 <= 88)),A07,0);
Var1:=3*SMA((CLOSE-LLV(LOW,27))/(HHV(HIGH,27)-LLV(LOW,27))*100,5,1)-2*SMA(SMA((CLOSE-LLV(LOW,27))/(HHV(HIGH,27)-LLV(LOW,27))*100,5,1),3,1);
Var2:=EMA(Var1,8);
Var3:=3*SMA((C-LLV(L,55))/(HHV(H,55)-LLV(L,55))*100,5,1)-2*SMA(SMA((C-LLV(L,55))/(HHV(H,55)-LLV(L,55))*100,5,1),3,1);
趋势:=EMA(Var3,3)-10;
FILLRGN(趋势>80,趋势,80);
DRAWICON(CROSS(趋势,0),0,1);
FILLRGN((A09 > 0 AND (趋势<20 OR 趋势>REF(趋势,1)AND 趋势<50)),0,A09),colorFFFF00;
机构建仓区:0,LINETHICK0,colorFFFF00;
Var4:=(趋势-REF(趋势,1))/REF(趋势,1)*100;
STICKLINE(趋势<=13,0,20,5,0),colorcc9900;
DRAWTEXT(FILTER(趋势<=13,15),30,'准备现金'),colorcc9900;
STICKLINE(趋势<=13 AND Var4>13,0,50,5,0),color0099ff;
Var5:=FILTER((趋势<=13 AND Var4>13),10);
DRAWTEXT(Var5,60,'买入'),color0099ff;
第二步{删除没用条}后
Var3:=3*SMA((C-LLV(L,55))/(HHV(H,55)-LLV(L,55))*100,5,1)-2*SMA(SMA((C-LLV(L,55))/(HHV(H,55)-LLV(L,55))*100,5,1),3,1);
趋势:=EMA(Var3,3)-10;
DRAWICON(CROSS(趋势,0),0,1);
Var4:=(趋势-REF(趋势,1))/REF(趋势,1)*100;
Var5:=FILTER((趋势<=13 AND Var4>13),10);
DRAWTEXT(Var5,60,'买入'),color0099ff;
第三步{去掉修饰符后}:
趋势:=EMA(Var3,3)-10;
CROSS(趋势,0);
Var4:=(趋势-REF(趋势,1))/REF(趋势,1)*100;
Var5:=FILTER((趋势<=13 AND Var4>13),10);
Var5;
第四步{个别加等号}本公式中的“条件”语句都是不输出的,所以此项省略,但因是要笑脸和买入两个信号,所以还必须把它们连结起来:
Var3:=3*SMA((C-LLV(L,55))/(HHV(H,55)-LLV(L,55))*100,5,1)-2*SMA(SMA((C-LLV(L,55))/(HHV(H,55)-LLV(L,55))*100,5,1),3,1);
趋势:=EMA(Var3,3)-10;
Var4:=(趋势-REF(趋势,1))/REF(趋势,1)*100;
Var5:=FILTER((趋势<=13 AND Var4>13),10);
CROSS(趋势,0)or Var5;
第八讲 函数的综合运用
第一部分:引用已有公式中的数据
基本引用例一
"macd. diff", "macd.dea";
基本格式: 指标名称 语句名称 (注意:必须用双引号引上)
加入参数例二
"kdj. k" (9,3,3) ;
基本格式:指标名称 语句名称 参数 (指标名称和语句名称之间用隔点.隔开)
加入参数例三
周m:"macd. diff #WEEK";
引用周线:指标名称 语句名称 周函数 (注意:周函数前加#字号)
月K:"kdj.k#MONTH";
引用月线同上,只是换成月函数。
-
应用实例:主图 顶底背离
A1:=BARSLAST(ref(cross("macd.diff"(12,26,9),"macd.dea"(12,26,9)),1));
B1:=ref(c,A1+1)>c and ref("macd.diff"(12,26,9),A1+1)<"macd.diff"(12,26,9) and cross("macd.diff"(12,26,9),"macd.dea"(12,26,9));
MACD底背离:STICKLINE(FILTER(B1>0,5),0,0.75,3,0),COLOR00FF00;
DRAWTEXT(FILTER(B1>0,5),0.57,'MACD底背离'),COLOR00FF00;
A2:=BARSLAST(ref(cross("kdj.k"(9,3,3),"kdj.d"(9,3,3)),1));
B2:=ref(c,A2+1)>c and ref("kdj.k"(9,3,3),A2+1)<"kdj.k"(9,3,3) and cross("kdj.k"(9,3,3),"kdj.d"(9,3,3));
KDJ底背离:STICKLINE(FILTER(B2>0,5),0,1,3,0),COLORYELLOW;
DRAWTEXT(FILTER(B2>0,5),0.80,'KDJ底背离'),COLORYELLOW;
A3:=BARSLAST(ref(cross("RSI.RSI1"(6,12,24),"RSI.RSI2"(6,12,24)),1));
B3:=ref(c,A3+1)>c and ref("RSI.RSI1"(6,12,24),A3+1)<"RSI.RSI1"(6,12,24) and cross("RSI.RSI1"(6,12,24),"RSI.RSI2"(6,12,24));
RSI底背离:STICKLINE(FILTER(B3>0,5),0,0.5,3,0),COLORFFCC66;
DRAWTEXT(FILTER(B3>0,5),0.25,'RSI底背离'),COLORFFCC66;
DRAWTEXT(FILTER(D1>0,5),1.47,'MACD顶背离'),COLOR0066FF;
C2:=BARSLAST(ref(cross("kdj.d"(9,3,3),"kdj.k"(9,3,3)),1));
D2:=ref(c,C2+1)"kdj.k"(9,3,3) and cross("kdj.d"(9,3,3),"kdj.k"(9,3,3));
KDJ顶背离:STICKLINE(FILTER(D2>0,5),2,1,3,0),COLORRED;
DRAWTEXT(FILTER(D2>0,5),1.2,'KDJ顶背离'),COLORRED;
C3:=BARSLAST(ref(cross("RSI.RSI2"(6,12,24),"RSI.RSI1"(6,12,24)),1));
D3:=ref(c,C3+1)"RSI.RSI1"(6,12,24) and cross("RSI.RSI2"(6,12,24),"RSI.RSI1"(6,12,24));
RSI顶背离:STICKLINE(FILTER(D3>0,5),2,1.5,3,0),COLORFF00FF;
DRAWTEXT(FILTER(D3>0,5),1.75,'RSI顶背离'),COLORFF00FF;
第二部分 逐步增加函数
以均线为例,主图:
基本句型
MA5:MA(C,5);
MA10:MA(C,10);
MA30:MA(C,30);
MA60:MA(C,60);
增加颜色(注:在没有颜色输出符号时,系统会自动加上颜色)
MA5:MA(C,5),COLORBLUE;
MA10:MA(C,10),COLORF00FF0;
MA30:MA(C,30),COLORFFFF00;
MA60:MA(C,60),COLORYELLOW;
将10日均线变成小圆圈线
MA5:MA(C,5),COLORBLUE;
MA10:MA(C,10),COLORF00FF0,CIRCLEDOT;
MA30:MA(C,30),COLORFFFF00;
MA60:MA(C,60),COLORYELLOW;
将60日均线加粗
MA5:MA(C,5),COLORBLUE;
MA10:MA(C,10),COLORF00FF0,CIRCLEDOT;
MA30:MA(C,30),COLORFFFF00;
MA60:MA(C,60),COLORYELLOW,LINETHICK3;
在5日均线金叉10日均线处显示符号
MA5:MA(C,5),COLORBLUE;
MA10:MA(C,10),COLORF00FF0,CIRCLEDOT;
MA30:MA(C,30),COLORFFFF00;
MA60:MA(C,60),COLORYELLOW,LINETHICK3;
金叉:=CROSS(MA5,MA10);
DRAWICON(金叉,L,1);
DRAWTEXT(金叉,L,'金叉');
STICKLINE(金叉,H,L,6,0); (注:这三种显示方式用其中一种就行)
30日均线向上时显示红色,否则为绿色
MA5:MA(C,5),COLORBLUE;
MA10:MA(C,10),COLORF00FF0,CIRCLEDOT;
MA30:MA(C,30),COLORFFFF00;
MA60:MA(C,60),COLORYELLOW,LINETHICK3;
金叉:=CROSS(MA5,MA10);
DRAWICON(金叉,L,1);
DRAWTEXT(金叉,L,'金叉');
STICKLINE(金叉,H,L,6,0);
PARTLINE(MA30>=REF(MA30,1),MA30),COLORRED;
PARTLINE(MA30(注:最后两行为划分段线,大智慧没有此项功能,大智慧2和分析家 同花顺用下面这行)
PARTLINE(MA30,MA30>=REF(MA30,1),RGB(255,0,0),MA30通达信用下面这两行:
IF(MA30>=REF(MA30,1),MA30,DRAWNULL),COLORRED;
IF(MA30