以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://222.73.7.161/bbs/index.asp) -- 公式模型编写问题提交 (http://222.73.7.161/bbs/list.asp?boardid=4) ---- while循环执行的问题 (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=168326) |
-- 作者:JJG -- 发布时间:2019/2/20 17:13:42 -- while循环执行的问题 为何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; |
-- 作者:FireScript -- 发布时间:2019/2/20 17:19:29 -- 一般只有while的判断条件里面带统计类函数才会有问题。通常情况下是不会有问题的。2种形式并无差别。 |
-- 作者:JJG -- 发布时间:2019/2/20 17:31:12 -- 这个程序能执行循环,但是会死循环,我查不出原因,请帮忙看一下! |
-- 作者:JJG -- 发布时间:2019/2/20 17:44:51 -- 这个程序为何死循环? |
-- 作者:FireScript -- 发布时间:2019/2/21 15:03:43 -- 和循环的条件有关了: ANQUANQINANG_BUY_TMP >= LOW AND P>0 我注意到你的循环内部对 ANQUANQINANG_BUY_TMP是有重新赋值的。这可能是导致死循环的原因。 而之前的方案中的变量A只判断了一次,后面的方案每次循环一次之后对
ANQUANQINANG_BUY_TMP >= LOW AND P>0又进行计算和判断 。 |
-- 作者:CH123456 -- 发布时间:2019/4/22 14:15:12 -- P=P-1;改成p:=p-1; |