Cálculo del ángulo de inclinación de la línea de tendencia. - página 21

 

Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategias

Cualquier pregunta de los novatos en MQL4 y MQL5, ayuda y discusión de algoritmos y códigos

Nikolai Semko, 2020.10.26 00:34

No hay que tener miedo a la velocidad. Es sólo una condicionalidad para la conversión de tipos.
Como variante de la función de definición de ángulos:

struct PointPriceTime
  {
   double            price;
   datetime          time;
                     PointPriceTime(double p, datetime t) { price=p; time=t; };
   void              Set(double p, datetime t){ price=p; time=t;};
                     PointPriceTime(PointPriceTime &p){ price=p.price; time=p.time; };
                     PointPriceTime() { price=0.0; time=0; };
  };

double Angle(PointPriceTime &p1,PointPriceTime &p2) // возвращает угол в градусах в приведенной системе координат price-price, где по оси X 
  {                                                 // расстояние между x1 и  x2  = N*_Point, где N - количество минутных баров во временном промежутке отрезка. 
   static int tf[9]= {PERIOD_M1,PERIOD_M5,PERIOD_M15,PERIOD_M30,PERIOD_H1,PERIOD_H4,PERIOD_D1,PERIOD_W1,PERIOD_MN1};
   int i=0;
   while(i<9 && SeriesInfoInteger(_Symbol,tf[i],SERIES_FIRSTDATE)>p1.time)
      i++;
   if(i==9)
     {
      Print("Время левой границы вне диапазона исторических данных");
      return DBL_MAX;
     }
   int bar1 = iBarShift(_Symbol,tf[i],p1.time);
   int bar2 = iBarShift(_Symbol,tf[i],p2.time);
   if(bar1==bar2)
      return 0.0;
   return atan((p2.price-p1.price)/((bar1-bar2)*PeriodSeconds(tf[i])*_Point/60))*180/M_PI;
  }

Después de MT5 la sensación de MT4 es simplemente horrible. El acceso a la historia está de alguna manera emasculado. Ni siquiera estoy hablando de las garrapatas.




 
Nikolai Semko:

Y entonces, ¿dónde iría ese "rincón"?

 
Dmitry Fedoseev:

¿Y dónde se pone ese "ángulo"?

Llévalo a un punto por minuto, observa cuánto tiempo y saca conclusiones)

 
Valeriy Yastremskiy:

Llevar a un punto un minuto, ver cuánto tiempo y sacar conclusiones)

¿Cuál es el punto en un minuto? ¿Por qué introducir algo cuando todo está ya reducido a puntos por barra desde hace mucho tiempo?

 
Dmitry Fedoseev:

¿Y por qué en un minuto? ¿Por qué llevar a alguna parte cuando todo ha sido ya llevado a puntos por barra hace mucho tiempo?

cuestión filosófica. Si tengo en cuenta la fractalidad en diferentes plazos a veces estimo la velocidad en barras pero es algo interesante y llega al mismo denominador. No es muy útil, pero es evidente que la velocidad es mayor en los plazos pequeños.

Seguro que tiene algo, no sé cómo decirlo, un reflejo de la dinámica, algo así. La estructura de los movimientos es la misma.

 
Valeriy Yastremskiy:

cuestión filosófica. En la actualidad, la mayoría de los países de la Unión Europea están en proceso de desarrollo. No veo ningún valor, pero es obvio que la velocidad en marcos temporales pequeños es mayor.

Seguro que tiene algo, no sé cómo decirlo, de reflejo de la dinámica. La estructura de los movimientos es la misma.

Puedes fantasear como quieras y sobre lo que quieras. Incluso se puede contar cuántas veces ha ido a orinar el conductor del camión por viaje y añadirlo a la distancia total y maravillarse: oh, se ha convertido en 30 metros más largo.

 
Dmitry Fedoseev:

Puedes fantasear con lo que quieras. Incluso se puede contar cuántas veces ha orinado un camionero por viaje y sumarlo a la distancia total y maravillarse: oh, son 30 metros más.

Yo NO poseo esa franqueza de pensamiento. Voy por el camino difícil. Primero miro lo que puedo medir, calcular y sólo después pienso en lo que puedo hacer con ello.

Pregunta, ¿es fácil calcular hacia la izquierda, desde la barra actual, el final del pasillo? El corredor puede estar en cambios relativos de diferencia de bajas y altas, y se puede calcular la velocidad de bajas y altas, pero es difícil. Me gustaría hacerlo más sencillo.

Un minuto con los extremos.

 

La sencillez es un concepto relativo. ¿Simplicidad en qué sentido? Lo más simple en términos de implementación - sólo un ciclo a través de los últimos compases.

Si es más sencillo en términos de rendimiento... hay muchas preguntas. En este caso, debemos intentar ir de izquierda a derecha, y estar en cada barra sólo una vez. Si es posible. Al menos hay que esforzarse por ello.

 
Dmitry Fedoseev:

La sencillez es un concepto relativo. ¿Simple en qué sentido? Lo más simple en términos de implementación - sólo un ciclo a través de los últimos compases.

Si es más sencillo en términos de rendimiento... hay muchas preguntas. En este caso, debemos intentar ir de izquierda a derecha, y estar en cada barra sólo una vez. Si es posible. Al menos, deberíamos esforzarnos por conseguirlo.

Está claro que debemos hacer un bucle por barras o extremos. Los datos de los extremos están disponibles como número de barra y precio. Qué poner en la condición. Los corredores pueden ser de diferente anchura y pendiente. Por supuesto, si es menos ancho, estaremos en el pasillo, pero es una solución sin salida. Y no puedo hacer una dinámica. Esto es para el primer cálculo, para entender que hay un corredor para la barra actual.

Todavía no pienso en el rendimiento y la optimización.

 
Valeriy Yastremskiy:

Está claro que se trata de un ciclo de barras o extremos. Los datos de los extremos están en forma de número de barra y precio. Qué poner en la condición. Los corredores pueden ser de diferente anchura y pendiente. Por supuesto, si es menos ancho, estaremos en el pasillo, pero es una solución sin salida. Y no puedo hacer una dinámica. Esto es para el primer cálculo, para entender que hay un corredor para la barra actual.

Todavía no estoy pensando en el rendimiento y la optimización.

Podemos calcular una regresión lineal para los máximos y los mínimos. La distancia entre los límites debe medirse en relación con la desviación estándar.

Se puede estimar lo plano que es el canal mediante la correlación de los coeficientes B de los límites superior e inferior. Si se requiere tal precisión.

La pendiente del canal también puede determinarse mediante el coeficiente B.

...

También puede calcular simplemente la media de la diferencia de dos fractales vecinos.