Densità della serie numerica - pagina 4

 

ln(a) è definito come l'area sotto la curva f(x) = 1/x da 1 ad a

Sarà utile?


 
Renat Akhtyamov:

ln(a) è definito come l'area sotto la curva f(x) = 1/x da 1 ad a

Sarà utile?

Come può aiutare?

 
È tutto lì.
Статистические распределения в MQL5 - берем лучшее из R и делаем быстрее
Статистические распределения в MQL5 - берем лучшее из R и делаем быстрее
  • 2016.10.06
  • MetaQuotes Software Corp.
  • www.mql5.com
Рассмотрены функции для работы с основными статистическими распределениями, реализованными в языке R. Это распределения Коши, Вейбулла, нормальное, логнормальное, логистическое, экспоненциальное, равномерное, гамма-распределение, центральное и нецентральные распределения Бета, хи-квадрат, F-распределения Фишера, t-распределения Стьюдента, а также дискретные биномиальное и отрицательное биномиальные распределения, геометрическое, гипергеометрическое и распределение Пуассона. Есть функции расчета теоретических моментов распределений, которые позволяют оценить степень соответствия реального распределения модельному.
 
fxsaber:
È tutto lì.

Quale funzione posso usare per scoprirlo:

1. Numero di gruppi di numeri;

2. La densità di ogni gruppo in relazione all'altro;

3. La densità media dei gruppi in relazione tra loro;

4. La percentuale dei gruppi che riempiono la riga numerica.

 
-Aleks-:

Con quale funzione posso scoprirlo:

Non lo so. Leggi il nome del ramo.
 
fxsaber:
Non lo so. Ho letto il titolo del thread.

Capisco. A quanto pare il titolo del thread non è un buon titolo, perché non va veramente al cuore della questione.

 

Fare un filtro è metà della battaglia. Le critiche al codice, con lo scopo di migliorarlo, sono benvenute!

//+------------------------------------------------------------------+
//|                                             Test_FindOblast'.mq4 |
//|                        Copyright 2017, MetaQuotes Software Corp. |
//|                            https://www.mql5.com/ru/users/-aleks- |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link      "https://www.mql5.com/ru/users/-aleks-"
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   int massivSize=19; //размер массива  
   double Digit[19]=
     {
      10,
      20,
      30,
      40,
      50,
      51,
      52,
      53,
      54,
      60,
      70,
      80,
      120,
      150,
      190,
      210,
      223,
      232,
      250,
      260
     };
   double summDelta[19-1];
   int N=massivSize-1;//Количество оставшихся цифровых значений
   double avrMass=0;//Среднее значение массива дельт
   int SizeMass=0;//Узнаем размер массива
   int SizeMassDigit=0;//Узнаем размер массива

//-Фильтр
//1. Суммируем  последовательно две дельты и умножаем значение на два
   for(int i=1;i<massivSize;i++)
     {
      summDelta[i-1]=((Digit[i]-Digit[i-1])+(Digit[i+1]-Digit[i]))*2;
     }
   for(int i=0;i<massivSize-1;i++) printf("summDelta[%d] = %G",i,summDelta[i]);

//3. Составляем новый числовой ряд, если значение меньше среднего значения
//4. Повторяем пункт 2-3 пока числовой ряд не будет меньше половины первоначального ряда
   for(int Z=0;N>massivSize/2;Z++)
     {
      SizeMass=ArraySize(summDelta);//Узнаем размер массива
      SizeMassDigit=ArraySize(Digit);//Узнаем размер массива      
      avrMass=0;
      int NOL=0;
      int CalcZero=0;

//2. Находим среднее значение получившегося числового ряда
      for(int i=0;i<SizeMass;i++)
        {
         if(summDelta[i]!=0)avrMass=avrMass+summDelta[i];
         else NOL++;
        }
      avrMass=avrMass/(SizeMass-NOL);
      Print("Среднее значение получившегося числового ряда ",Z,"=",avrMass);

//Обнуляем отфильтрованные значения массива summDelta
      for(int i=0;i<SizeMass;i++)
        {
         if(summDelta[i]>avrMass)
           {
            summDelta[i]=0;
            N--;
           }
        }
      for(int i=0;i<SizeMass;i++) printf("Обнуление summDelta[%d] = %G",i,summDelta[i]);

//Обнуляем отфильтрованные значения массива SizeMassDigit
      for(int i=0;i<SizeMassDigit;i++)
        {
         if(i==0)
           {
            if(summDelta[i]!=0) Digit[i]=Digit[i];
            else Digit[i]=0;
           }
         if(i==1)
           {
            if(summDelta[i-1]!=0 || summDelta[i]!=0) Digit[i]=Digit[i];
            else Digit[i]=0;
           }
         if(i>1 && i<SizeMass)
           {
            if(summDelta[i-2]!=0 || summDelta[i-1]!=0 || summDelta[i]!=0) Digit[i]=Digit[i];
            else Digit[i]=0;
           }
         if(i==SizeMass-1+1) //Предпоследняя ячейка
           {
            if(summDelta[i-1-1]!=0 || summDelta[i-1-2]!=0) Digit[i]=Digit[i];
            else Digit[i]=0;
           }
         if(i==SizeMass-1+2) //Последняя ячейка
           {
            if(summDelta[i-1-2]!=0) Digit[i]=Digit[i];
            else Digit[i]=0;
           }
        }
      for(int i=0;i<SizeMassDigit;i++) printf("Обнуление Digit[%d] = %G",i,Digit[i]);
     }

   SizeMass=ArraySize(summDelta);//Узнаем размер массива
   SizeMassDigit=ArraySize(Digit);//Узнаем размер массива      
   avrMass=0;
   int NOL=0;
   int CalcZero=0;

//Удаление обнуленных данных массива summDelta
   for(int i=0;i<SizeMass;i++)
     {
      if(summDelta[i]!=0)
        {
         ArrayCopy(summDelta,summDelta,i-CalcZero,i,1);
        }
      else CalcZero++;
     }

//Удаление обнуленных данных массива Digit
   CalcZero=0;
   for(int i=0;i<SizeMassDigit;i++)
     {
      if(Digit[i]!=0)
        {
         ArrayCopy(Digit,Digit,i-CalcZero,i,1);
        }
      else CalcZero++;
     }

   for(int i=0;i<SizeMass;i++) printf("До обрезания массива summDelta[%d] = %G",i,summDelta[i]);
   for(int i=0;i<SizeMassDigit;i++) printf("До обрезания массива Digit[%d] = %G",i,Digit[i]);

   SizeMass=ArraySize(summDelta);//Узнаем размер массива
   SizeMassDigit=ArraySize(Digit);//Узнаем размер массива

   Print("N=",N);
   if(N!=0)
     {
      ArrayResize(summDelta,N,0);
      for(int i=0;i<N;i++) printf("summDelta[%d] = %G",i,summDelta[i]);
      ArrayResize(Digit,SizeMassDigit-CalcZero,0);
      for(int i=0;i<SizeMassDigit-CalcZero;i++) printf("Digit[%d] = %G",i,Digit[i]);
     }
   else
     {
      for(int i=0;i<N;i++) printf("summDelta[%d] = %G",i,summDelta[i]);
      for(int i=0;i<SizeMassDigit-CalcZero;i++) printf("Digit[%d] = %G",i,Digit[i]);
      return;
     }

   SizeMass=ArraySize(summDelta);//Узнаем размер массива
   avrMass=iMAOnArray(summDelta,0,SizeMass,0,0,0);
   Print("Среднее значение получившегося числового ряда=",avrMass);

//-Основной алгоритм
//1. Находим разницу между числами - это как раз их близость друг от друга.

//2. Если число меньше среднего значения дельт, получившихся из п.1, то - 1, а если нет - 0.

//3. Если значение из п.2 равно 1, то суммируем значение с предыдущим итогом, если нет - 0.

//4. Находим максимальное значение из пункта 3.

//5. Определяем диапазон - находим значение из пункта 4 и ищем вверх из пункта 3 число с нулевым значением, потом увеличиваем найденное число на единицу.
//Таким образом мы получаем диапазон чисел, плотность которых наибольшая по отношению к другим.
  }
//+------------------------------------------------------------------+
 
-Aleks-:

Creare un filtro è metà della battaglia. Le critiche al codice, per migliorarlo, sono benvenute!

Fatto un filtro, descrivere le sue caratteristiche.

Cosa criticare - la qualità del codice o la qualità del filtro?

 
Vladimir Suslov:

Hai fatto un filtro, descrivi le sue caratteristiche.

Cosa criticare - la qualità del codice o la qualità del filtro?

Descrizione del filtro qui https://www.mql5.com/ru/forum/163871/page3#comment_3940913

Criticate il codice o l'idea - sono felice di comunicare su questo argomento.

Плотность числового ряда
Плотность числового ряда
  • www.mql5.com
Предлагаю обсудить алгоритмы и методы нахождения плотности чисел, если известны эти числа...
 
-Aleks-:

Descrizione del filtro qui https://www.mql5.com/ru/forum/163871/page3#comment_3940913

Criticate il codice o l'idea - sono felice di avere qualsiasi comunicazione sull'argomento.

> Sto testando un tale algoritmo per filtrare i dati prima dell'elaborazione:

> 1. Somma i due delta in sequenza e moltiplica il valore per due

> 2. troviamo il valore medio della serie numerica risultante

questo è un gioco da ragazzi.

Il punto 1 è (SMA 2) * 4
punto 2 - si ottiene il valore medio della "serie numerica risultante" di quale lunghezza?

Motivazione: