Нули в индикаторе

 

Добрый день

Подскажите, пожалуйста. Не въезжаю. Из индикатора в массив копируются нули. 

  int ma_handle;
  double ma[];
  ma_handle=iMA(_Symbol,PERIOD_M15,6,0,MODE_EMA,PRICE_CLOSE);  
  CopyBuffer(ma_handle,0,0,4,ma);

 

 

Значения в отладчике: 

ma_handle = 10

ma[0] = 9.881312916824931e-324 

 

Что-то неладное с историей. Нули только при тесте на исторических данных. При тесте на реальных данных значения вполне адекватные.

Как в пятом закачать новую историю? 

 
a_khl:

Что-то неладное с историей. Нули только при тесте на исторических данных. При тесте на реальных данных значения вполне адекватные.

Как в пятом закачать новую историю? 

Ничего качать не нужно. Пример работы с индикатором iMA:
//+------------------------------------------------------------------+
//|                                                          iMA.mq5 |
//|                              Copyright © 2016, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2016, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property description "Receiving values of the Moving Average indicator on bars number: \"0\", \"1\" and \"2\""
#property version   "1.000"
//---
int    handle_iMA;                           // variable for storing the handle of the iMA indicator
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- create handle of the indicator iMA
   handle_iMA=iMA(Symbol(),Period(),6,0,MODE_EMA,PRICE_CLOSE);
//--- if the handle is not created
   if(handle_iMA==INVALID_HANDLE)
     {
      //--- tell about the failure and output the error code
      PrintFormat("Failed to create handle of the iMA indicator for the symbol %s/%s, error code %d",
                  Symbol(),
                  EnumToString(Period()),
                  GetLastError());
      //--- the indicator is stopped early
      return(INIT_FAILED);
     }
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   Comment("");
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//--- get value iMA in bar 0
   double ma_0=iMAGet(0);
//--- get value iMA in bar 1
   double ma_1=iMAGet(1);
//--- get value iMA in bar 2
   double ma_2=iMAGet(2);
//---
   string text="";
   text+="bar 0: "+DoubleToString(ma_0,Digits()+1)+"\n"+
         "bar 1: "+DoubleToString(ma_1,Digits()+1)+"\n"+
         "bar 2: "+DoubleToString(ma_2,Digits()+1);

   Comment(text);
  }
//+------------------------------------------------------------------+
//| Get value of buffers for the iMA                                 |
//+------------------------------------------------------------------+
double iMAGet(const int index)
  {
   double MA[1];
//--- reset error code
   ResetLastError();
//--- fill a part of the iMABuffer array with values from the indicator buffer that has 0 index
   if(CopyBuffer(handle_iMA,0,index,1,MA)<0)
     {
      //--- if the copying fails, tell the error code
      PrintFormat("Failed to copy data from the iMA indicator, error code %d",GetLastError());
      //--- quit with zero result - it means that the indicator is considered as not calculated
      return(0.0);
     }
   return(MA[0]);
  }
//+------------------------------------------------------------------+
Файлы:
iMA.mq5  7 kb
 

Все неожиданно заработало. Спасибо.

Еще вопрос. Напишу сюда же, чтоб не плодить темы.

При прогоне теста в одних случаях OrderSend проходит нормально, в других пишет, "Invalid request".

При ошибке OrderCheck сообщает что баланс и эквити равны нулю. Что бы это могло быть?

Файлы: