没有错,这个很大的值1.797693134862316e+308 是EMPTY_VALUE,表示没有fractal。
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++; } } }
//+------------------------------------------------------------------+
//| 分形数值获取.mq5 |
//| Copyright 2019, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| 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]);
}
//+------------------------------------------------------------------+
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类型的数组是什么鬼,不应该是个价格数据吗??请求高手求助帮忙解决,谢谢