Respuesta

Bug o problema en mi VPS lag?, tengo un montón de terminales y EAs de trabajo en mi VPS, pero a veces SL + TP no se establece en el orden?, ¿por qué?

24 respuestas

Karish

Customer, bbp_participant, community, sq-ultimate, 443 replies.

Visitar el perfil

hace 8 años #114929

Bug o problema en mi VPS lag?, tengo un montón de terminales y EAs de trabajo en mi VPS, pero a veces SL + TP no se establece en el orden?, ¿por qué?

 

¿es debido a mi VPS lag?, o hay algo mal con el código mql4?, mi VPS está en alta CPU + uso de memoria con regularidad debido a los muchos terminales y EAs trabajando,

tal vez por esto...

 

es muy raro pero ya me paso la 3ra vez..

 

 

¿le ha pasado a alguien de aquí también?.., gracias..

0

Karish

Customer, bbp_participant, community, sq-ultimate, 443 replies.

Visitar el perfil

hace 8 años #136121

No, recibo el error 146 de "El contexto comercial está ocupado" nada más..,

 

ayer he modificado el código mql4 y añadido el comando para esperar si el contexto está ocupado, pero sigue teniendo el mismo error, por cierto que el error sólo ocurre en las cuentas DEMO con cuenta real no estoy recibiendo ningún error lo que nunca..,

¿qué podría ser?

0

mikeyc

Cliente, bbp_participant, comunidad, 877 respuestas.

Visitar el perfil

hace 8 años #136122

El contexto de operaciones ocupadas se debe a que el terminal está sobrecargado o a que el intermediario tarda mucho en procesar las órdenes.

 

Si sigue ocurriendo después de reiniciar, yo buscaría otro broker.

0

Karish

Customer, bbp_participant, community, sq-ultimate, 443 replies.

Visitar el perfil

hace 8 años #136124

Probado también con los mismos EAs en el servidor Global Prime Demo, la misma mierda..,

pero ya he modificado el código mql4 de nuevo, así que voy a ver qué va a pasar después,

me pongo al día .. y si lo arreglé voy a publicar la solución,

 

gracias por su participación.

0

geektrader

Customer, bbp_participant, community, 522 replies.

Visitar el perfil

hace 8 años #136155

Esto es muy sencillo: NUNCA ejecutes más de 8 EAs por instancia de MT4 si quieres una ejecución de órdenes fiable (que es lo que quieres si operas con dinero real). Es una de las muchas limitaciones del terminal MT4 (¡hace algunos años era 1 hilo por instancia MT4!) y no tiene nada que ver con tu broker en absoluto (@mikeyc: si el broker está sobrecargado no obtendrás "trade context is busy" sino "trade timeout", aunque hoy en día todavía no he visto a ninguno de los brokers serios mostrar este error).

Es simplemente porque solo puede haber 8 operaciones de orden procesadas a la vez en cada terminal MT4 (ya sea abrir una nueva orden, modificar una existente, cerrar una existente) y no puedes hacer nada al respecto ya que la mierda de terminal MT4 está diseñada así.

 

Seguramente hay "hacks" alrededor de eso y el EA podría simplemente volver a intentar modificar la orden si falló antes debido a un contexto de comercio ocupado o el EA podría comprobar si el contexto de comercio está libre o no y esperar si no lo está antes de pasar su siguiente comando para hacer algo con una orden. Pero estas soluciones no son muy seguras ni aceptables en el comercio en vivo, ya que siempre retrasan las cosas de una manera u otra. Si el EA reintenta después de un error, el precio puede haberse movido demasiado lejos ya. Especialmente durante las noticias, su orden podría nunca obtener el SL necesario porque ya se ha movido más allá / por encima de él y simplemente no se puede establecer en el valor deseado. Lo mismo con la espera de contexto comercial para liberarse, esto cuesta mucho tiempo, así y es muy inseguro debido a que también.

 

La única solución si te tomas en serio el trading en vivo: ¡ejecuta sólo 8 EA's por instancia MT4! Es así de fácil y no hay forma de evitarlo con ningún tipo de hacks si quieres una ejecución / modificación de órdenes fiable y rápida todo el tiempo. Si su VPS es lo suficientemente rápido como usted dice, eso no es problema. Personalmente tengo 7 terminales MT4 funcionando, cada uno con 8 EA's (no todos son de SQ). Solo tienes que copiar la carpeta de MT4 que tienes a una nueva y listo, ya tienes tu siguiente instancia. Lo único que tienes que tener en cuenta es otra limitación que establece el terminal MT4 (¡sí, otra vez!): sólo puedes ejecutar 32 instancias MT4 por máquina. La número 33 simplemente no se lanzará, incluso si has copiado a otro directorio de nuevo. MQ introdujo esto después del arbitraje de latencia de BTN Lightning, donde estaban "timando" a estos pobres brokers de MT4 a escala masiva ejecutando hasta 200 instancias de MT4 en mega-servidores. Ya he intentado romper esa limitación, pero no es fácil ya que la propia MT4 está envuelta en una máquina virtual a través del método de protección de copia Themida. Así que concluí: el máximo de EAs que podrás correr FIABLEMENTE sin conseguir otro VPS es 32 x 8 = 256 EAs.

 

P.D.: Si quieres la solución poco fiable (esperar a que el contexto de la operación se libere), utiliza mi código (lo he probado en vivo también y he ejecutado 50 EAs en una instancia MT4 con él sin que ninguna orden lanzara ningún error acerca de que el contexto de la operación no estuviera libre):

int ComprobarContextoComercial()
{

uint WaitLimitTradeContext = 120; //segundos

    if (!IsTesting() && !IsTradeAllowed() && !IsStopped())
    {
        int ticks = GetTickCount();
        Print("¡El contexto de operación está ocupado! Esperando hasta que se libere...");
        while (true)
        {
            RefreshRates();
            Print("Esperando a que se libere el contexto de operación...");
            if (IsStopped())
            {
                Print("¡El Experto fue Terminado por el Usuario!");
                return(-1);
            }
            if (GetTickCount() - ticks > 1000 * WaitLimitTradeContext)
            {
                Print("¡Se excedió el límite máximo de espera de " + WaitLimitTradeContext + " segundos!");
                return(-2);
            }
            if (IsTradeAllowed())
            {
                Print("¡El contexto comercial ha quedado libre!");
                return(0);
            }
            Sleep(50);
        }
    }
    //Print("¡El contexto comercial está libre!");

    return(1);
}

Entonces, antes de cualquier envío / modificación / cierre de la orden poner: if (CheckTradeContext() >= 0) ....


🚀 Unlock Your Edge in Automated Forex Strategy Development 🚀

Historical Forex Data Starting From 1987, 28 Pairs, M1, 99% Error-Free, Lifetime Free Updates

0

Karish

Customer, bbp_participant, community, sq-ultimate, 443 replies.

Visitar el perfil

hace 8 años #136171

Gracias geektrader,

Sin embargo, ya he creado una función para ello:

void CheckIfBusy()
{
  if(!IsTesting())
  while(IsTradeContextBusy()){//Print("#ERROR!: Orden ("+TipoDeOrden()+") - Retrasada");
  Sleep(50);RefreshRates();}
}

pero su más sofisticado con un temporizador, ya he editado todos mis EAs con esa nueva función de los suyos :),

gracias por su tiempo para escribir este enorme post también,

sobre el 8 hilo thinggy y el enlace de metaquotes oficial de actualización: https://forum.mql4.com/54431

así que gracias una vez más por aclararlo y por haber añadido más información al respecto,

Así que desde mi entendimiento no hay ningún problema para ejecutar múltiples instancias MT4 en la misma cuenta de operaciones?, sólo tiene que establecer MagicNumbers diferente entre todos los EAs ¿he entendido bien? ..,

Y si los EAs son muy activos hasta cierto punto?, ¿debo entonces dividir la cartera no por 8,8,8,8 sino en 4,4,4,4 EAs en la misma instancia?...,

gracias esperaré tu respuesta compañero.

0

geektrader

Customer, bbp_participant, community, 522 replies.

Visitar el perfil

hace 8 años #136179

Es bueno saber que estás en el camino a un no-ocupado-comercio-contexto:) Es realmente fácil, no tienes que hacer nada especial, sólo utilizar 8 EAs por instancia MT4, configurarlos de la misma manera como si estuvieran en 1 terminal (diferente número mágico, etc, por supuesto). Puedes ejecutar un número ilimitado de conexiones con tu broker a la misma cuenta, no hay problema (al menos 32 conexiones/terminales a la misma cuenta son posibles, hasta ahí lo he probado). Si son muy activos no importa, cada terminal MT4 puede hacer 8 operaciones en paralelo, no importa lo activos que sean los EAs mientras no hagas más de 8 peticiones a la vez por terminal, funcionará bien, incluso si cada EA envía un comando todo 1ms:)


🚀 Unlock Your Edge in Automated Forex Strategy Development 🚀

Historical Forex Data Starting From 1987, 28 Pairs, M1, 99% Error-Free, Lifetime Free Updates

0

Karish

Customer, bbp_participant, community, sq-ultimate, 443 replies.

Visitar el perfil

hace 8 años #136180

Es bueno saber que estás en el camino a un no-ocupado-comercio-contexto:) Es realmente fácil, no tienes que hacer nada especial, sólo utilizar 8 EAs por instancia MT4, configurarlos de la misma manera como si estuvieran en 1 terminal (diferente número mágico, etc, por supuesto). Puedes ejecutar un número ilimitado de conexiones con tu broker a la misma cuenta, no hay problema (al menos 32 conexiones/terminales a la misma cuenta son posibles, hasta ahí lo he probado). Si son muy activos no importa, cada terminal MT4 puede hacer 8 operaciones en paralelo, no importa lo activos que sean los EAs mientras no hagas más de 8 peticiones a la vez por terminal, funcionará bien, incluso si cada EA envía un comando todo 1ms:)

 

Gracias una vez más geektrader :),

Tengo 29 EAs así que los he repartido en 5 MT4s, 6x6x6x6x5, son EAs activos y operan a diario así que por si acaso he puesto sólo 6 por terminal,

 

gracias compañero eso es informacion muy critica, no sabia lo de los 8 hilos pense que era solo 1 por terminal jeje..

¡que tengas una buena semana y muchos puntos verdes para ti! B)

0

geektrader

Customer, bbp_participant, community, 522 replies.

Visitar el perfil

hace 8 años #136181

Sí, ya veo, mis EAs operan cada 15 minutos (modificando órdenes pendientes - 8 a la vez cada vez), está realmente bien si usas 8 por terminal, incluso si son "scalpers locos", ya que cada EA se procesa en serie sólo en el lenguaje MQL4, con 8 EAs nunca jamás tendrás un contexto de operación ocupado - no hay necesidad de desperdiciar recursos realmente. Usted puede utilizar con seguridad 8 por terminal.

 

Sí, en el pasado era sólo 1 operación por terminal, tenía montones de terminales funcionando en ese momento. ¡MT4 simplemente apesta!

 

Pips verdes para ti también:)


🚀 Unlock Your Edge in Automated Forex Strategy Development 🚀

Historical Forex Data Starting From 1987, 28 Pairs, M1, 99% Error-Free, Lifetime Free Updates

0

Viendo 8 respuestas - de la 16 a la 23 (de un total de 23)

1 2