Ejecutar el script a través del Asesor Experto - página 3

 
Dadas:


¿Hay alguna manera de activar un script en un bucle controlado por algún ticker, como cada 50ms o algo así?

¿No por los ticks de MT4?


Voy a tratar de responder a esto yo mismo:

No es posible, porque la función start() se ejecuta por las nuevas cotizaciones, lo que significa los ticks del broker.

Por lo tanto, incluso si usted tiene un bucle dentro de la función start(), sólo hace un bucle cuando llega un nuevo tick.

¡Es por eso que no se puede ganar contra el corredor!

Sin embargo, cuando corrí mi EA como un Script como este:

int start() {

while(1==1) {

MyEA();

}
}

mi ordenador comenzó a retrasarse, debido a ese bucle.

Probé esto el domingo, por lo que el mercado estaba cerrado.

 
Dadas:


Entonces, ¿un EA podría ejecutarse como un script? ¿En un bucle?

Sólo que, cuando está en un bucle infinito, el ordenador acabará colapsando.

¿Hay alguna manera de activar un script en un bucle controlado por algún ticker, como cada 50ms o algo así?

¿No por los ticks de MT4?


Un script se ejecuta una vez a no ser que añadas un bucle finito/infinito dentro de su función start(). Si quiere activar el script con su propio tick generado, entonces hágalo un EA y póngalo en un gráfico fuera de línea.
 
Dadas:


Aunque, cuando corrí mi EA como un Script como este:

mi computadora comenzó a retrasarse, debido a ese bucle.


Su ordenador necesita una actualización... o ser sustituido.
 
RaptorUK:

Su ordenador necesita una actualización... o ser reemplazado.

Eso es muy cierto. Es uno viejo.
 
RaptorUK:

Un script se ejecuta una vez a no ser que añadas un bucle finito/infinito dentro de su función start(). Si quieres activar el script con tu propio tick generado entonces hazlo un EA y ponlo en un gráfico offline.

No puedo operar en un gráfico fuera de línea.
 
Dadas:

No puedo operar en un gráfico fuera de línea.
¿Por qué no?
 

Dadas 2012.08.12 16:34
Dadas:


¿Hay alguna manera de activar un script en un bucle controlado por algún ticker, como cada 50ms o algo así?

¿No por los ticks de MT4?


Intentaré responder a esto yo mismo:

No es posible, porque la función start() se ejecuta por las nuevas cotizaciones, es decir, por los ticks del broker.

Así que, aunque tengas un bucle dentro de la función start(), sólo se ejecuta cuando entra un nuevo tick.

¡Es por eso que no se puede ganar contra el corredor!

Sin embargo, cuando corrí mi EA como un Script como este:

int start() {

while(1==1) {

MyEA();

}
}

mi ordenador comenzó a retrasarse, debido a ese bucle.

Probé esto el domingo, por lo que el mercado estaba cerrado.

Hola Dadas,

El Script se ejecuta sin un tick, el EA se ejecuta con un tick.

Cuando uses un bucle infinito, añade un Sleep ()(https://docs.mql4.com/common/Sleep)

Prueba este código de abajo como un script, apaga la conexión a internet, abre el administrador de tareas y adjunta el script al gráfico. El script hará un bucle infinito sin necesidad de un tick, y sin utilizar demasiado el procesador.

  int n;
  while (IsStopped() == false) // or while (true)
    {
    n++;
    Alert (n);
    
    Sleep (500); // add this !
    }

 
.
 
RaptorUK:
¿Por qué no?


¡Ilumíneme, por favor!

¿Cómo puedo realizar operaciones en tiempo real en un gráfico sin conexión?

 
onewithzachy:

Hola Dadas,

El script se ejecuta sin un tick, el EA se ejecuta con un tick.

Cuando utilice un bucle infinito, añada un Sleep ()(https://docs.mql4.com/common/Sleep)

Pruebe este código de abajo como una secuencia de comandos, apague la conexión a Internet, abra el administrador de tareas y adjuntar el guión a la tabla. El script hará un bucle infinito sin necesidad de un tick, y sin utilizar demasiado el procesador.


¡Muchas gracias!

Es tan sencillo que debería haberlo pensado yo mismo...

Cansado, supongo....... ¡Como mi viejo ordenador - LOL!

Aunque, ya sabes, estaba pensando en algo un poco diferente.

¡Estoy pensando en cómo anular el ticking en el comercio en vivo MT4!

El punto es, que mientras que el comercio en vivo, las garrapatas de control de la EA y por lo tanto el corredor puede también.

En otras palabras, si quiero que mi EA cierre la orden bajo alguna condición - quiero que mi EA haga justo eso, definitivamente, no tal vez.

Aparte de las recotizaciones (sobre las que no puedo hacer nada más que cambiar de bróker), ocurre con demasiada frecuencia que veo en mi gráfico

que mi orden debería estar cerrándose, y sin embargo se queda colgada hasta el siguiente tick, y entonces pierde.

Si escribo en mi EA:

if(AccountProfit()>0) { CloseAllOrders(); }

entonces quiero que se cierre con 1 pip de beneficio o más. No espero que se quede colgado en 1 pip y no haga nada.

Por cierto, estoy operando con un spread fijo de 1 Pip en EURUSD.

Por lo tanto, no necesito lo obvio, y Sleep() tampoco es una solución, aparte de las pruebas hacia atrás fuera de línea.

BTW, cualquier prueba hacia atrás no es buena para nada - no es una prueba en tiempo real.

¡Bueno, es bueno para algunas observaciones y el estudio de los gráficos, para aprender mucho!

¡Pero, en el comercio en tiempo real no se conoce el futuro, y se cometen errores - a menos que realmente confíe en su EA!

Confíe más en él que en lo que ve en los gráficos. - Esa es la parte más difícil.

Así que, chicos, por favor, lean mis mensajes con comprensión.

Razón de la queja: