以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  金字塔软件问题提交  (http://weistock.com/bbs/list.asp?boardid=2)
----  老师请问代码的运行机制  (http://weistock.com/bbs/dispbbs.asp?boardid=2&id=62182)

--  作者:雪球
--  发布时间: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-->
--  作者:yukizzc
--  发布时间:2014/2/28 16:03:43
--  
您好,请稍后。
--  作者:雪球
--  发布时间:2014/3/2 20:02:44
--  

图片点击可在新窗口打开查看此主题相关图片如下:捕获.png33333.png
图片点击可在新窗口打开查看
这个截图与K图上11:11K线是对应的,但其持仓仍然为十1,且前后K线持仓均为十1,说明运行过但没有触发!按照这样的逻辑,我已找到原因并解决了。谢谢老师 。不过调试窗口,公式只能运行至持仓语句时持仓量才改变的!这是明显错误的,希望金字塔及时更改。

--  作者:yukizzc
--  发布时间:2014/3/3 9:53:51
--  
有开平语句则holding就会随之改变的,调试窗口你指的是公式编辑界面调试代码里查看持仓:holding这个变量吗?你这个调试代码没有运行到持仓赋值这句话当然持仓这个变量的数值不会做变动咯
[此贴子已经被作者于2014/3/3 9:54:15编辑过]