Deseos para MQL5 - página 99

 
Henry_White >> :

Lo que me gustaría ver en futuras versiones:

  1. Capacidad de ejecutar sus procedimientos fuera del contenido del manejador de ticks (para MT4 esto es start()) (por ejemplo, en una pista separada, para el cálculo de estadísticas, la optimización, etc.),
  2. Las funciones más sencillas para el manejo del ratón. Por ejemplo, en el evento "OnClick" es posible obtener las coordenadas del puntero en la dimensión MT (en X - índice de la barra, en Y - coordenada y de la ventana actual.

1. ¿Qué lo impide ahora?

2. En MQL5, los EAs podrán manejar eventos de ventana (EMNIP).

 
TheXpert >> :

1. ¿Qué es lo que se interpone en este momento?

Pues si sabes cómo, te agradecería mucho que compartieras esta habilidad/conocimiento.

 
TheXpert >> :

2. En MQL5 los Asesores Expertos podrán manejar los eventos de ventana (EMMNIP).

El manejador de eventos ChartEvent sólo estará disponible en los EAs, por cierto... Una discriminación bastante extraña ))) Creo que la necesidad es la misma en los indicadores (los Asesores Expertos no lo necesitan).

 
Henry_White >> :

Bueno, si sabes cómo, te agradecería mucho que compartieras esa habilidad/conocimiento.

No como dos dedos en el asfalto, pero se puede. Conecte la dll, llame a los cálculos en un nuevo hilo - WinAPI ayudará aquí, la terminación por temporizador o devolución de llamada.

Henry_White >> :

El manejador de eventos ChartEvent estará disponible sólo en los Asesores Expertos, por cierto... Una discriminación bastante extraña ))

A mí tampoco me gusta. Pero ahora los índices no están ligados al gráfico.

 
TheXpert >> :

No como dos dedos en el asfalto, pero es posible. Conectar dll, hacer cálculos en un nuevo hilo - WinAPI ayudará aquí, terminar por temporizador o callback.

Estaba pensando en la variante DLL, pero no me queda muy claro cómo conseguir un acceso CORRECTO a las series temporales, más los valores de más de 10 indicadores diferentes, y todo ello con una profundidad decente sobre el historial. Y si tenemos en cuenta que el tiempo de cálculo tarda más de un minuto (yo trabajo con minutos), entonces no está en absoluto claro, a dónde se referirán los punteros DLL después de añadir una nueva barra en el terminal del cliente. Y también tenemos que devolver un par de docenas de parámetros calculados y añadir varios gráficos a la serie de precios. No es trivial, en definitiva...

Después de ver todo esto y calcular el tiempo que necesitaría para los experimentos y las diversas comprobaciones y depuraciones, escribí un procesamiento de cluster de tiempo en MQL... Funciona, pero... No es agradable. ¡Pero mi alma lo exige! ))) Y ya estamos en el siglo XXI... Y quieres estar a la altura de la edad. ))

 

Propongo aclarar (definir) el concepto de "punto".

Un pip es el 5º dígito significativo: 1,2345.

Si una cotización se representa con otro dígito (1,23456) y el spread = 0,00018, entonces el spread en pips es de 1,8 p, no de 18 p.

Esto introducirá uniformidad en la terminología y evitará confusiones.

 
SK. >> :

Propongo aclarar (definir) el concepto de "punto".

Un pip es el 5º dígito significativo: 1,2345.

Si una cotización se representa con otro dígito (1,23456) y el spread = 0,00018, entonces el spread en pips es de 1,8 p, no de 18 p.

Permitirá introducir uniformidad en la terminología y evitar confusiones.

Tienes toda la razón - los corredores escriben "spread 1.8" en sus sitios web, no 18 - saben exactamente lo que hacen :)

 

Функция OnCalculate() вызывается только в пользовательских индикаторах
при необходимости произвести расчет значений индикатора по событию Calculate.

Todavía no tengo ni idea de cómo puedo hacer un indicador con objetos y sin saber el número de barras cambiadas

 

Veo que hay una función printf

y lo genial que sería conseguir otro sprintf



 
Roffild >> :

Todavía no tengo idea de cómo puedo hacer un indicador con objetos y sin saber el número de barras modificadas

La ayuda de MQL5 dice:

int OnCalculate (const int rates_total, // el tamaño de las series temporales de entrada
const int prev_calculated, // barras procesadas en la llamada anterior
const datetime& time[], // hora
const double& open[], // Abrir
const double& high[], // Alto
const double& low[], // Low
const double& close[], // Cerrar
const long& tick_volume[], // Volumen del tick
const long& volume[], // Volumen real
const int& spread[] // Spread
);

Hay que tener en cuenta la relación entre el valor devuelto por OnCalculate() y el segundo parámetro de entrada prev_calculado. El parámetro prev_calculado al llamar a la función contiene un valordevuelto por OnCalculate() en la llamada anterior. Esto permite economizar los algoritmos de cálculo del indicador personalizado para evitar cálculos repetidos para aquellas barras que no han cambiado desde la anterior llamada a esta función.

Para ello, suele bastar con devolver el valor del parámetro rates_total, que contiene el número de barras de la llamada a la función actual. Si desde la última llamada de OnCalculate() los datos del precio han cambiado (se ha cargado un historial más profundo o se han rellenado los espacios en blanco del historial), el valor del parámetro de entrada prev_calculado será puesto a cero por el terminal.