公式编写入门

来源:百度文库 编辑:神马文学网 时间: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