求助,MQL5获取分形指标数组的值不正确,不知道哪儿出错了!

 
求助,MQL5获取分形指标数组的值不正确,不知道哪儿出错了!以下为简单的代码:
//+------------------------------------------------------------------+
//|                                                         分形数值获取.mq5 |
//|                        Copyright 2019, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
double data0[],data1[];
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
  
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
  
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
Fractals(data0,data1,100,Symbol(),Period());
printf(data0[0]);
  
  }
//+------------------------------------------------------------------+
//Custom indicate
int Fractals(double &data0[],double &data1[],int count,string symbol,ENUM_TIMEFRAMES period)
{
   int h=iFractals(symbol,period);
   ArraySetAsSeries(data0,true);
   ArraySetAsSeries(data1,true);
   int a;
   a=CopyBuffer(h,0,0,count,data0);
   a=CopyBuffer(h,1,0,count,data1);
   //IndicatorRelease(h);
   return(a);
   }
返回的数组数值很奇怪:  (GOLD,H1) 1.797693134862316e+308 
这个double类型的数组是什么鬼,不应该是个价格数据吗??请求高手求助帮忙解决,谢谢
 
没有错,这个很大的值1.797693134862316e+308 是EMPTY_VALUE,表示没有fractal。
 

icy888:

...


论坛

When you post code please use the CODE button (Alt-S)!

Use the CODE button


 
icy888:
//我也是搞了一个早上才解决,需要通过循环来获取值,自己封装了一个,源码如下:
int Fractals(double &data0[],double &data1[],int count,string symbol,ENUM_TIMEFRAMES period)
  {
   int h=iFractals(symbol,period);//iCustom(symbol,period,"Examples\\Fractals");//

   ArraySetAsSeries(data0,true);
   ArraySetAsSeries(data1,true);
   int a;
   a=CopyBuffer(h,0,0,count,data0);
   a=CopyBuffer(h,1,0,count,data1);
//IndicatorRelease(h);
   return(a);
  }
void getFractals(double &FractalUp[],double &FractalDn[],int geshu)
  {
   ArrayResize(FractalUp,geshu);
   ArrayResize(FractalDn,geshu);
   ArrayInitialize(FractalUp,0);
   ArrayInitialize(FractalDn,0);

   double FractalUpzhi[],FractalDnzhi[];
   int bars=Bars(Symbol(),0);
   Fractals(FractalUpzhi,FractalDnzhi,bars,Symbol(),0);

   int jishuup=0;
   for(int i=0; i<bars; i++)
     {
      if(jishuup>(geshu-1))
        {
         break;
        }
      if(FractalUpzhi[i]!=EMPTY_VALUE)
        {
         FractalUp[jishuup]=FractalUpzhi[i];
         jishuup++;
        }
     }
   int jishudn=0;
   for(int i=0; i<bars; i++)
     {
      if(jishudn>(geshu-1))
        {
         break;
        }
      if(FractalDnzhi[i]!=EMPTY_VALUE)
        {
         FractalDn[jishudn]=FractalDnzhi[i];
         jishudn++;
        }
     }


  }
。。。。。
原因: