Errores, fallos, preguntas - página 2617

 
Stanislav Korotky:

Por favor, compruebe usted mismo el siguiente fallo. La aplicación tiene un indicador especial minimalista cuya única tarea es leer el estado de la tecla "capslock". Se muestra en el registro y en el comentario.

La secuencia de acciones es la siguiente.

  1. Compile el indicador, colóquelo en el gráfico y asegúrese de que se imprima el 0 (el "capslock" no está activado).
  2. Cambia a ME, habilita CapsLock y recompila. Vuelve a la terminal. Comprueba los registros para asegurarte de que el indicador antiguo se ha descargado y el nuevo se ha cargado. Sin embargo, el estado "CapsLock" sigue siendo devuelto como 0.
  3. Si eliminamos el indicador del gráfico y lo cargamos de nuevo, el bloqueo de mayúsculas se reconoce con normalidad: muestra 1.

¿Cuál es el milagro? Al reiniciar por compilación no se limpian algunas variables de entorno o qué más?

El sondeo de los estados clave es una operación específica.

El estado real de las teclas se da sólo para la ventana activa. Esto se hace a propósito para que la ventana inactiva no tenga interferencias al manejar el OnChartEvent

 

Símbolo personalizado, salida encontrada en el cuaderno de bitácora ¿Qué significa esto?

2019.12.11 00:07:13.252 Historial 'DA6_CUSTOM' contenedor inválido 2014.01.02 configuración del símbolo - dígitos: 4, tamaño del tick: 0
2019.12.11 00:07:13.254 Historial 'DA6_CUSTOM' contenedor inválido 2014.01.03 configuración del símbolo - dígitos: 4, tamaño del tick: 0
2019.12.11 00:07:13.254 Historial 'DA6_CUSTOM' contenedor inválido 2014.01.05 configuración del símbolo - dígitos: 4, tamaño del tick: 0
2019.12.11 00:07:13254 Historial 'DA6_CUSTOM' contenedor inválido 2014.01.06 configuración del símbolo - dígitos: 4, tamaño de la marca: 0
2019.12.11 00:07:13.255 Historial 'DA6_CUSTOM' contenedor inválido 2014.01.07 configuración del símbolo - dígitos: 4, tamaño del tick: 0
2019.12.11 00:07:13.255 Historial 'DA6_CUSTOM' contenedor no válido 2014.01.08 configuración del símbolo - dígitos: 4, tamaño del tick: 0
2019.12.11 00:07:13.255 Historial 'DA6_CUSTOM' contenedor no válido 2014.01.09 ajustes del símbolo - dígitos: 4, tamaño del tick: 0
2019.12.11 00:07:13.256 Historia 'DA6_CUSTOM' contenedor inválido 2014.01.10 ajustes del símbolo - dígitos: 4, tamaño del tick: 0
2019.12.11 00:07:13.256 Historia 'DA6_CUSTOM' contenedor inválido 2014.01.12 ajustes del símbolo - dígitos: 4, tamaño del tick: 0


 
Slava:

El sondeo del estado de las llaves es una operación específica.

El estado real de la tecla sólo se da para la ventana activa. Esto se hace intencionadamente para que cuando se procese el OnChartEvent, la ventana inactiva no tenga interferencias

¿Hay algún plan para añadir Windows Events a OnChartEvent? Hay veces - que algunos datos vinieron de fuera, y a través de la dll se puede generar inmediatamente un evento para el gráfico para recoger los datos, en lugar de interrogar a los datos por el temporizador. Podría tener OnChartEvent esperando un evento de Windows por su nombre.

Anteriormente, en MT4, hemos probado a emular un nuevo tick a través de PostMessage para activar un EA en un gráfico.

 
Slava:

Preguntar el estado de las llaves es una operación específica.

El estado real de la tecla sólo se da para la ventana activa. Esto se hace a propósito para que cuando se procese el OnChartEvent, la ventana inactiva no tenga interferencias

Sí, este es uno de los muchos casos en los que la documentación incompleta es evidente. Los detalles se revelan gota a gota, sólo después de que surjan los problemas.

 

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

Bibliotecas: MultiTester

fxsaber, 2019.12.13 10:24

He comprobado el contenido del archivo ZIP KB. Parece que los desarrolladores lo han arreglado, ahora hay nuevas versiones de los archivos en el ZIP. Sólo las fechas de los archivos están mal. Y el contenido es como debe ser.

 
Alain Verleyen:

Personaje personalizado, salida encontrada en el cuaderno de bitácora ¿Qué significa esto?

2019.12.11 00:07:13.252 Historial 'DA6_CUSTOM' contenedor inválido 2014.01.02 configuración del símbolo - dígitos: 4, tamaño del tick: 0
2019.12.11 00:07:13.254 Historial 'DA6_CUSTOM' contenedor inválido 2014.01.03 configuración del símbolo - dígitos: 4, tamaño del tick: 0
2019.12.11 00:07:13.254 Historial 'DA6_CUSTOM' contenedor inválido 2014.01.05 configuración del símbolo - dígitos: 4, tamaño del tick: 0
2019.12.11 00:07:13.254 Historial 'DA6_CUSTOM' contenedor inválido 2014.01.06 configuración del símbolo - dígitos: 4, tamaño del tick: 0
2019.12.11 00:07:13.255 Historial 'DA6_CUSTOM' contenedor inválido 2014.01.07 configuración del símbolo - dígitos: 4, tamaño del tick: 0
2019.12.11 00:07:13.255 Historial 'DA6_CUSTOM' contenedor inválido 2014.01.08 configuración del símbolo - dígitos: 4, tamaño del tick: 0
2019.12.11 00:07:13.255 Historial 'DA6_CUSTOM' contenedor inválido 2014.01.09 configuración del símbolo - dígitos: 4, tamaño del tick: 0
2019.12.11 00:07:13.256 Historial 'DA6_CUSTOM' contenedor inválido 2014.01.10 configuración del símbolo - dígitos: 4, tamaño del tick: 0
2019.12.11 00:07:13.256 Historial 'DA6_CUSTOM' contenedor inválido 2014.01.12 configuración del símbolo - dígitos: 4, tamaño del tick: 0


Significa que su registro informa de un error: los caracteres siguen siendo cuatro, pero las tildes siguen faltando.

 
Probablemente se trate de contenedores. ¿Los necesitas?
 

Desgraciadamente, esta comprobación es muy rara, pero a veces (dos veces en la última semana, un centenar de ejecuciones) falla. No puedo entender las razones - los datos son del mismo archivo/estructura (?).

   datetime time[],
            START_H=D'01.02.2018';
   double   close[];

   int t=CopyTime (_Symbol,0,TimeCurrent(),START_H,time);
   int c=CopyClose(_Symbol,0,TimeCurrent(),START_H,close);

   if(t!=c) 
    {Print("Arrays (time & close) are not equal!!!"); return(false);}
 

Por favor, compruebe/confirme/verifique la situación de que al intentar refrescar el gráfico mediante el método recomendadoChartSetSymbolPeriod(0, NULL, 0); se cuelga el terminal durante unos segundos (el mío es de ~15). Se adjunta un indicador simplificado para su reproducción.

Se necesitaba lo siguiente (antes funcionaba bien): hay una línea vertical (objeto) en el indicador y después de que el usuario la mueva el indicador se reconstruye con el nuevo valor del parámetro Offset tomado de la posición de la línea.

El indicador en sí es primitivo: muestra la cotización tal cual (con parámetros por defecto) en una subventana. Se calcula al instante.

Para solucionar el problema basta con poner el indicador en el gráfico y desplazar la línea amarilla vertical hacia atrás unas cuantas barras.

Los mensajes se muestran en el registro:

- "Arrastre" instantáneo en el hecho.

- "Calc" después de decenas de segundos - se muestra en cada OnCalculate.

Durante el "cuelgue" el terminal carga el núcleo de la CPU al 100%. Después de este cuelgue, el indicador se muestra finalmente con un nuevo desplazamiento. Pero el objetivo era mostrar rápidamente el indicador de los nuevos ajustes, tan pronto como el usuario moviera la línea.

¿Cuál es el problema? ¿Cómo solucionarlo?

Gracias de antemano.

Archivos adjuntos:
FMA.mq5  4 kb
IndArray.mqh  5 kb
 
Denis Nikolaev:

MT5

Construir 2280

La función de contar el número de posiciones abiertas con el símbolo y el número mágico especificados se dispara repetidamente.

es decir, la primera llamada devuelve el valor correcto, la segunda devuelve 0

Código de ejemplo, por favor, y describa el entorno comercial. Descríbalo para que pueda ser reproducido.