内容提要:本文主要介绍了编写通达信指标公式会用到的EVERY函数、COUNT函数以及函数的应用举例。

 

一、函数简介

1、EVERY函数

 

含义:EVERY英文翻译成中文是“每个”的意思,在通达信编程语言中,EVERY函数的含义是“一直存在”。

使用用法:EVERY(X,N) ,表示N周期内一直存在X条件,X条件比较常见的情况是关系运算,比如A>B之类的。

举例:EVERY(C>O,3);,以日线为例,表示三连阳

 

再举一个稍微复杂一点的例子,EVERY(C>REF(C,1),3);,以日线为例,表示连涨3天。新手看到结构比较复杂的语句,可能会看不明白,可以先找到逗号(,),然后按照X、N的前后位置,按序区分。详解如下图。

java 通达信 通达信编程及规则 通达信编程教程_编程语言

其实在自己编写通达信指标公式的过程中,可以把一句代码写成两句,这样更清晰明了。

X:=C>REF(C,1);

LZ:EVERY(X,3);

 

另外看指标公式编辑器下方的动态翻译,可以帮助了解公式语句的含义。(下图方框箭头处)

java 通达信 通达信编程及规则 通达信编程教程_程序猿_02

 

2、COUNT函数

 

含义:COUNT英文翻译成中文就是“计数”的意思,在通达信编程语言中,COUNT函数的含义是“统计满足条件的周期数”。

使用方法:COUNT(X,N),统计N个周期中满足X条件的周期数

举例:COUNT(C>O,10);,以日线为例,表示统计10天中阳线的数量。

 

COUNT函数比EVERY函数更灵活,比如上面的例子EVERY(C>O,3);三连阳,可以用COUNT函数写出来,COUNT(C>O,3)=3;表示3天中有3天是阳线,也就是三连阳。

 

二、函数应用举例

1、60日均线持续向上

 

代码如下:

MA60:=MA(C,60);

A1:=MA60>REF(MA60,1);

JXCXXS:EVERY(A1,10);

代码详解:

a、MA60:=MA(C,60);,表示60日均线;

b、A1:=MA60>REF(MA60,1);,表示今天60日均线的值大于昨天的,也就是说60日均线向上;

c、JXCXXS:EVERY(A1,10);,表示10天一直满足A1条件,也就是说10天一直满足60日均线向上

 

java 通达信 通达信编程及规则 通达信编程教程_编程语言_03

java 通达信 通达信编程及规则 通达信编程教程_java 通达信 通达信编程及规则_04

 

2、强势上涨

 

代码如下:

A1:=(HHV(H,10)-LLV(L,10))/LLV(L,10)>0.1;
A2:=COUNT(C>O,10)>8;
A3:=EVERY(MA(C,60)>REF(MA(C,60),1),10);
QS:A1 AND A2 AND A3;

代码详解:

a、A1:=(HHV(H,10)-LLV(L,10))/LLV(L,10)>0.1;,表示10日内低点到高点的幅度大于10%;

b、A2:=COUNT(C>O,10)>8;,10天中有8天实阳线,这就是强势的特征;

c、A3:=EVERY(MA(C,60)>REF(MA(C,60),1),10);,这一句眼熟吗?就是上面的例子“60日均线持续向上”,我把几句代码合成一句了,这一句用来过滤掉K线在60均线下方反弹的情况;

d、QS:A1 AND A2 AND A3;,把A1、A2、A3三个条件用AND连起来,三个条件要同时成立。

java 通达信 通达信编程及规则 通达信编程教程_程序猿_05

java 通达信 通达信编程及规则 通达信编程教程_编程语言_06

 

今天介绍了EVERY函数、COUNT函数这两个函数,下一篇文章会介绍BARSLAST函数,并结合这几个函数编写一个比较实用的指标——MACD零轴之上首次金叉。