Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 1279

 
leonerd:

Hinca la nariz en un código sencillo que calcula el ángulo de movimiento de los precios. La imagen de abajo lo muestra.


Depende de en qué se midan x (píxeles, barras o tiempo) e y (píxeles o precio).
Y depende de qué tarea: ¿medir el ángulo en el gráfico actual con la escala actual (ancho de barra en píxeles) y el marco temporal? ¿O para medir el ángulo de manera que siga siendo el mismo para cualquier TF y escala?
Diferentes tareas y sistemas de coordenadas: diferentes soluciones.
 
leonerd:

Hinca la nariz en un código sencillo que calcula el ángulo de movimiento de los precios. La imagen de abajo lo muestra.


Bueno, puedes calcularlo con una tangente. Y no necesitas el ángulo en sí, sólo necesitas saber la tangente.

 
Alexey Viktorov:

Y realmente no necesitas un ángulo en sí, sólo necesitas una tangente.

¡Exactamente! Y nuestra tangente se llama: velocidad.

En este ejemplo, el precio ha pasado por 1884 puntos en 39 velas de 1 hora. La velocidad total de esta onda es: 1884/(39/24) = 1159 pips por día.

double interval=double(iBarShift(symbol,frame,start_time)-iBarShift(symbol,frame,finish_time)*PeriodSeconds(frame)/86400;
int distance=MathAbs(finish_price-start_price);
int speed=interval>0?(distance/interval):0;
Y no necesitamos un ángulo, ¿por qué necesitamos un ángulo? Cuando empecemos a estirar o aplanar la gráfica, ¿qué aspecto tendrá entonces el ángulo? Los ángulos se pueden medir cuando los ejes x e y tienen las mismas unidades. Por ejemplo, si tomas un cuaderno con cuadrados, trazas una línea a lo largo de las diagonales de estos cuadrados, obtendrás 45 grados. Y lo que está arriba y lo que está a la derecha son centímetros. Y aquí, ¿a qué equivale un punto de precio? ¿Una hora, un día? No son valores comparables.
 
Aleksei Stepanenko:

¡Exactamente! Y nuestra tangente se llama: velocidad.

En este ejemplo, el precio ha superado los 1.884 puntos en 39 velas de una hora. La velocidad total de esta onda es: 1884/(39/24) = 1159 pips por día.

Y no necesitamos un ángulo, ¿por qué necesitamos un ángulo? Cuando empecemos a estirar o aplanar la gráfica, ¿qué aspecto tendrá entonces el ángulo? Los ángulos se pueden medir cuando los ejes x e y tienen las mismas unidades. Por ejemplo, si coges un cuaderno con cuadrados y trazas una línea a lo largo de las diagonales de estos cuadrados, obtendrás 45 grados. Y lo que está arriba y lo que está a la derecha son centímetros. Y aquí, ¿a qué equivale un punto de precio? ¿Una hora, un día?No son valores comparables.

¿Por qué tenemos que compararlos? Los kilómetros y el tiempo tampoco son comparables, pero eso no impide que contemos la velocidad en km/hora.

Si su tangente es la velocidad, será esa velocidad por unidad de tiempo del periodo del gráfico. Si el precio se ha movido 1884 pips en 39 horas, serán 48 pips por hora. No es necesario convertirlo en días.

Pero también se puede calcular la "aceleración" como una relación entre la velocidad actual y la velocidad de la barra anterior. Y recogiendo varios de estos valores, se puede determinar la aceleración media.

 
Aleksei Stepanenko:

Y aquí, ¿a qué equivale un punto de precio? ¿Una hora, un día? Los valores no son comparables.

Bueno, la distancia también se mide en años luz. Así que no es un problema.
Introduzcamos una velocidad constante. Por ejemplo, 1 _Punto para una barra de 1 minuto y llevar el sistema de coordenadas a un precio en ambos ejes .

Entonces los ángulos serán los mismos en cualquier marco temporal.

Loprincipal es calcular correctamente el número de barras de minutos entrex1y x2.

En este sistema un ángulo de 45 grados significaría que el precio cambia en N*tg(45) =N pips en barras de N minutos y un ángulo de 30 grados significaría que el precio cambia en N*tg(30)=N*0.57735 pips en barras de N minutos.
Es mejor utilizar barras de minutos que de tiempo, ya que hay agujeros de tiempo en forma de fines de semana, baja volatilidad, etc.
 

Estoy 100% de acuerdo, porque el candelabro se puede estirar tanto en horizontal como en vertical. Y debería haber alguna norma para determinar el ángulo (ancho de la vela en píxeles y número de puntos en un píxel).

¿Puedo hacer una pregunta fuera de tema?

¿Cómo puedo convertir correctamente datatime a double para que el compilador no maldiga (es posible la pérdida de datos debido a una conversión incorrecta)?

doble A = Tiempo[1];

Gracias de antemano.

 
Alexey Viktorov:

Si tiene 1884 pips en 39 horas, la velocidad es de 48 pips por hora. Y no es necesario convertirlo en días en absoluto.

Sí, esa es mi suposición. Como hice la velocidad int (es decir, pips enteros), pensé en usar un período más grande, para que las fracciones de un pip en la velocidad no importaran demasiado y pudieran ser descartadas. Así que tengo puntos por día. Esto concuerda con el reloj biológico humano. Cansado, durmió, se levantó por la mañana: "¿Cuál fue la velocidad de ayer? Se ve consistente, así que ese es el estándar que me puse. Y luego, por supuesto, es una cuestión de preferencia personal.


Nikolai Semko:

Bueno, la distancia también se mide en años luz. Así que eso no es un problema.
Introduzcamos una velocidad constante. Por ejemplo, 1 _Punto para una barra de 1 minuto y llevar el sistema de coordenadas a un precio en ambos ejes .

Sí, de nuevo se obtiene la velocidad, sólo que en unidades: puntos por minuto. En cuanto a los fines de semana y los agujeros, lo tomé de la siguiente manera: lo que hay de velas en el gráfico es el intervalo de tiempo, y lo que está ausente (días/horas) no está. Porque si tenemos en cuenta los fines de semana, y el precio se mantiene en ese momento, la velocidad disminuirá notablemente sin ninguna razón. Pero, de nuevo, esto es para cada uno lo suyo:)


Roni Iron:

Cómo convertir correctamente datatime a double, para que el compilador no maldiga (es posible la pérdida de datos debido a una conversión incorrecta).

double A = (double)Time[1];

¿Por qué almacenar el tiempo de los datos en doble? Si almacena diferentes tipos de variables en el mismo array, y las trae aquí y allá, considere reemplazar el array habitual por un array de estructura:


struct My
   {
   datetime time;
   double price;  
   } my[];

int finish=0;
ArrayResize(my,finish+1);
my[finish].time=Time[1];
my[finish].price=Close[1];
 

Muchas gracias.

¿Las estructuras sólo funcionan en mql 5 o ya en mql 4?

 
Sí funcionan en cuatro, es muy conveniente escribir con ellos, claramente.
 
Roni Iron:

Muchas gracias.

¿Las estructuras funcionan sólo en mql 5 o ya en mql 4?

No sólo funcionan las estructuras, sino también la unión.

Razón de la queja: