Обсуждение статьи "Что такое тренды и какова структура рынков — трендовая или флэтовая?" - страница 8

 
Maxim Dmitrievsky:

я ради такого 2-х мес. обучения в замминистры пойду

да я бы президентом ради этого стал) чтобы практически не рискуя научиться зарабатывать

 

Скажите пожалуйста какую дисперсию Вы берете для эталонного графика? Математическое ожидание понятно - 0.

 
Alexey Klenov:

Скажите пожалуйста какую дисперсию Вы берете для эталонного графика? Математическое ожидание понятно - 0.

Я дисперсию не считал для эталона. Строил эталон по таблице, часть которой показана на рисунке 4 и к статье приложил файл эксель, в котором пример расчета таблици.
Эталон построен при помощи комбинаторики. То есть посчитано число сочетаний и вероятность выпадения каждого сочетания.
 

Не получается повторить форму теоретической кривой

Если беру сигму 3,2 то примерно падаю по высоте, но не попадаю по спадам (в этом случае +-12)

Если беру сигму 5.8 то попадаю по спадам в район (+-20) но не попадаю по высоте

Сумма всех Y равна 100000 в обоих случаях.

Для генерации случайной величины по нормальному закону взял функцию из стандартной библиотеки.

MathRandomNormal

Видимо методом комбинаторики не получается вариант стандартного отклонения по нормальному закону.

....Хотел повторить в MQL без факториалов.

 
Alexey Klenov:

Не получается повторить форму теоретической кривой

Если беру сигму 3,2 то примерно падаю по высоте, но не попадаю по спадам (в этом случае +-12)

Если беру сигму 5.8 то попадаю по спадам в район (+-20) но не попадаю по высоте

Сумма всех Y равна 100000 в обоих случаях.

Для генерации случайной величины по нормальному закону взял функцию из стандартной библиотеки.

MathRandomNormal

Видимо методом комбинаторики не получается вариант стандартного отклонения по нормальному закону.

....Хотел повторить в MQL без факториалов.

На рисунке 6 я измерял для случайного блуждания форму распределения, вроде для 100 000 выборок. Белые гистограммы это случайное блуждание. Файл я вроде прикладывал к статье, должен называться 50% или как-то так. Там я рандомом генерировал 0 и 1 Если был 0, то предыдущее значение минус 1, если 1, то предыдущее плюс 1. Так построен график случайного блуждания. Измерьте просто на нем параметры сигмы и используйте.
 
Alexey Klenov:

Для генерации случайной величины по нормальному закону взял функцию из стандартной библиотеки.

MathRandomNormal

Видимо методом комбинаторики не получается вариант стандартного отклонения по нормальному закону.

....Хотел повторить в MQL без факториалов.

Пример к разделу  Нормальное распределение ?

Документация по MQL5: Стандартная библиотека / Математика / Статистика / Нормальное распределение
Документация по MQL5: Стандартная библиотека / Математика / Статистика / Нормальное распределение
  • www.mql5.com
//| Script program start function                                    | //|  Calculate frequencies for data set                              |                               //|  Calculates values for sequence generation                       |
 
Rashid Umarov:

Пример к разделу  Нормальное распределение ?

Основу взял именно из этого примера.

 
Maxim Romanov:
На рисунке 6 я измерял для случайного блуждания форму распределения, вроде для 100 000 выборок. Белые гистограммы это случайное блуждание. Файл я вроде прикладывал к статье, должен называться 50% или как-то так. Там я рандомом генерировал 0 и 1 Если был 0, то предыдущее значение минус 1, если 1, то предыдущее плюс 1. Так построен график случайного блуждания. Измерьте просто на нем параметры сигмы и используйте.

Я так понимаю у Вас получается двойное квантование ряда.

Первый раз вы квантуете по +1 -1 а второй раз режите эти "ренко бары" на участки по 40 бар

Возможно у Вас и получается такая форма "нормального распределения"

Не логичнее ли первый раз резать  как у вас на ренко бары а далее уже идти по принципу переворотов направления

Для примера ваш рисунок 1

+3 -1 +2 -2 +1 -4 +2 -2 +4 и так далее

в итоге не получится значений в нулевой точке по X (хотя можно переворот считать как +1 в х0)

и уже проводить комбинаторику с этим рядом.

тогда можно за основу брать нормальное распределение МО 0 и сигмой 1  в качестве эталона

хотя пока обдумываю это...

 
Alexey Klenov:

Основу взял именно из этого примера.

Ну так покажите код

 
//+------------------------------------------------------------------+
//|                                                   testNormal.mq5 |
//|                                                           AlexKl |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "AlexKl"
#property link      "https://www.mql5.com"
#property version   "1.00"
#property script_show_inputs
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
#include <Graphics\Graphic.mqh>
#include <Math\Stat\Normal.mqh>
#include <Math\Stat\Math.mqh>
input double mean_value=0;  // математическое ожиданиe (mean)
input double std_dev=1;     // среднеквадратическоe отклонениe (standard deviation)
void OnStart()
  {
   long chart=0;
   string name="GraphicNormal";
   double  dNormalRandom[];   // случайные числа с плавающей точкой
   int iNormalRandom[];       // округленные числа из массива dNormalRandom
   int n=100000;       // количество значений в выборке
   double x[];          // центры интервалов гистограммы
   double y[];          // количество значений из выборки, попавших в интервал
   double max,min;      // максимальное и минимальное значения в выборке
// генерируем массив случайных величин по нормальному закону
   MathRandomNormal(mean_value,std_dev,n,dNormalRandom);

   ArrayResize(iNormalRandom,ArraySize(dNormalRandom));
// заполняем массив округленных чисел из массива случайных чисел типа double
   for(int i=0; i<ArraySize(dNormalRandom); i++)
     {
      iNormalRandom[i]=(int)round(dNormalRandom[i]);
     }
   CalculateHistogramArrayItsMy(iNormalRandom,x,y);


//Рисуем
   CGraphic graphic;
   if(ObjectFind(chart,name)<0)
      graphic.Create(chart,name,0,0,0,780,580);
   else
      graphic.Attach(chart,name);
   graphic.BackgroundMain(StringFormat("Normal distribution mu=%G sigma=%G",mean_value,std_dev));
   graphic.BackgroundMainSize(16);
//--- plot all curves
//--- а теперь построим теоретическую кривую плотности распределения
   graphic.CurveAdd(x,y,CURVE_LINES,"Theory");

//--- plot all curves
   graphic.CurvePlotAll();
   graphic.Update();
   int summ=0;
   for(int i=0; i<ArraySize(y); i++)
     {
      summ+=y[i];
     }
   Print("Общая сумма по Y " + summ);
  }
//+------------------------------------------------------------------+
bool CalculateHistogramArrayItsMy(const int &data[],double &intervals[],double &frequency[])
  {

   double minv=data[ArrayMinimum(data)];
   double maxv=data[ArrayMaximum(data)];
   int range=maxv-minv;
   ArrayResize(intervals,range+1);
   ArrayResize(frequency,range+1);
   for(int i=0; i<range+1; i++)
     {
      intervals[i]=minv+i;
     }
   for(int i=0; i<ArraySize(data); i++)
     {
      int ii=(MathAbs(minv)+data[i]);
      frequency[ii]+=1.0;
     }
   return (true);
  }
//+------------------------------------------------------------------+