[金字塔教程三]序列模式和逐K线模式
(2014-01-14 21:30:56)
标签:
金字塔教程量化交易股票 |
分类: 金字塔决策交易系统 |
金字塔公式系统工作两种模式,即序列和逐K线两种模式。序列模式公式系统每次刷新时解析公式按照序列或者常数计算返回结果,整个执行过程只解析一遍公式系统,我们前面所讲的控制语句的用法都是基于序列模式下运行的。逐K线模式为从第1个K线直到最后一个K线逐个解析公式系统,每根K线都会解析整个公式系统一遍,返回值也只有数值类型这一种,故这种模式运行时效率要比序列模式低,但此种模式下由于是逐根周期执行运算的,故我们可以在编写公式时使用各种更加灵活的控制语法。
3.1控制语句在两种不同模式下的运行特点
如:前面我们在序列模式下无法正常工作的公式
fc:=close;
fo:=open;
if fc>fo then
else
但是在逐K线模式下,该公式是可以正常工作的。因为逐K线每根K线都得到了执行,故不需要向序列运行那样在后面用FOR循环重新赋值一遍了。
为了更能说明金字塔两种模式下的公式运行特点,特制作一个计算移动平均线的公式,如下:
//用于序列模式下运行的公式:
INPUT:N(5,2,500);
RUNMODE:1;
VARIABLE:I=0,S=0;
VAR1:=C;//变量申明
FOR J=1 TO DATACOUNT DO BEGIN
END;
INPUT:N(5,2,500);
VARIABLE:I=0,S=0;
VAR1:=C; //金字塔下放在这里的变量为序列赋值
//为了加快运算速度,只有最后一个周期时才循环计算
IF NOT(ISLASTBAR) THEN EXIT;
FOR J=1 TO DATACOUNT DO BEGIN
END;
上述公式中增加了 IF
NOT(ISLASTBAR)
判断是否最后一个周期的指令,在逐K线模式下,由于是判断到最后一个周期才执行的下面循环,故效率是非常高的。对于序列模式,由于同样使用了ISLASTBAR控制,故符合控制语句取最后一个数据的特点,所以该公式同时可以在两种模式下得到正确执行。
为了更能说明逐K线的运行特点,计算移动平均线的公式还可以这样写
INPUT:N(5,2,500);
RUNMODE:0;
IF BARPOS <= N THEN //从计算周期开始计算
MA1:C;
FOR J=1 TO N-1 DO
MA1:=MA1/N;
这样的公式即保证了效率,也可以使编写公式的复杂程度大大降低,提高了公式的可读性
另外逐K线模式下运行的代码,还可以配合使用GOGO语句以及EXIT指令,控制语句的执行流程,达到各种复杂的逻辑运算要求。
3.2 关于模型运行时这两种模式的选择