double

 

 Парни, не понимаю,что происходит? 

Есть функция:

//+------------------------------------------------------------------+
//| MACD_current                                                     |
//+------------------------------------------------------------------+
double MACD_current()
  {
   double  buff_MACD_main[];           // MACD for indicator main buffer
   double  macd_current=0;
   ArraySetAsSeries(buff_MACD_main,true);

      if(CopyBuffer(handle_macd,0,0,2,buff_MACD_main)<2)
        {
         Print("Error  copying of data(macd_current) ",GetLastError());
        }
      else
   if(macd_current!=buff_MACD_main[0]) macd_current=buff_MACD_main[0];

   return(macd_current);
  }    

 функция возвращает значение значительно больше ноля, те умножает значение индикатора на тысячи. Я забил функцию в Comment, вижу перед точкой значение больше ноля.Хендл в OnInit.

Что я делаю не так? Pls!

 
Vitaly Stepanov:

 Парни, не понимаю,что происходит? 

Есть функция:

 функция возвращает значение значительно больше ноля, те умножает значение индикатора на тысячи. Я забил функцию в Comment, вижу перед точкой значение больше ноля.Хендл в OnInit.

Что я делаю не так? Pls!

Что должна возвращать функция?

У вас  есть   else if, распринтуйте их.

Это тоже будет не лишним: { }

 
//+------------------------------------------------------------------+
//| MACD_current                                                     |
//+------------------------------------------------------------------+
double MACD_current()
  {
   double  buff_MACD_main[];           // MACD for indicator main buffer
   double  macd_current=0;
   ArraySetAsSeries(buff_MACD_main,true);

      if(CopyBuffer(handle_macd,0,0,2,buff_MACD_main)<2)
        {
         Print("Error  copying of data(macd_current) ",GetLastError());
        }
      else
      {
   if(macd_current!=buff_MACD_main[0]) macd_current=buff_MACD_main[0];
   Print("buff_MACD_main[0]= ",buff_MACD_main[0]);
   }
   return(macd_current);
  }    
Не вполне понял, но вот. Возвращает то же



 
2018.09.11 18:37:20.736 LineEXT2 (EURUSD.m,H1) buff_MACD_main[0]= -6.136470089623813e-05

Глюк?
 
Vitaly Stepanov:
2018.09.11 18:37:20.736 LineEXT2 (EURUSD.m,H1) buff_MACD_main[0]= -6.136470089623813e-05

Глюк?

Индикатор стандартный? Покажите создание хэндла.

 
Vitaly Stepanov:
2018.09.11 18:37:20.736 LineEXT2 (EURUSD.m,H1) buff_MACD_main[0]= -6.136470089623813e-05

Глюк?

Число как число. Прикрепите индикатор на график да посмотрите.

-6.136470089623813e-05 = -0.00006136470089623813 

Аж целых 6 пунктов пятизнаковых.

 
Vitaly Stepanov:
2018.09.11 18:37:20.736 LineEXT2 (EURUSD.m,H1) buff_MACD_main[0]= -6.136470089623813e-05

Глюк?
Посмотрите в справке, думаю, найдете ответ уже во второй табличке с примерами.
 
Vasiliy Pushkaryov:
Посмотрите в справке, думаю, найдете ответ уже во второй табличке с примерами.

понял! нормализовал.

Нафига такие сложности?

 
Vitaly Stepanov:

понял! нормализовал.

Нафига такие сложности?

Это основы. В справке так и написано: Основы языка - Типы данных - Вещественные типы (double, float) 

 
Vladimir Karputov:

Это основы. В справке так и написано: Основы языка - Типы данных - Вещественные типы (double, float) 

Ну , Вы меня просвятили.

Благодарю!

Просто я не математик, для меня эти Е2-Е4, темный лес. Хорошо если, бы все просто в цифре. Всем понятной.
 
Vitaly Stepanov:

понял! нормализовал.

Нафига такие сложности?

Здесь эта нормализация и вовсе ненужна.

Причина обращения: