Teoría de los flujos aleatorios y FOREX - página 59

 
AlexEro >> :


>> TIENES QUE CAMBIAR TU AVATAR.

 
begemot61 >> :

¡¡¡+10!!!

Es mejor conducir un carro. Es más saludable y no hay necesidad de carreteras normales.

Resulta que tampoco utiliza los teléfonos, porque el canal de frecuencia de tono le viene mal (aunque probablemente no haya ningún sitio al que llamar desde Kanatchikovskaya Dacha)

 

Los expertos se preocupan por los daños en la audición causados por los reproductores de MP3

http://www.smh.com.au/news/digital-music/turn-it-down/2007/01/04/1167777193761.html?from=rss

 
Bueno, era necesario encontrar no algo bueno y útil, sino desenterrar tal ...

Le sugiero que lea a Malakhov. Hay un montón de cosas interesantes para ti, adelante...

 

timbo писал(а) >>

Se crea una estrategia rentable sobre un proceso aleatorio estacionario a la cuenta de uno.

Lo dices de una sola vez.
Por favor, no seas perezoso y escribe un script en mql que simule una estrategia ganadora en un proceso con distribución normal.
Desde que trabajo con esto, siempre he visto que no es una tarea trivial en absoluto. Por regla general, al intentar obtener una ganancia mediante un proceso estacionario obtenemos uno de estos dos resultados: o bien la expectativa matemática de la operación = 0 o los beneficios son tan pequeños que es mejor que guarde mi dinero en el banco. Creo que el problema puede resolverse para que las ganancias sean al menos algo perceptibles, pero no es fácil.

Al mismo tiempo me gustaría dirigirme a la gente: ¿Alguien tiene una función que devuelva un valor con distribución normal en un rango (0,1)? Ayer maté todo el día, pero aún no he descubierto cómo implementarlo en mql.

 
benik писал(а) >>

También me gustaría preguntar a la gente: ¿alguien tiene una función que devuelva un valor con distribución normal en el rango (0,1)? Ayer maté todo el día, pero aún no he descubierto cómo implementarlo en mql.

La función MQL MahtRand() permite hacerlo fácilmente. Como sabes, devuelve un entero pseudoaleatorio con una distribución uniforme en el rango de 0 a 32767. Y la F.D.P. de la distribución normal asigna el eje numérico [0, inf.] al intervalo [0, 1]. Por lo tanto, para obtener un valor normalmente distribuido, sólo hay que tomar un mapeo inverso del intervalo [0, 1] al eje Oh. La única cuestión es que el argumento se elige al azar. Para esto se utiliza MahtRand().

Es decir, primero se carga una tabla de valores P.D.F. de la distribución normal en el programa numéricamente como [x, F(x)].

A continuación, se establece una función que mapea uniformemente [1, 32767] a (0, 1), f(x) = x/32768. Como puede ver, los valores 0 y 1 están excluidos del intervalo. Por lo tanto, el valor x=0 también debe ser omitido. Estos efectos marginales pueden contabilizarse de diferentes maneras, pero son de poca importancia.

Ahora genere una serie pseudo-aleatoria con MahtRand(), mapee cada uno de los valores resultantes a un intervalo unitario, y usando ese punto como el valor de la F.D.P. de la distribución normal F(x), encuentre el argumento x correspondiente. Eso es todo. Se trata de un valor con distribución normal.

 

Yurixx писал(а) >>


Sí, es una opción. Pero igual me gustaría hacer una función independiente en mql. Sin cargar valores aleatorios desde el exterior.
Por lo que sé, la distribución normal se puede obtener fácilmente a partir de la uniforme tomando la función inversa de Laplace del valor uniforme en el intervalo (0,1).
Ríete todo lo que quieras, pero tengo un problema con tomar la función inversa de Laplace de MathRand()/32768.

Así que aquí hay un script, que por idea debería dar salida al archivo "RandN(0-1).csv" ese valor muy normal en el intervalo (0,1).

int start()
  {
//----
      string FileName = "RandN(0-1).csv";
      int handle = FileOpen ( FileName, FILE_CSV| FILE_WRITE);
      MathSrand(GetTickCount());
      for (int i=1; i<=32768; i++)
      {
         double val = RandN(0,1);
         FileWrite( handle, val);
      }
//----
   return(0);
  }
//+------------------------------------------------------------------+

   double RandN(int a, int sigma)
   {
      double pi = 3.14159265;
      double exp = 2.71828183;
      double x = MathRand()/32768.0;
      double pow = -(MathPow( x- a,2.0)/(2*MathPow( sigma,2.0)));
      double f = (1/( sigma*MathSqrt(2* pi)))*MathPow(exp,pow);
      return ( f);
   }
Ciertamente, da salida a algunas tonterías, pero ya no tengo fuerzas para mejorarla. Si alguien tiene tiempo y ganas, puede mejorarlo. El error aquí es que la función RandN() calcula la densidad de la distribución en lugar de la función de Laplace. Si alguien no tiene problemas para calcular la integral de esta función, por favor, compártalo con el público. Ahora me resulta difícil pensar cómo calcular la integral en mql.
 

Benik, hay algo aquí. ¿Puedes descubrirlo por ti mismo?

 
Gracias, voy a echar un vistazo. Sólo que hoy no lo haré bien :) Mi cabeza ya está llena. Lo intentaré mañana. <br / translate="no">
 
Ah, hay una función preparada para una distribución normal. Sí, gracias por eso.