-- 作者:雪球
-- 发布时间:2014/2/28 15:29:27
-- 老师请问代码的运行机制
variable:cc=0;
/////////////////////////////////模型1
hi:=ref(hhv(h,10),1);
lo:=ref(llv(l,10),1);
PKKD:=h>hi;
PDKK:=l<lo;
if cc>0 and PDKK then begin
Y1:cc>0 and PDKK ,linethick0;
if islastbar then
DEBUGFILE(\'E:\\TEST.TXT\',\' Y1:%.0f\',Y1);//输出Y1
pc:=min(max(holding,0),SS);
kc:=SS-pc;
if pc>0 then begin
sell(1=1,pc,limitr,min(o,lo-0.2)-0.6);
Y1pc:1,linethick0;
if islastbar then
DEBUGFILE(\'E:\\TEST.TXT\',\' Y1pc:%.0f\',Y1pc);//输出Y1pc
end
if kc>0 then begin
buyshort(1,kc,limitr,min(o,lo-0.2)-0.6);
Y1kc:1,linethick0;
if islastbar then
DEBUGFILE(\'E:\\TEST.TXT\',\' Y1kc:%.0f\',Y1kc);//输出Y1kc
end
cc:=0;
end
if cc<0 and PKKD then begin
Y2:cc<0 and PKKD ,linethick0;
if islastbar then
DEBUGFILE(\'E:\\TEST.TXT\',\' Y2:%.0f\',Y2);//输出Y2
pc:=min(abs(min(holding,0)),SS);
kc:=SS-pc;
if pc>0 then begin
sellshort(1=1,pc,limitr,max(o,hi+0.2)+0.6);
Y2pc:1,linethick0;
if islastbar then
DEBUGFILE(\'E:\\TEST.TXT\',\' Y2pc:%.0f\',Y2pc);//输出Y2pc
end
if kc>0 then begin
buy(1,kc,limitr,max(o,hi+0.2)+0.6)
Y2kc:1,linethick0;
if islastbar then
DEBUGFILE(\'E:\\TEST.TXT\',\' Y2kc:%.0f\',Y2kc);//输出Y2kc
end
cc:=0;
end
if cc=0 and PKKD then begin
Y3:cc=0 and PKKD ,linethick0;
if islastbar then
DEBUGFILE(\'E:\\TEST.TXT\',\' Y3:%.0f\',Y3);//输出Y3
pc:=min(abs(min(holding,0)),SS);
kc:=SS-pc;
if pc>0 then begin
sellshort(1=1,pc,limitr,max(o,hi+0.2)+0.6);
Y3pc:1,linethick0;
if islastbar then
DEBUGFILE(\'E:\\TEST.TXT\',\' Y3pc:%.0f\',Y3pc);//输出Y3pc
end
if kc>0 then begin
buy(1,kc,limitr,max(o,hi+0.2)+0.6);
Y3kc:1,linethick0;
if islastbar then
DEBUGFILE(\'E:\\TEST.TXT\',\' Y3kc:%.0f\',Y3kc);//输出Y3kc
end
cc:=1;
end
if cc=0 and PDKK then begin
Y4:cc=0 and PDKK ,linethick0;
if islastbar then
DEBUGFILE(\'E:\\TEST.TXT\',\' Y4:%.0f\',Y4);//输出Y4
pc:=min(max(holding,0),SS);
kc:=SS-pc;
if pc>0 then begin
sell(1=1,pc,limitr,min(o,lo-0.2)-0.6);
Y4pc:1,linethick0;
if islastbar then
DEBUGFILE(\'E:\\TEST.TXT\',\' Y4pc:%.0f\',Y4pc);//输出Y4pc
end
if kc>0 then begin
buyshort(1,kc,limitr,min(o,lo-0.2)-0.6);
Y4kc:1,linethick0;
if islastbar then
DEBUGFILE(\'E:\\TEST.TXT\',\' Y4kc:%.0f\',Y4kc);//输出Y4kc
end
cc:=-1;
end
if time=closetime(0) then begin
cc:=0;
end
持仓:holding,linethick0;
资产:asset,noaxis;
可用现金:cash(0),linethick0;
老师请问上述代码的运行机制。具体叙述如下:当holding=1,cc=1时,请问接下来触发PDKK后怎么走?1是沿着Y1返回1,Y1PC返回1(此时holding=0了),CC=0,Y4返回1,Y4KC返回1,CC=-1,此时holding=-1。2是沿着Y1返回1,Y1PC返回1(此时holding=1不变),CC=0,Y4返回1,Y4PC返回1(此时仍然holding=1),CC=-1,运行至持仓语句后此时holding=0了。这两种情况我在日记中都有发现,到底金字塔那种运行机制是正确的呢?关键是holding的值是开仓平仓后即自动跟着变,还是要运行至持仓语句后才变? <!--EndFragment-->
|