Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 1445
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Pensé que marcaría una casilla en algún sitio y ya está ))
de todas formas, tendré que aguantarme,
gracias por la respuesta.
¿Escribiste tú mismo ese código? Quizás puedas mostrar un trozo de código de cómo se llama a db y unas líneas después de la llamada. Algo me parece que dice print error.....
¿Escribiste tú mismo ese código? Quizás puedas mostrar un trozo de código de cómo se llama a db y unas líneas después de la llamada. Algo me parece que dice para imprimir un error....
Para separarlos por tiempo, he añadido una muletilla en forma de Sleep() tiempo aleatorio - de 0 a 3 segundos.
Y 10 intentos de conexión.
El registro mostró que como máximo en el segundo intento todo funciona, es decir, en general funciona de forma fiable.
.
La tarea es escribir la hora actual en la base de datos cada 10 segundos. Lo hace el mismo Asesor Experto, pero en 4 gráficos.
Para separarlos por tiempo añadí una muletilla en forma de Sleep() tiempo aleatorio - de 0 a 3 segundos.
Y 10 intentos de conexión.
El log muestra que como mucho en el segundo intento todo funciona, es decir, en general funciona de forma fiable.
.
Así que aquí está la línea que se imprime en el registro.
Basta con comentarla poniendo // delante o quitarla del todo y se eliminarán todas las preguntas si no hay otro Print() en ningún otro sitio;
Así que aquí está la línea que imprime a la revista
Basta con comentarla poniendo // delante o borrarla completamente y se eliminarán todas las preguntas, si no hay otro Print() en ningún otro sitio;
Esta línea se imprimirá si falla con 10 intentos.
La propia función imprime el error.
Esta línea se imprimirá si la función falla después de 10 intentos.
El error lo imprime la propia función.
Ya veo. Se imprime cuando se intenta trabajar con db. Necesitamos ver si hay un chequeo de validez del handle de db antes de usar la base de datos.
Aquí has llamado a la función
Intentaste abrir la db, obtuviste un error, enviaste un mensaje a telegram....
Y donde usas la variable dbmt, ¿compruebas allí su valor?
o así
Ya veo. Esto se imprime al intentar trabajar con db. Tenemos que ver si hay una comprobación de validez de la manija db antes de utilizar la base de datos.
Aquí has llamado a la función
Intentaste abrir la db, obtuviste un error, enviaste un mensaje a telegram...
¿Y donde usas la variable dbmt compruebas su valor?
o así
Creo que la librería de trabajo con la base envía un error y, al parecer, no maneja la situación cuando la base está bloqueada.
En Python tal problema no ocurre, al parecer está incorporado en colas y esperas.
Gracias por sus respuestas.
Sí, lo compruebo en db_exe() y lo envío a reintentar. Pero db_exe() devuelve False si falla 10 veces (nunca devuelve).
Creo que la librería de trabajo con la base manda un error y parece que no maneja la situación cuando la base está bloqueada.
En Python no ocurre tal problema, al parecer tiene colas y esperas.
Gracias por vuestras respuestas.
1. Si no se recupera el handle de la base, no es necesario cerrar la base.
2. Si se recibe INVALID_HANDLE, ¿por qué continuar la ejecución del programa? Creo que en este caso es mejor abortar, devolver
Ahora estoy intentando repetidamente abrir y cerrar una base inexistente y no consigo obtener una impresión de error. Creo que esta impresión se produce en el momento de crear consultas a la base, que no se pudo abrir.
1. Si no se recibe el asa de la base, no es necesario cerrar la base.
2. Si se recibe INVALID_HANDLE, ¿por qué continuar la ejecución del programa? Creo que en este caso es mejor interrumpir, devolver
Ahora estoy intentando repetidamente abrir y cerrar una base de datos inexistente y no consigo obtener la impresión de error. Creo que esta impresión se produce en el momento de crear consultas a la base, que no se ha podido abrir.
Voy a hacer una prueba mínima Asesor Experto que actualizará el registro en la base de datos cada segundo. Ejecutarlo en 10 pares y todo estará claro. Lo publicaré aquí.
Interesante. Estaré esperando...
Interesante. Estaré esperando...
Aquí tienes un experto. Crea una base (si no existe ya) y escribe en ella la hora actual una vez por segundo.
No hay Print() en el código.
Lo ejecuté en 10 pares y obtuvo errores:
Para obtener un error que tiene que cerrar y reiniciar MT5 entonces todos los EAs empezar a trabajar de forma sincrónica.
Sería bueno:
1. Para entender cómo deshacerse de este error.
2. Para inventar un mecanismo de plantilla que la cola en caso de que la base no está disponible.
Resolví el punto 2 añadiendo Sleep() con tiempo aleatorio, pero parece una muletilla.
ACTUALIZACIÓN: Volví a subir el archivo, el primero tenía un error.