Errores, fallos, preguntas - página 2616

 
Igor Makanu:

Ya veo, es decir, resuelve el eterno problema del intercambio de datos entre terminales

No. Tiene que recibir datos del Probador desde el que se ejecuta el Asesor Experto. Sé cómo hacerlo en el 90% de los casos.

 
fxsaber:

Necesito que un EA que se ejecute en el Agente sea capaz de obtener el handle de la Terminal desde la que se envió a ejecutar en el Agente.

No puedo decir acerca de los Agentes. No lo he comprobado, pero el mango de la Terminal puede ser recuperado a través de PID, como se esperaba:

#define    READ_CONTROL   0x00020000
#define    bInheritHandle true

#include <WinAPI\processthreadsapi.mqh>
int OnInit()
  {
   uint process_id = GetCurrentProcessId();
   Print("process_id = ",process_id);
   HANDLE handle = OpenProcess(READ_CONTROL,bInheritHandle,process_id);	// https://docs.microsoft.com/ru-ru/windows/win32/api/processthreadsapi/nf-processthreadsapi-openprocess?redirectedfrom=MSDN
   Print("handle = ",handle);
   return(INIT_SUCCEEDED);
  }

2019.12.09 21:05:36.259 tst_Wapi (EURUSD,H1) process_id = 9280

2019.12.09 21:05:36.259 tst_Wapi (EURUSD,H1) handle = 2276

He comprobado el PID en el Administrador de tareas y es el mismo


 
Igor Makanu:

No puedo decir nada sobre los agentes. No lo he comprobado, pero el mango del terminal, como supuse, se puede obtener a través del PID:

2019.12.09 21:05:36.259 tst_Wapi (EURUSD,H1) process_id = 9280

2019.12.09 21:05:36.259 tst_Wapi (EURUSD,H1) handle = 2276

El PID comprobado en el administrador de tareas coincide

Este código es bueno para el Servicio, pero no para el Asesor Experto en el Agente.

 
Igor Makanu:

No puedo decir nada sobre los agentes. No lo he comprobado, pero el mango del terminal, como supuse, se puede obtener a través del PID:

2019.12.09 21:05:36.259 tst_Wapi (EURUSD,H1) process_id = 9280

2019.12.09 21:05:36.259 tst_Wapi (EURUSD,H1) handle = 2276

He comprobado el PID en el Administrador de tareas y es el mismo

Resuelto el problema, gracias.

 
Me pueden decir por favor, en metatrader5 en la carpeta MQL5/logs se guardan los logs de los últimos 7 días. ¿Se ha cambiado esto en algún lugar de la configuración o es un error del terminal?
 

Aquí hay dos sugerencias.

1- Hacer una opción (botón) para detener la optimización y pasar a la optimización hacia adelante.

Es decir, se suponía que era una calculadora rápida. Pero cuenta y cuenta. Y yo también estoy interesado en adelante, tengo que esperar.

A veces tengo que contar un poco más de tiempo, y otras veces tengo que hacerlo breve.

Necesito 2 botones - prolongar la optimización y detener la optimización, con la transición hacia adelante.

2- ¡Las barras de herramientas se han vuelto a deslizar en 2 niveles! Cuando mi hija era pequeña, dijo una vez "¡deslizándose y deslizándose!"...)

Aquí también, los paneles siguen deslizándose dentro y fuera de la 2ª fila. Ya estoy harto de moverlos hacia atrás (en la misma fila). ¡Arréglalo de una vez! ¡Cuánto espacio se está desperdiciando!

 

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 está descargado y el nuevo está 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 algo más?

Archivos adjuntos:
CapsLock.mq5  1 kb
 
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 está descargado y el nuevo está 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 algo más?

¿Y si es así?

void OnDeinit(const int reason)
{
  if (ind != INVALID_HANDLE)
  {
    IndicatorRelease(ind);
  }
}
 
Vitaly Muzichenko:

¿Qué te parece esto?

¿Qué tiene esto que ver? No creo un indicador desde el código MQL. Se basa en el gráfico manualmente. Lo necesito para que en el proceso de desarrollo, cuando la recompilación de los programas se produce con frecuencia, no pierdan su funcionalidad debido a los errores con el contexto/entorno del sistema guardado. Ahora mismo, después de recompilar, tengo que desinstalar y volver a instalar un inductor para que recoja el estado actual del teclado.

 
Stanislav Korotky:

Al reiniciar la compilación, ¿no se borran algunas variables de entorno o algo así?

Sí, es un error. Indicador o EA - no hace ninguna diferencia.