# [] 数组下标
用于区分数组的各个元素的数字编号称为数组下标。在金字塔中,通过下标所对应的数组或序列元素进行取值或赋值,数组下标从1开始直到数据数量.
例1:声明数组
//声明1个含10个元素的数组并赋初始值。
VARIABLE:Array[10]:=0;
//指定元素赋值操作
Array[6]:=15;
Array[7]:=20;
1
2
3
4
5
6
2
3
4
5
6
例2:移动平均线可通过如下循环语句和数组操作实现
INPUT:N(5,2,500); //参数申明
VARIABLE:I=0,S=0;
VAR1:=C; //变量申明
//为了加快运算速度,只有最后一个周期时才循环计算
IF NOT(ISLASTBAR) THEN EXIT;
FOR J=1 TO DATACOUNT DO BEGIN
S:=S+VAR1[J];
IF J>=N THEN BEGIN
IF J>N THEN
S:=S-VAR1[J-N];
MA1[J]:S/N; //实现MA(C,N)
I:=0;
END;
END;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
# AND 逻辑与运算
逻辑与运算符号
A AND B 或 A && B
示例
COND:CLOSE>OPEN AND HOLDING=0 ;//阳线并且持仓为0
COND:CLOSE>OPEN && HOLDING=0 ;//阳线并且持仓为0【等价于使用and】
1
2
2
# OR 或
逻辑或运算,表示条件1与条件2只要有一个成立即可
A OR B 或 A || B
# BEGIN...END 定义语句块
把多条语句看作一条语句,用于判断、循环体中将多条语句组合成一组语句块。
BEGIN...END
示例
//阳线时,平多开空
IF CLOSE>OPEN THEN
BEGIN
SELL(HOLDING<0,1,MARKET);
BUYSHORT(HOLDING=0,1,MARKET);
END
1
2
3
4
5
6
2
3
4
5
6
# BREAK 跳出循环
跳出循环
BREAK
示例
VARIABLE:a=0;
//最后一根k上时,当A=5时,退出循环
if ISLASTBAR()=1 then BEGIN
For i=1 TO 10 DO BEGIN
a:=a+1;
if i=5 then BREAK;
END
END
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# CONTINUE 继续循环
使本次循环提前结束(不再执行CONTINUE下面的语句),然后再根据循环条件是否满足决定是否进入下次循环。
CONTINUE
- 仅限序列变量。
示例
VARIABLE:a=0;
//最后一根k上时,当A<5时,结束本次循环。最终结果A=6.
if ISLASTBAR()=1 then BEGIN
For i=1 TO 10 DO BEGIN
if i<5 then CONTINUE;
a:=a+1;
END
END
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# DO 执行语句
执行语句
FOR VAR=N1 TO N2 DO EXPR;
WHILE COND DO EXPR;
# EXIT 终止执行
终止公式执行.
EXIT
- 逐K线模式下运行时,EXIT的使用不当会导致比如HHV,MA,等统计性质的函数计算出现失误,建议这些函数都要放在EXIT退出语句的前面保证每个周期都能执行到.
示例
//当前计算机机器码不是预设的机器码时,则停止运行公式。【一般放在策略顶部】
if ENGINCODE()<>'QARFV1AW3ER5VAGAG' then begin
EXIT
end
1
2
3
4
2
3
4
# FOR 循环语句
FOR...TO...DO...
FOR...DOWNTO...DO...
FOR VAR=N1 TO N2 DO EXPR; | 从 VAR=N1 开始到 VAR=N2 开始循环执行 EXPR 语句,每执行一次VAR加1 |
FOR VAR=N1 DOWNTO N2 DO EXPR2; | 从 VAR=N1 开始到 VAR=N2 开始循环执行 EXPR 语句,每执行一次VAR减1 |
# IF...THEN... 条件语句
条件判断语句
IF COND THEN EXPR1 ELSE EXPR2
当满足 COND 条件的时候,执行语句 EXPR1,否则执行 EXPR2 语句
# INPUT 申明参数
申明并设置参数
INPUT:PNAME1(DFT,MIN,MAX,STEP),PNAME2(DFT,MIN,MAX,STEP)...
参数
参数 | 说明 |
---|---|
PNAME | 必需,参数名称 |
DFT | 必需,缺省值 |
MIN | 可选,最小值 |
MAX | 可选,最大值 |
STEP | 可选,优化步长 |
示例
//表示定义参数N,缺省值为5.
//定义参数M,缺省值为10,最小值为1,最大值为100,优化步长为2
INPUT:N(5), M(10,1,100,2);
1
2
3
4
2
3
4
# REPEAT 循环语句
循环执行REPEAT后的语句直到满足条件的时候才中止。
REPEAT...UNTIL...
# WHILE 循环语句
WHILE COND DO EXPR
# REFLINE 设置坐标线
设置坐标线
REFLINE:N1,N2,...,NX
示例
//表示画出对应值为0,20,50,80,100的坐标线
REFLINE:0,20,50,80,100;
ma(c,10);
1
2
3
2
3
# GOTO 无条件跳转
无条件转向公式内的某一处,公式必须指出转向的目标行,目标行用标号指明
GOTO 标号@
示例
//最后一个周期跳过均线计算行
IF ISLASTBAR THEN GOTO QUITLINE;
B:MA(C,5);
QUITLINE@ EXIT;
1
2
3
4
2
3
4