
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
¡Simplemente llama a start() desde init () ...y estarás en start() aunque no venga ningún tick !
gracias u 2
Ampliando mi enlace anterior... Ejecuto un EA separado para monitorear el estado de la conexión. Básicamente tiene todo el código para mi prueba codificada dentro de inicio con un sueño al final. Inicio es básicamente un gran bucle, cuando termina, vuelve al principio. Pero en lugar de esperar a un tick para activar el inicio, llamo a start() dentro de init(). De esta manera start() continúa el bucle con el sleep e init() nunca termina, por lo que el código se ejecuta en base a los intervalos de tiempo del sleep en lugar de esperar un tick... el enlace de arriba muestra el principio...
hth
V
¡Simplemente llama a start() desde init () ...y estarás en start() aunque no venga ningún tick !
nada de esto resuelve el problema porque init() tampoco se inicia si no hay conexión
la única manera de hacer esto es con un script; el problema es que no hay manera de abrir la terminal con un script cargado
nada de esto resuelve el problema porque init() tampoco se inicia si no hay conexión
la única manera de hacer esto es con un script; el problema es que no hay manera de abrir la terminal con un script cargado
Vamos a echar un vistazo a las herramientas de MT4i.com. Yo las uso para monitorear la conexión y enviar alertas por correo o sms.
http://www.mt4i.com/mtdashboard.aspx
¡Sólo llame a start() desde init () ...y estará en start() incluso sin que haya un tick disponible !
¡NO! Esto no está permitido. Se espera que init() regrese después de 2 segundos. ¡No se permite que init se bloquee! Todo tipo de problemas podrían (y surgirán) de eso.
Simplemente haga el bucle en start y espere que start sea llamado automáticamente en el siguiente tick disponible después de cargar el EA. Hubo ticks antes de que la conexión se cayera por lo que su bucle ya se estará ejecutando cuando este evento ocurra.
Si realmente necesita desencadenar un start() desde dentro de init() porque necesita que se ejecute en el fin de semana, entonces la única manera correcta es usar el truco PostMessage() para forzar un tick. Usted publica el mensaje y luego deja que init regrese. MT4 llamará entonces a start() de la manera normal e init() no se bloqueará.
Vea la siguiente publicación para un ejemplo.
Y esto es lo mismo que el script anterior pero implementado como un EA, demostrando ambos conceptos en un EA.
En init() se pondrá en cola el primer tick para activar el primer start() y luego en start() producirá más ticks en un bucle infinito.
Esta es la única manera correcta de forzar un start() desde dentro de init() en un EA. No está permitido hacer esto en un indicador ya que allí start() se ejecutará en el hilo de la GUI.
intente poner este EA en un gráfico, cierre el terminal, luego desactive su conexión a internet y encienda su terminal (mientras la conexión a internet está apagada) y verá que no funciona
intente poner este ea en un gráfico cierre el terminal y luego desactive su conexión a internet y encienda su terminal (mientras la conexión a internet está apagada) y verá que no funciona
Pero debería seguir funcionando una vez que se ha iniciado en condiciones normales (que debería ser el caso de uso normal). Intenta desconectarlo después de que se haya iniciado.
Y sirve como ejemplo de cómo evitar un init() bloqueante y ejecutarlo como un EA en lugar de un script.
Pero debería seguir ejecutándose una vez iniciado en condiciones normales (que debería ser el caso de uso normal). Intenta desconectarse después de que se haya iniciado.
Y sirve como ejemplo de cómo evitar un init() bloqueante y ejecutarlo como un EA en lugar de un script.
Tienes razón, pero no estoy buscando una solución a la situación que describes, estoy buscando una solución a la situación que describo, y ahora mismo la única solución que he encontrado, que, software externo, ejecutará un script