Discusión sobre el artículo "¿Qué son las tendencias y cómo es la estructura de los mercados: de tendencia o plana?" - página 8

 
Maxim Dmitrievsky:

Iría al despacho del viceministro para un aprendizaje de dos meses como ese.

Me convertiría en presidente por eso.) Para aprender a ganar dinero prácticamente sin riesgo.

 

¿Puede decirme qué varianza toma para el gráfico de referencia? La expectativa matemática es clara - 0.

 
Alexey Klenov:

¿Puede decirme qué varianza toma para el gráfico de referencia? La expectativa matemática es claramente 0.

No he calculado la varianza para el gráfico de referencia. Construí el punto de referencia utilizando la tabla, una parte de la cual se muestra en la Figura 4. He adjuntado un archivo Excel al artículo, que contiene un ejemplo de cálculo de la tabla.
El punto de referencia se construye con ayuda de la combinatoria. Es decir, se calcula el número de combinaciones y la probabilidad de que salga cada combinación.
 

No puedo repetir la forma de la curva teórica

Si tomo sigma 3,2, caigo aproximadamente en altura, pero no llego a las caídas (en este caso +-12).

Si tomo sigma 5,8, caigo en la zona de (+-20), pero no caigo en altura

La suma de todas las Y es igual a 100000 en ambos casos.

Para generar una variable aleatoria según la ley normal, he tomado una función de la biblioteca estándar

MathRandomNormal

Aparentemente el método combinatorio no produce una variante de la desviación estándar según la ley normal.

....Quería repetirlo en MQL sin factoriales.

 
Alexey Klenov:

No se reproduce la forma de la curva teórica

Si tomo sigma 3,2, caigo aproximadamente en altura, pero no llego a las caídas (en este caso +-12).

Si tomo sigma 5,8, caigo en la región de (+-20), pero no caigo en altura

La suma de todas las Y es igual a 100000 en ambos casos.

Para generar una variable aleatoria según la ley normal tomé una función de la biblioteca estándar.

MathRandomNormal

Aparentemente, el método combinatorio no produce una variante de la desviación típica según la ley normal.

....Quería repetirlo en MQL sin factoriales.

En la Figura 6, he medido la forma de la distribución para el paseo al azar, creo que para 100.000 muestras. Los histogramas blancos son paseo aleatorio. Creo que he adjuntado un archivo al artículo, debe ser llamado 50% o algo así. Ahí generé aleatoriamente 0 y 1 Si era 0, entonces el valor anterior menos 1, si era 1, entonces el valor anterior más 1. Así es como se construye el gráfico de vagabundeo aleatorio. Sólo mide los parámetros sigma en él y úsalo.
 
Alexey Klenov:

Para generar una variable aleatoria según la ley normal, tomé una función de la biblioteca estándar.

MathRandomNormal

Aparentemente el método combinatorio no produce una variante de desviación estándar según la ley normal.

....I quería repetirlo en MQL sin factoriales.

Ejemplo para la sección Distribución normal?

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

Ejemplo para la sección Distribución normal?

La base se tomó de este mismo ejemplo.

 
Maxim Romanov:
En la figura 6, he medido para el paseo aleatorio la forma de la distribución, más o menos para 100.000 muestras. Los histogramas blancos son paseo aleatorio. Creo que adjunté un archivo al artículo, debe llamarse 50% o algo así. Ahí generé aleatoriamente 0 y 1 Si era 0, entonces el valor anterior menos 1, si era 1, entonces el valor anterior más 1. Así es como se construye el gráfico de vagabundeo aleatorio. Sólo tienes que medir los parámetros sigma en él y usarlo.

Entiendo que se obtiene una doble cuantificación de la serie.

La primera vez cuantificas por +1 -1 y la segunda cuantificas estas "barras renko" en gráficas de 40 barras.

Igual obtienes esta forma de "distribución normal".

¿No sería más lógico cortar la primera vez como hiciste en barras renko y luego seguir el principio de las inversiones direccionales?

Por ejemplo tu figura 1

+3 -1 -1 +2 -2 -2 +1 -4 +2 -2 -2 +4 y así sucesivamente.

como resultado, no habrá valores en el punto cero en X (aunque se puede considerar la inversión como +1 en x0).

y ya realizamos combinatoria con esta serie.

entonces podemos tomar como referencia la distribución normal de MO 0 y sigma 1.

aunque sigo dándole vueltas...

 
Alexey Klenov:

La base se tomó de este mismo ejemplo.

Así que muéstrame el código

 
//+------------------------------------------------------------------+
//|testNormal.mq5
//|AlexKl
//|https://www.mql5.com
//+------------------------------------------------------------------+
#property copyright "AlexKl"
#property link      "https://www.mql5.com"
#property version   "1.00"
#property script_show_inputs
//+------------------------------------------------------------------+
//| Función de inicio del programa de script|
//+------------------------------------------------------------------+
#include <Graphics\Graphic.mqh>
#include <Math\Stat\Normal.mqh>
#include <Math\Stat\Math.mqh>
input double mean_value=0;  // expectativa matemática (media)
input double std_dev=1;     // desviación típica (desviación estándar)
void OnStart()
  {
   long chart=0;
   string name="GraphicNormal";
   double  dNormalRandom[];   // números aleatorios de coma flotante
   int iNormalRandom[];       // números redondeados de la matriz dNormalRandom
   int n=100000;       // número de valores de la muestra
   double x[];          // centros de intervalo del histograma
   double y[];          // número de valores de la muestra que entran en el intervalo
   double max,min;      // valores máximo y mínimo de la muestra
// generar una matriz de variables aleatorias según la ley normal
   MathRandomNormal(mean_value,std_dev,n,dNormalRandom);

   ArrayResize(iNormalRandom,ArraySize(dNormalRandom));
// rellenar la matriz de números redondeados a partir de la matriz de números aleatorios de tipo double
   for(int i=0; i<ArraySize(dNormalRandom); i++)
     {
      iNormalRandom[i]=(int)round(dNormalRandom[i]);
     }
   CalculateHistogramArrayItsMy(iNormalRandom,x,y);


//Dibujo
   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);
//--- trazar todas las curvas
//--- y ahora vamos a trazar la curva de densidad de distribución teórica
   graphic.CurveAdd(x,y,CURVE_LINES,"Theory");

//--- trazar todas las curvas
   graphic.CurvePlotAll();
   graphic.Update();
   int summ=0;
   for(int i=0; i<ArraySize(y); i++)
     {
      summ+=y[i];
     }
   Print("Importe total por 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);
  }
//+------------------------------------------------------------------+