求帮主帮忙用ZigZag指标求出顶点值【已经解决】

楼主  收藏   举报   帖子创建时间:  2019-05-05 04:58 回复:0 关注量:138
指标源码如下:
  //+------------------------------------------------------------------+
  //|                                                       Zigzag.mq4 |
  //|                 Copyright ?2005-2007, metaQuotes Software Corp. |
  //|                                       http://www.metaquotes.net/ |
  //+------------------------------------------------------------------+
  #property copyright "Copyright ?2007, metaQuotes Software Corp."
  #property link      "http://www.metaquotes.net/"
  
  #property indicator_chart_window
  #property indicator_buffers 1
  #property indicator_color1 Red
  //---- indicator parameters
  extern int ExtDepth=12;
  extern int ExtDeviation=5;
  extern int ExtBackstep=3;
  //---- indicator buffers
  double ZigzagBuffer[];
  double HighMapBuffer[];
  double LowMapBuffer[];
  int level=3; // recounting's depth
  bool downloadhistory=false;
  //+------------------------------------------------------------------+
  //| Custom indicator initialization function                         |
  //+------------------------------------------------------------------+
  int init()
    {
     IndicatorBuffers(3);
  //---- drawing settings
     SetIndexStyle(0,DRAW_SECTION);
  //---- indicator buffers mapping
     SetIndexBuffer(0,ZigzagBuffer);
     SetIndexBuffer(1,HighMapBuffer);
     SetIndexBuffer(2,LowMapBuffer);
     SetIndexEmptyValue(0,0.0);
  
  //---- indicator short name
     IndicatorShortName("ZigZag("+ExtDepth+","+ExtDeviation+","+ExtBackstep+")");
  //---- initialization done
     return(0);
    }
  //+------------------------------------------------------------------+
  //|                                                                  |
  //+------------------------------------------------------------------+
  int start()
    {
     int i, counted_bars = IndicatorCounted();
     int limit,counterZ,whatlookfor;
     int shift,back,lasthighpos,lastlowpos;
     double val,res;
     double curlow,curhigh,lasthigh,lastlow;
  
     if (counted_bars==0 && downloadhistory) // history was downloaded
       {
        ArrayInitialize(ZigzagBuffer,0.0);
        ArrayInitialize(HighMapBuffer,0.0);
        ArrayInitialize(LowMapBuffer,0.0);
       }
     if (counted_bars==0)
       {
        limit=Bars-ExtDepth;
        downloadhistory=true;
       }
     if (counted_bars>0)
       {
        while (counterZ=0; shift--)
       {
        val=Low[iLowest(NULL,0,MODE_LOW,ExtDepth,shift)];
        if(val==lastlow) val=0.0;
        else
          {
           lastlow=val;
           if((Low[shift]-val)>(ExtDeviation*Point)) val=0.0;
           else
             {
              for(back=1; backval)) LowMapBuffer[shift+back]=0.0;
                }
             }
          }
        if (Low[shift]==val) LowMapBuffer[shift]=val; else LowMapBuffer[shift]=0.0;
        //--- high
        val=High[iHighest(NULL,0,MODE_HIGH,ExtDepth,shift)];
        if(val==lasthigh) val=0.0;
        else
          {
           lasthigh=val;
           if((val-High[shift])>(ExtDeviation*Point)) val=0.0;
           else
             {
              for(back=1; back
打赏