Обсуждение статьи "Статистические распределения в MQL5 - берем лучшее из R и делаем быстрее" - страница 14

 
Вопрос к разработчику, а почему мат.функции (в файле Math.mqh) не завёрнуты в класс? Может так они быстрее работают?
 

Это MQL5 библиотека без поддержки MQL4.

Классы в этой мат библиотеке не нужны. 

 
Renat Fatkhullin:

Это MQL5 библиотека без поддержки MQL4.

Но пашет на 99% в MQL4, как и GraphPlot. Было бы 100%, если бы исправили баг в MQL4 - no one of the overloads can be applied to the function call.
 
Тема MQL4 и МТ4 закрыта. Там никаких движений или доработок не будет.
 
fxsaber:
Но пашет на 99% в MQL4, как и GraphPlot. Было бы 100%, если бы исправили баг в MQL4 - no one of the overloads can be applied to the function call.

Посмотрел внимательно, а это не баг MQL4, а баг MQL5!

//+------------------------------------------------------------------+
//| MathLog1p                                                        |
//+------------------------------------------------------------------+
//| The function calculates log(1+x) for the elements from the array.|
//|                                                                  |
//| Arguments:                                                       |
//| array[]     : Array with values                                  |
//| result[]    : Output array with calculated values                |
//|                                                                  |
//| Return value: true if successful, otherwise false                |
//+------------------------------------------------------------------+
bool MathLog1p(const double &array[],double &result[])
  {
   int size=ArraySize(array);
   if(size==0)
      return(false);
//--- prepare target array
   if(ArraySize(result)<size)
      if(ArrayResize(result,size)!=size)
         return(false);
//--- calculate values
   for(int i=0; i<size; i++)
      result[i]=MathLog1p(array[i]);
//---
   return(true);
  }
//+------------------------------------------------------------------+
//| MathLog1p                                                        |
//+------------------------------------------------------------------+
//| The function calculates log(1+x) for the elements from the array.|
//|                                                                  |
//| Arguments:                                                       |
//| array[]     : Array with values                                  |
//|                                                                  |
//| Return value: true if successful, otherwise false                |
//+------------------------------------------------------------------+
bool MathLog1p(double &array[])
  {
   int size=ArraySize(array);
   if(size==0)
      return(false);
//--- calculate values
   for(int i=0; i<size; i++)
      array[i]=MathLog1p(array[i]);
//---
   return(true);
  }

MQL4 правильно ругается - no one of the overloads can be applied to the function call. А MQL5 молчит при явной ошибке. @Renat Fatkhullin, баг? 

 
fxsaber:
MQL4 правильно ругается - no one of the overloads can be applied to the function call. А MQL5 молчит при явной ошибке.

Это не ошибка. В MQL5 эти функции есть.


 
Quantum:

Это не ошибка. В MQL5 эти функции есть.

Спасибо! А я, как дурак, ALT+G жму...
 

Здравствуйте,
столкнулся с проблемой при вычислении квантиля гамма-распределения
в R:
> qgamma(0.05,2,scale=1)
[1] 0.3553615
> qgamma(0.05,10,scale=1)
[1] 5.425406

в mql5:

#include <Math\Stat\Gamma.mqh>
void OnStart()
  {
   int ner;
   double q=MathQuantileGamma(0.05,2,1,ner);
   if(!MathIsValidNumber(q)) {Print("Error ",ner); return;}
   Print(q);
   q=MathQuantileGamma(0.05,10,1,ner);
   if(!MathIsValidNumber(q)) {Print("Error ",ner); return;}
   Print(q);
  }

результаты:
0.3553615106986621
Error 4

build 1596

 
Alexey Nikolaev:

Здравствуйте,
столкнулся с проблемой при вычислении квантиля гамма-распределения

Добрый день, спасибо за сообщение.

Ошибка 4 означает проблемы со сходимостью в алгоритме обратных итераций Ньютона, который используется для нахождения квантилей. Будем разбираться.

 

Спасибо,

на всякий случай (вдруг это имеет значение):

MT5 у меня работает посредством wine в ubuntu 14

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