RUNMODE:1;
A:=ALL(C<O,3),LINETHICK0;
B:=ANY(L<=O-8,6),LINETHICK0;
D:=ALL(C>O,3),LINETHICK0;
E:=ANY(H>=O+8,6),LINETHICK0;
SHORT:A AND B,LINETHICK0;
LONG:D AND E,LINETHICK0;
msgout(SHORT=1,'short');
FOR I=1 TO DATACOUNT DO
BEGIN
IF SHORT=1 THEN
BEGIN
FOR I=BARPOS-3 DOWNTO BARPOS-10 DO
BEGIN
IF ISUP()=1 THEN
BEGIN
CC:OPEN[BARPOS+1];/// 这行解释错误。请问是什么问题
BREAK;
END
END
END
END
BARPOS一般是用在逐K线模式下精确控制头寸管理使用的,序列模式下你这种使用不正确。
请说明你的意图,看看我们怎么帮你改改
RUNMODE:1;
A:=ALL(C<O,3),LINETHICK0;
B:=ANY(L<=O-8,6),LINETHICK0;
D:=ALL(C>O,3),LINETHICK0;
E:=ANY(H>=O+8,6),LINETHICK0;
SHORT:A AND B,LINETHICK0;
LONG:D AND E,LINETHICK0;
msgout(SHORT=1,'short');
FOR i=1 TO DATACOUNT DO
BEGIN
IF SHORT[i]=1 THEN
BEGIN
FOR j=i-3 DOWNTO i-10 DO
BEGIN
IF CLOSE[j]>=OPEN[j] THEN
BEGIN
OO[i]:OPEN[j+1];
BREAK;
END
END
END
END
王峰,我改了以后,前边都没问题了。就是不知道BREAK是否能跳出内部循环。
可以跳出循环,但是BREAK会跳出整个FOR循环,所以不能用在FOR循环嵌套中
涉及到一些比较复杂的算法,建义使用VBS公式来解决,就是公式里嵌套VBS语法,传递参数过去。
参考 http://www.weistock.com/bbs/dispbbs.asp?boardid=2&Id=370 高级篇的第11章