# [] 数组下标

用于区分数组的各个元素的数字编号称为数组下标。在金字塔中,通过下标所对应的数组或序列元素进行取值或赋值,数组下标从1开始直到数据数量.

例1:声明数组
//声明1个含10个元素的数组并赋初始值。
VARIABLE:Array[10]:=0;

//指定元素赋值操作
Array[6]:=15;
Array[7]:=20;
1
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

# AND 逻辑与运算

逻辑与运算符号

A AND B 或 A && B

示例
COND:CLOSE>OPEN AND HOLDING=0 ;//阳线并且持仓为0
COND:CLOSE>OPEN && HOLDING=0 ;//阳线并且持仓为0【等价于使用and】
1
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

# 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

# CONTINUE 继续循环

使本次循环提前结束(不再执行CONTINUE下面的语句),然后再根据循环条件是否满足决定是否进入下次循环。

CONTINUE

  1. 仅限序列变量。
示例
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

# DO 执行语句

执行语句

FOR VAR=N1 TO N2 DO EXPR;
WHILE COND DO EXPR;


# EXIT 终止执行

终止公式执行.

EXIT

  1. 逐K线模式下运行时,EXIT的使用不当会导致比如HHV,MA,等统计性质的函数计算出现失误,建议这些函数都要放在EXIT退出语句的前面保证每个周期都能执行到.
示例
//当前计算机机器码不是预设的机器码时,则停止运行公式。【一般放在策略顶部】
if ENGINCODE()<>'QARFV1AW3ER5VAGAG' then begin
    EXIT
end
1
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

# 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

# GOTO 无条件跳转

无条件转向公式内的某一处,公式必须指出转向的目标行,目标行用标号指明

GOTO 标号@

示例
 //最后一个周期跳过均线计算行
IF ISLASTBAR THEN GOTO QUITLINE;
B:MA(C,5);
QUITLINE@ EXIT;
1
2
3
4