una estrategia de negociación basada en la teoría de las ondas de Elliott - página 34

 
He derivado un sistema de ecuaciones para encontrar los coeficientes de una parábola utilizando el método de los mínimos cuadrados. ¿Quién se acuerda del gobernante? ¿O tengo que entrar yo mismo en los determinantes... <br / translate="no">

Aquí se presenta un algoritmo para resolver un sistema de ecuaciones lineales y su implementación en forma de regresión polinómica.
Si m=1, es una línea,
con m=2 es una parábola,
si m=3, hay un cubo, y así sucesivamente.
//--------------------------------
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 LightSkyBlue
//-----------------------------------
extern double hours = 24;
extern int m = 2;
extern int i0 = 0;
//-----------------------
double fx[];
double a[10,10],b[10],x[10],sx[20];
double sum; 
int p;
int nn;
//*******************************************
int init() 
{
   IndicatorShortName("at_PR (Din)");
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,fx);
   p=hours*60/Period(); 
   nn=m+1; 
   return(0);
}
//**********************************************************
int start()
{ 
  int i,n,k;
  sx[1]=p+1;
  SetIndexDrawBegin(0,Bars-p+i0);
  //----------------------sx---------------------
  for(i=1; i<=nn*2-2; i++) 
  {
    sum=0.0; 
    for(n=i0; n<=i0+p; n++) {sum+=MathPow(n,i);} 
    sx[i+1]=sum;
  }  
  //----------------------syx--------------------
  for(i=1; i<=nn; i++) 
  {
    sum=0.0; 
    for(n=i0; n<=i0+p; n++) 
    {
      if (i==1) sum+=Close[n]; 
      else 
      sum+=Close[n]*MathPow(n,i-1);
    } 
    b[i]=sum;
  } 
  //===============Matrix========================
  for(int j=1; j<=nn; j++) 
  {
    for(i=1; i<=nn; i++) 
    {
      k=i+j-1; 
      a[i,j]=sx[k];
    }
  }  
  //===============Gauss=========================
  af_Gauss(nn,a,b,x);
  //=============================================
  for (i=i0; i<=i0+p; i++) 
  {
    sum=0; 
    for(k=1; k<=m; k++) sum+=x[k+1]*MathPow(i,k); 
    fx[i]=x[1]+sum;
  } 
  //-------------------------------------------------------------
  return(0);
}
//*************************************************************** 
void af_Gauss(int n, double& a[][],double& b[], double& x[])
{
  int i,j,k,l;
  double q,m,t;

  for(k=1; k<=n-1; k++) 
  {
    l=0; 
    m=0; 
    for(i=k; i<=n; i++) 
    {
      if (MathAbs(a[i,k])>m) {m=MathAbs(a[i,k]); l=i;}
    } 
    if (l==0) return(0);   

    if (l!=k) 
    {
      for(j=1; j<=n; j++) 
      {
        t=a[k,j]; 
        a[k,j]=a[l,j]; 
        a[l,j]=t;
      } 
      t=b[k]; 
      b[k]=b[l]; 
      b[l]=t;
    }  

    for(i=k+1;i<=n;i++) 
    {
      q=a[i,k]/a[k,k]; 
      for(j=1;j<=n;j++) 
      {
        if (j==k) a[i,j]=0; 
        else 
        a[i,j]=a[i,j]-q*a[k,j];
      } 
      b[i]=b[i]-q*b[k];
    }
  }  
  
  x[n]=b[n]/a[n,n]; 
  
  for(i=n-1;i>=1;i--) 
  {
    t=0; 
    for(j=1;j<=n-i;j++) 
    {
      t=t+a[i,i+j]*x[i+j]; 
      x[i]=(1/a[i,i])*(b[i]-t);
    }
  }
  return;
}
//********************************************************************** 


A partir de ahí, puedes construir tanto los niveles de RMS como los de probabilidad y optimizar la longitud y la extrapolación.
Aunque con una extrapolación fiable aún no lo tengo todo claro, ¿alguien me puede iluminar?
¿Si alguien le prestara atención? ¿O tal vez lo saco a relucir para nada?

 
He derivado un sistema de ecuaciones para encontrar los coeficientes de una parábola utilizando el método de los mínimos cuadrados. ¿Quién se acuerda del gobernante? ¿O tengo que entrar yo mismo en los determinantes...

Rosh, ¿por qué es todo tan complicado? ¿Cómo vas a encontrar los coeficientes si no sabes de antemano que esa muestra concreta contiene lo que necesitas? De hecho, ¡puede hacer que todo sea más sencillo! Vladislav dijo al principio que los errores de aproximación muestran el orden de aproximación. Y ya he escrito sobre ello. Puedo repetirlo una vez más. Si tenemos una ecuación de la siguiente forma: y=ax^2+bx+c, entonces al aproximar la muestra con el canal de regresión lineal y1=b1X+c1 se obtiene realmente el coeficiente b1 igual al coeficiente b de la ecuación inicial. Entonces restando la ecuación de regresión lineal de la primera ecuación obtenemos una ecuación de la forma y=ax^2+c2. Es decir, de esta ecuación se desprende que la parte superior de la parábola se desplazará en c2 contra el eje x. También hay que tener en cuenta que el vértice de la parábola estará en el centro de la muestra. Si tomamos el vértice de la parábola en (0,c2), es decir, el origen de la muestra en el vértice de la parábola, nos encontraremos con la ecuación (y-c2)=ax^2. Pero, por supuesto, no conocemos los parámetros 2x a y c2 en esta ecuación. Pero sí sabemos cómo dependen entre sí c2=y-ax^2. También conocemos los puntos de intersección de la parábola con el eje x. Así que tenemos tres puntos en el eje x - el vértice y la intersección con el eje x, por lo que tenemos que encontrar la parábola deseada. Aquí no veo otra forma de resolver el problema que encontrar por aproximación sucesiva tal a y en consecuencia tal parámetro c2 , en el cual el error RMS de aproximación por una parábola será mínimo. Y entonces por el conocido c2 podemos también obtener el parámetro c de la primera ecuación, debido a lo cual tenemos la ecuación completa de la función cuadrática. Creo que esto es lo que lleva la mayor parte del tiempo de cálculo de Vladislava, ya que todo lo demás puede llevar una parte menos significativa en términos de tiempo de cálculo.
 
Yuri, estás absolutamente molesto por nada. Realmente no entendí su pregunta. Te responderé como has preguntado: para el problema que estás resolviendo, esa es la forma correcta de hacerlo.

Buena suerte y buenas tendencias.
 
Vladislav, en la imagen que has presentado, puedes ver que en el indicador MMLevls_VG el parámetro MMPeriod es 240. ¿Es así? Dices que todo lleva a un gráfico diario. ¿Quizás hay algo que no entiendo?
 
Вывел систему уравнений для нахождения коэ-тов параболы по методу наименьших квадратов. Кто помнит линейку? Или самому придется лезть в детерминанты...

Rosh, ¿por qué es todo tan complicado? ¿Cómo vas a buscar los coeficientes si no sabes de antemano que esa muestra concreta contiene lo que necesitas? De hecho, ¡puede hacer que todo sea más sencillo! Vladislav dijo al principio que los errores de aproximación muestran el orden de aproximación. Y ya he escrito sobre ello. Puedo repetirlo una vez más. Si tenemos una ecuación de la siguiente forma: y=ax^2+bx+c, entonces al aproximar la muestra con el canal de regresión lineal y1=b1X+c1 se obtiene realmente el coeficiente b1 igual al coeficiente b de la ecuación inicial. Entonces restando la ecuación de regresión lineal de la primera ecuación obtenemos una ecuación de la forma y=ax^2+c2. Es decir, de esta ecuación se desprende que la parte superior de la parábola se desplazará en c2 contra el eje x. También hay que tener en cuenta que el vértice de la parábola estará en el centro de la muestra. Si tomamos el vértice de la parábola en (0,c2), es decir el origen de la muestra en el vértice de la parábola trataremos la ecuación (y-c2)=ax^2. Pero, por supuesto, no conocemos los parámetros 2x a y c2 en esta ecuación. Pero sí sabemos cómo dependen entre sí c2=y-ax^2. También conocemos los puntos de intersección de la parábola con el eje x. Así que tenemos tres puntos en el eje x - el vértice y la intersección con el eje x, por lo que tenemos que encontrar la parábola deseada. Aquí no veo otra forma de resolver el problema que encontrar por aproximación sucesiva tal a y en consecuencia tal parámetro c2 , en el que el error RMS de aproximación por una parábola será mínimo. Y entonces por el conocido c2 podemos también obtener el parámetro c de la primera ecuación, debido a lo cual tenemos la ecuación completa de la función cuadrática. Creo que esto es lo que lleva la mayor parte del tiempo de cálculo de Vladislava, ya que todo lo demás puede llevar menos tiempo de cálculo.


No entiendo - cuáles son los problemas. La ecuación de la parábola se busca a partir de las mismas consideraciones que el canal de regresión lineal - a través de MNC. La solución de este sistema de ecuaciones es inequívoca y no requiere iteraciones, se resuelve de frente.
Zi=Deti/Det , donde Zi son los coeficientes de la parábola, Det es el determinante de la matriz, Deti es el determinante de la matriz obtenido al sustituir la columna de términos libres (Ti) en la columna i. Del mismo modo, podemos aplicar el mismo criterio al canal curvilíneo resultante (descrito de forma inequívoca en el futuro): el RMS de toda la muestra en el canal de la parábola no es mayor que el RMS de 2/3 de la muestra. De momento me callo lo de Hurst, porque no tengo respuesta, pero estoy a punto de ponerme a ello :)

HZ Encontré un libro de referencia de matemáticas de 1986, así que me estoy volviendo mucho más inteligente :)
(Kolmogorov o Demidovich habrían sido mejores).
 
Respondo como se me ha preguntado: para el tipo de planteamiento del problema que se está resolviendo, esa es la evaluación correcta.


Gracias, lo entiendo. Aunque no estoy de acuerdo y mantengo mi opinión.
 
He encontrado un libro de referencia de matemáticas de 1986, así que me estoy volviendo más inteligente :)

Es MUY bueno que haya una solución sencilla que no requiera iteraciones. Yo también estoy un poco oxidado con el linal :o(. Tendré que echar un vistazo a algunos libros también. Rosh, si ya lo has resuelto definitivamente, creo que a todos los interesados también les interesará leer la solución completa que ya has esbozado más arriba. ¿Y tal vez incluso se puede hacer un artículo separado en Alpari?
 
Empecé a sacar fotos del libro y luego desistí: la calidad no era buena. Lo encontré a través de Yandex http://www.exponenta.ru/educat/class/courses/la/theme3/theory.asp#4

Y aquí hay un tipo de curso - http://www.exponenta.ru/educat/class/courses/student/la/examples.asp
 
Вывел систему уравнений для нахождения коэ-тов параболы по методу наименьших квадратов. Кто помнит линейку? Или самому придется лезть в детерминанты...

Aquí está el algoritmo para resolver un sistema de ecuaciones lineales y la implementación en forma de regresión polinómica.
Si m=1 - una línea,
a m=2 es una parábola,
Si m=3 - un cubo, etc.


Sí, esto es exactamente lo que quería Solandr. Sin embargo, había una duda: para escribir un código tan complicado tan rápidamente utilizando mis fórmulas, hay que ser un especialista. Pero he mirado el código y tengo mi propio algoritmo, al menos la indexación de los términos de la matriz refleja mi sistema de ecuaciones. Ahora veo, que ANG3110 se ha comido un perro en esas cosas (una rama en una araña recuerdo) :)
 
Ahora veo que ANG3110 se ha comido el perro en esas cosas (rama en la araña recuerdo) :)

Efectivamente, ¡¡¡lo apoyo totalmente!!!
¡Muy bonito y un indicador necesario!
ANG3110, ¿podrías explicar el código? Es difícil distinguirlo de entrada. ¿Tal vez tenga su propio blog en el foro, donde se escribe todo sobre este indicador en detalle? Gracias de antemano por la información.