IF(DATE<>REF(DATE,1)) THEN
BEGIN
DayOpen:=OPEN;
PreDayRange:=PreDayHigh-PreDayLow;
bRange:=OPEN*MinRange*0.01;
if( PreDayRange<bRange) THEN ( 该行提示标识符“if( PreDayRage<bRange) THEN “长度不能大于20个字符,当我将所有的PreDayRange改为PR时这个问题就解决了,请问这是怎么回事)
PreDayRange:=bRange;
END
ELSE (该行提示else前缺少if)
BEGIN
DayOpen:=REF(DayOpen,1);
PreDayRange:=REF(PreDayRage,1);
blongStoped:=REF(blongStoped,1);
bshortStoped:=REF(bshortStoped,1);
END
希望各位强人帮我解答一下,不胜感激!
predayhigh:=0;
predaylow:=0;
minrange:=0;
blongstoped:=0;
bshortstoped:=0;
if date<>ref(date,1) then begin
dayopen:=open;
predayrange:=predayhigh-predaylow;
brange:=open*minrange*0.01;
if predayrange<brange then
predayrange:=brange;
end else begin
dayopen:=ref(dayopen,1);
predayrange:=ref(predayrange,1);
blongstoped:=ref(blongstoped,1);
bshortstoped:=ref(bshortstoped,1);
end
是需要先给变量赋予初值的问题吗?
还有我将您的程序进行测试,显示REF函数在逐周期模式下不能再IF控制语句内使用,但错误显示在dayopen:=ref(dayopen,1)行,这是何解呢?
把ref语句提到外面来用 写个中间变量 然后再把变量名放到IF里用
INPUT: PercentOfRange(0.3,0,1,0.1),MinRange(0.2,0,1.0.1),StopLossSet(0.5,0,1,0.1),
TrailingStart(0.8,0,1,0.1),TrailingStop(0.5,0,1,0.1),
ExitOnCloseMins(145000,140000,150000,100);
VARIABLE:blongStoped=false,bshortStoped=false,predayhigh:=0,predayrange=0,
predaylow:=0, higherAfterEntry:=0,lowerAfterEntry:=0,myprice=0,dayopen=0;
N1:=BARSLAST(DATE<>REF(DATE,1))+1;
N2:=REF(N1,N1);
PreDayHigh:=REF(HHV(HIGH,N2),N1);
PreDayLow:=REF(LLV(LOW,N2),N1);
if date<>ref(date,1) then begin
dayopen:=open; //dayopen取当天的开盘价//
predayrange:=predayhigh-predaylow;
brange:=open*minrange*0.01;
if predayrange<brange then
predayrange:=brange;
end else begin
dayopen:=ref(dayopen,1);
predayrange:=ref(predayrange,1);
blongstoped:=ref(blongstoped,1);
bshortstoped:=ref(bshortstoped,1);
end
该程序显示ref函数在逐周期模式下不能再if控制语句中使用
但是把ref语句提到外面:
INPUT: PercentOfRange(0.3,0,1,0.1),MinRange(0.2,0,1.0.1),StopLossSet(0.5,0,1,0.1),
TrailingStart(0.8,0,1,0.1),TrailingStop(0.5,0,1,0.1),
ExitOnCloseMins(145000,140000,150000,100);
VARIABLE:blongStoped=false,bshortStoped=false,predayhigh:=0,predayrange=0,
predaylow:=0, higherAfterEntry:=0,lowerAfterEntry:=0,myprice=0,dayopen=0,p1=0,b1=0,b2=0,h1=0,h2=0,l1=0,l2=0;
N1:=BARSLAST(DATE<>REF(DATE,1))+1;
N2:=REF(N1,N1);
PreDayHigh:=REF(HHV(HIGH,N2),N1);
PreDayLow:=REF(LLV(LOW,N2),N1);//跨周期取昨日的最高价与最低价//
d1:=ref(dayopen,1);
p1:=ref(predayrange,1);
b1:=ref(blongstoped,1);
b2:=ref(bshortstoped,1);
if date<>ref(date,1) then begin
dayopen:=open; //dayopen取当天的开盘价//
predayrange:=predayhigh-predaylow;
brange:=open*minrange*0.01;
if predayrange<brange then
predayrange:=brange;
end else begin
dayopen:=d1;
predayrange:=p1;
blongstoped:=b1;
bshortstoped:=b2;
end
测试正常,但调试dayopen等值都有问题,是怎么回事呢?
请楼主仔细说明你上述公式到底遇到了什么问题?
以下当日开盘价用于日线以下周期
dayopen:valuewhen(date<>ref(date,1),o);//当天开盘价
在外面,不影响的.
符合不符合,用这里面介绍的方法调试一下就知道了.
http://www.weistock.com/bbs/dispbbs.asp?boardid=4&id=1246&page=1&star=1