目录
1、注释语句
描述: 注释语句不会被程序运行,可以起到描述作用。
语法: {注释文本}
{计算5日收盘价均线}
ma(close,5);
2、 数据类型
描述: 在大智慧公式系统中,系统可以处理的数据分为两类:常量和变量。
2.1、常量
描述: 常量是一个永远不变的数据,不可以被赋值修改。
比如在代码:ma(close,5); 中,函数的第二个参数5就是一个常量。
参数列表中的参数也是常量。
2.2、变量
描述: 变量是一个可以被赋值修改的数据。
语法1: 变量名 := 数据;
如果使用 := 定义变量。可以在代码的各个阶段直接定义。但是当该变量没有被赋值直接被使用时,该变量是个空值。
{定义数值型变量}
temp1 := 100;
{定义字符串型变量}
temp2 := '这是一个字符串';
语法2: variable: 变量名 = 数据;
如果使用variable:定义变量,必须在代码开始位置定义并初始化该变量。如果用这种方法不会出现空值情况。
{定义数值型变量}
variable: temp1 = 100;
{定义字符串型变量}
variable: temp2 = '这是一个字符串';
3、赋值语句
描述: 在技术指标中,赋值语句的计算结果将会被计算机执行并形成相应的图形,每个语句可以有一个名称。该图形被称为指标线,每个公式最多可以有6个指标线。
语法: 线名 : [语句];
{用每天的开盘价绘制一条线,线名为temp}
temp:open;
4、中间语句
描述: 一个语句如果不需要显示,可以将它定义为中间语句。例如上文中的定义变量 temp := 100; 这样该语句就不会被系统辨认为是指标线了。中间语句用 := 替代冒号,其它与一般语句完全一样。使用中间语句可以有效降低公式的书写难度,还可以将需要重复使用的语句定义成中间语句以减少计算量。每个公式中的中间语句没有数量限制。
5、公式计算符
描述: 公式计算符将函数连接成为公式。计算分为算术计算符和逻辑计算符。
5.1、算数计算符
描述: 算数计算符有 +、-、*、/ 四种,分别对应加减乘除,计算符号两边的数据,同一般意义上的算术计算没有差异。
5.2、逻辑计算符
描述: 逻辑计算符有 >、<、<>、>=、<=、=、and、or 八种,分别对应大于、小于、不等于、大于等于、小于等于、等于、逻辑与、逻辑或。
如果条件成立计算结果就等于1,否则等于0。例如:3+4等于7,4>3就等于1,3<=2就等于0。
逻辑与 表示两个条件都成立时结果才成立;逻辑或 表示两个条件中只要有一个成立结果就成立。例如:4>3 and 12>=4的结果等于1,4>3 or 3>12的结果等于1。
6、线形描述符
描述: 在技术指标公式中可以在语句加上线形描述符,用来表示如何画该语句描述的指标线。线形描述符有以下11种。
线形描述符 | 描述 |
---|---|
stick | 柱状线 |
colorstick | 彩色柱状线,当值为正时显示红线,否则显示绿线 |
colorred | 为线形赋色,red表示红色 |
colorblue | 为线形赋色,blue表示蓝色 |
coloryellow | 为线形赋色,yellow表示黄色 |
volstick | 成交量柱状线,当股价上涨时显示红色空心柱,否则显示绿色实习柱 |
linestick | 同时画出柱状线和指标线 |
linethick | 设置线体的粗细 |
crossdot | 小叉线 |
circledot | 小圆圈线 |
pointdot | 小圆点线 |
线形描述符写在语句后分号前,用逗号将它与语句分开。
colorred等三个线形描述符还可以自定义颜色,格式为color + bbggrr:bb、gg、rr表示蓝色、绿色和红色的分量,每种颜色的取值范围是00至ff,采用16进制。例如:ma5:ma(close,5),color00fffff; 表示纯红色与纯绿色的混合色;color808000表示淡蓝色和淡绿色的混合色。
linethick可以允许对线形的粗细进行自定义设置。范围在0至7之间,linethick0 表示最细的线,而linethick7表示最粗的线。
DIFF : EMA(CLOSE,12) - EMA(CLOSE,26);
DEA : EMA(DIFF,9);
MACD : 2*(DIFF-DEA), COLORSTICK;
7、if条件语句
描述: 当条件成立时运行指定代码,否则运行其它代码。
语法1: if [条件] then [一条语句]
{当收盘价大于开盘价时,temp赋值为1}
variable: temp = 0;
if close > open then
temp := 1;
语法2: if [条件] then begin [多条语句] end
{当收盘价大于开盘价时,temp1赋值为1,temp2赋值为2}
variable: temp1 = 0;
variable: temp2 = 0;
if close > open then begin
temp1 := 1;
temp2 := 2;
end
语法3: if [条件] then begin [多条语句] end else if [条件] then begin [多条语句] end else begin [多条语句] end
{当收盘价大于开盘价时,temp1赋值为1,temp2赋值为2}
{当收盘价小于开盘价时,temp1赋值为2,temp2赋值为1}
{当收盘价等于开盘价时,temp1赋值为3,temp2赋值为3}
variable: temp1 = 0;
variable: temp2 = 0;
if close > open then begin
temp1 := 1;
temp2 := 2;
end
else if open > close then begin
temp1 := 2;
temp2 := 1;
end
else begin
temp1 := 3;
temp2 := 3;
end
8、for循环语句
描述: 循环运行指定次数的代码。
语法: for [变量]=[初值] to [终值] do begin [多条语句] end
{循环运行10次代码}
variable: nSum = 0;
variable: nEnd = 10;
for i = 0 to nEnd do begin
nSum := nSum + 1;
end
9、while循环语句
描述: 循环运行指定条件的代码。
语法: while [条件] do begin [多条语句] end
{当nFirst<nEnd时,循环运行代码}
variable: nFirst = 0;
variable: nEnd = 5;
variable: nSum = 0;
while nFirst < nEnd do begin
nSum := nSum + 1;
nFirst := nFirst + 1;
end
10、数组
描述: 数组是一个可以存储多个元素的变量。
- 大智慧公式系统只支持一维数组。
- 数组在使用之前一定要在代码开头先声明。
{定义一个数值型数组,初始值为0}
variable: v1[20] = 0;
{定义一个字符串型数组,初始值为'a'}
variable: v2[20] = 'a';
- 在使用数组变量时,需要在变量名后面带上序号,表示引用数组中的第几个元素,元素的序号从1开始。
variable v1[20] = 1;
p := v1[1] * close;
11、字符串
描述: 大智慧公式系统有两种数据,一种是数值型,另一种就是字符串。
- 字符串变量定义
{方法一}
variable: s1 = '你好世界';
{方法二}
s2 := '你好世界';
- 字符串拼接
s := '你好' + '世界'; {s = '你好世界'}
- 字符串比较
s := strcmp('ABC','abc'); {当s等于0代表两个字符串相等,不等于0代表不相等}
12、定义常量参数
- 在参数列表中定义
- 在代码中定义
{
语法:input: name(default,min,max,step);
name:参数名
default:缺省值
min:最小值
max:最大值
step:步长
}
input: n1(5,1,100,1),n2(10,1,100,1);
13、定义参考线
描述: 使用参考线作为横坐标线。
语法: refline: l1,l2,l3…;
refline:0,20,50,80,100;