欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件金字塔软件问题提交 → 数组数据越界问题

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有3842人关注过本帖平板打印复制链接

主题:数组数据越界问题

帅哥哟,离线,有人找我吗?
wsanle
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:196 积分:594 威望:0 精华:2 注册:2011/8/22 18:26:49
  发帖心情 Post By:2013/6/19 14:27:44 [只看该作者]

Input:ExtDepth(5,5,25,1),ExtDeviation(5,3,10,1),ExtBackStep(3,3,10,1);
variable:Zigzag[270]=0,NUM=0,whatlookfor:=0,LastPrice1:=0,LastPrice2:=0,LastSet1:=0,LastSet2:=0;
WARNING_DISABLE:4;
NN:=barslast(day<>ref(day,1))+1;
If NN=1 Then BEGIN
   For i=1 to 270 do Zigzag[i]:=0;
      whatlookfor:=0;
      LastPrice1:=Open;
      LastPrice2:=0;
      LastSet1:=1;
      LastSet2:=0;
      NUM:=1;
      Zigzag[1]:=Open;
END           
   REFCLOSE:=REF(CLOSE,1);
   LASTHIGH:=HHV(HIGH,NN-LastSet1);
   LASTLOW:=LLV(LOW,NN-LastSet1);
   LASTHIGHSET:=NN-HHVBARS(HIGH,NN-LastSet1);
   LASTLOWSET:=NN-LLVBARS(LOW,NN-LastSet1); 
  
If Islastbar<>1 AND whatlookfor=0 Then Begin //确定了起点,寻找第一个拐点
   If LastPrice1<>0 AND LastPrice2=0 Then BEGIN
      IF REFCLOSE>LastPrice1 AND (NN-LastSet1)>=ExtDepth AND (REFCLOSE-LastPrice1)>=ExtDeviation Then BEGIN  //先出现高点 
         LastPrice2:=REFCLOSE;
         LastSet2:=NN;
         whatlookfor:=-1;
         GOTO ENDEXIT@;
      END
      IF REFCLOSE<LastPrice1 AND (NN-LastSet1)>=ExtDepth AND (LastPrice1-REFCLOSE)>=ExtDeviation Then BEGIN  //先出现低点
         LastPrice2:=REFCLOSE;
         LastSet2:=NN;
         whatlookfor:=1;
         GOTO ENDEXIT@;
      END
   END 
END

If Islastbar<>1 AND whatlookfor=1 Then Begin //最后是向下拐点,寻找高点
   If LastPrice1<>0 AND LastPrice2<>0 Then BEGIN
      If REFCLOSE<LastPrice2 Then BEGIN
         LastPrice2:=REFCLOSE;
         LastSet2:=NN;
      END
      IF REFCLOSE>LastPrice2 AND (NN-LastSet2)>=ExtDepth AND (REFCLOSE-LastPrice2)>=ExtDeviation Then BEGIN  // 找到高点
         NUM:=NUM+1;
         whatlookfor:=-1;
         Zigzag[LASTLOWSET]:=LASTLOW;
         LastPrice1:=LastPrice2;
         LastSet1:=LastSet2;
         LastPrice2:=REFCLOSE;
         LastSet2:=NN;
      END
   END
END

If Islastbar<>1 AND whatlookfor=-1 Then Begin //最后是向上拐点,寻找低点
   If LastPrice1<>0 AND LastPrice2<>0 Then BEGIN
      If REFCLOSE>LastPrice2 Then BEGIN
         LastPrice2:=REFCLOSE;
         LastSet2:=NN;
      END
      IF REFCLOSE<LastPrice2 AND (NN-LastSet2)>=ExtDepth AND (LastPrice2-REFCLOSE)>=ExtDeviation Then BEGIN  // 找到低点
         NUM:=NUM+1;
         whatlookfor:=1;         
         Zigzag[LASTHIGHSET]:=LASTHIGH;
         LastPrice1:=LastPrice2;
         LastSet1:=LastSet2;
         LastPrice2:=REFCLOSE;
         LastSet2:=NN;
      END
   END
END

ENDEXIT@ ;

POLYLINE(Zigzag[NN]<>0,Zigzag[NN],COLORRED,1,VTSOLID);


 回到顶部