为了让模型在周期下和序列下都能高效运行,我仿照例子做了个简单公式,如下:
RUNMODE:0;
variable:I=0;
variable:STLL=0,STHH=0;
B:barpos,linethick0;
D:datacount,linethick0;
if not(islastbar) then exit;
for I=1 to datacount do begin
STHH[I]:=HIGH[I];
STLL[I]:=LOW[I];
if I=1 then begin
STH[I]:=STHH[I];
STL[I]:=STLL[I];
end else begin
STH[I]:if(STHH[I]>STHH[I-1],STHH[I],STHH[I-1]);
STL[I]:if(STLL[I]<STLL[I-1],STLL[I],STLL[I-1]);
end
end
在序列下运行正常,但在周期下显示不出东西。请帮忙看看。
这样做的目的是,用Buy等指令在周期下测试,同时能在后台运行在序列模式下。
谢谢。去掉声明后,效果还是一样。
能帮忙调试一下这段公式吗?这是可以运行的完整公式。
公式汗有了
if not(islastbar) then exit;
这个语句,表示只在最后周期才进行的操作,即便改成了可以逐周期,也没法用在BUY,SELL上的
在周期下,是可以去掉这句的,只是效率低一点。
去不去掉都一样的,如果是普通指标那么逐周期的意义不大,如果要用BUY,SELL交易系统,是行不通的。
BUY,SELL需要每个周期都执行信号判断才能正常工作,你这个公式需要先计算指标数据然后才能出现信号,违背了BUY,SELL的运行机制。
只能使用ENTERLONG等简单交易系统
实际情况是,我仅仅允许STHH和STLL也显示指标线,在周期下就能正常运行了。很是奇怪!
RUNMODE:0;
//variable:I=0;
//variable:STLL=0,STHH=0;
B:barpos,linethick0;
D:datacount,linethick0;
//if not(islastbar) then exit;
for I=1 to datacount do begin
STHH[I]:HIGH[I];
STLL[I]:LOW[I];
if I=1 then begin
STH[I]:=STHH[I];
STL[I]:=STLL[I];
end else begin
STH[I]:if(STHH[I]>STHH[I-1],STHH[I],STHH[I-1]);
STL[I]:if(STLL[I]<STLL[I-1],STLL[I],STLL[I-1]);
end
end