为何WHILE 表达式1 AND 表达式2 DO 不能执行,只能变成变量来判断?
见程序黄色部分。
程序如下:
//一致性获利法_双安全气囊
{
//取当前窗口的品种
//取当前窗口的的数据周期
//数据周期参数+1,
}
//定义变量
WEIZHIPIANYI_BUY :1;//买入双安全气囊的位置偏移,初始化为前1根K线。
买入气囊_临时_初始: CALLSTOCKEX('',VTLOW,ZOUQI,-WEIZHIPIANYI_BUY,100);//买入安全气囊_临时_初始,引用当前品种,最低价,程序设定周期买入位置偏移的最近100根数据.
ANQUANQINANG_BUY_TMP : CALLSTOCKEX('',VTLOW,ZOUQI,-WEIZHIPIANYI_BUY,100);//买入安全气囊_临时,引用当前品种,最低价,程序设定周期买入位置偏移的最近100根数据.
ANQUANQINANG_BUY : 买入气囊_临时_初始 - SHUZHIPIANYI; //买入安全气囊,=买入安全气囊_临时 - 数值偏移
P:=I;
TS:0;
//算法
//买入安全气囊
//若安全气囊<当前图表上周期的当前周期的最低价则循环。位置偏移+1;买入安全气囊_临时重新赋值,买入安全气囊重新赋值;
A:0;
IF ANQUANQINANG_BUY_TMP >= LOW AND P>0 THEN A=1;
WHILE A DO
//上面这3句组合能执行,若用下面这1句就不能执行了。
//WHILE ANQUANQINANG_BUY_TMP >= LOW AND P>0 DO 不能执行循环
BEGIN
TS:=1;
WEIZHIPIANYI_BUY : =
WEIZHIPIANYI_BUY+1;
ANQUANQINANG_BUY_TMP := CALLSTOCKEX('',VTLOW,ZOUQI,-WEIZHIPIANYI_BUY,100);
ANQUANQINANG_BUY := ANQUANQINANG_BUY_TMP - SHUZHIPIANYI;
P=P-1;
IF P=0 THEN
BEGIN
ANQUANQINANG_BUY := 买入气囊_临时_初始 - SHUZHIPIANYI;
BREAK;
END;
END;
一般只有while的判断条件里面带统计类函数才会有问题。通常情况下是不会有问题的。2种形式并无差别。
这个程序能执行循环,但是会死循环,我查不出原因,请帮忙看一下!
和循环的条件有关了:
ANQUANQINANG_BUY_TMP >= LOW AND P>0
我注意到你的循环内部对
ANQUANQINANG_BUY_TMP是有重新赋值的。这可能是导致死循环的原因。
而之前的方案中的变量A只判断了一次,后面的方案每次循环一次之后对
ANQUANQINANG_BUY_TMP >= LOW AND P>0又进行计算和判断 。