[ARCHIVO]Cualquier pregunta de novato, para no saturar el foro. Profesionales, no lo dejéis pasar. No puedo ir a ningún sitio sin ti - 5. - página 375

 
Chiripaha:

No estoy dispuesto a estar de acuerdo. - Porque desde esa posición se pierde la lógica de mantener los EAs trabajando y calculando correctamente tanto el dinero como las posiciones. - Esta es una. Segundo. - Si mi EA está durmiendo, por ejemplo, durante 100 milisegundos, y otro empieza a trabajar al mismo tiempo, entonces qué pasará, que en cuanto pasen esos 100 milisegundos, el otro tendrá que parar su trabajo... y pasarla de nuevo a este en el medio y así indefinidamente... Por otro lado. He visto (no pocas veces) en los EAs cuando mandan a "dormir" durante minutos y muchas veces en cada bloque de ejecución. - Entonces, si todos los demás búhos no están trabajando durante este tiempo, también está mal de alguna manera. - Así que la pregunta es bastante pertinente. Me gustaría entender la lógica de funcionamiento en este punto. Pero no he encontrado una explicación detallada en los documentos oficiales.

Pero estoy dispuesto a estar de acuerdo. Al principio, cuando apareció mql4, nadie había pensado en la multimoneda, ni en las manadas de búhos en un terminal. Así que existe la posibilidad de que esto sea normal.

Chiripaha:

Pero entre dos males yo elegiría este último. En ese caso yo dejaría el búho sin más, estoy seguro. Si no se hace esto, da igual: al menos se conserva la corrección de los recálculos, aunque se ralentiza su trabajo.

Tiene más sentido utilizar varias señales, es decir, para cada símbolo una señal diferente. Luego acumulamos tantas señales como necesitemos en la matriz, y todo es negociado por un Asesor Experto. Dado que la lógica es la misma, ¿por qué necesitamos muchos EAs?

Chiripaha:

El problema no es tan trivial como parece. - El hecho es que mis experimentos han demostrado que cuando la casilla "Permitir que los EAs operen" está desmarcada, el trabajo del EA no se detiene - todos los cálculos se realizan en cada tick. Sólo las transacciones del EA no se envían al servidor. Pero, si estos cálculos se llenan con estos "resbalones" (no del todo correctamente), entonces si hay 5-10 de estos EAs, entonces específicamente pueden ralentizar la ejecución del EA real que está operando actualmente.

Sí, algunos programadores colocan el control sobre los permisos para comerciar y dejan que el búho trabaje sobre esta base. Pero no se hace más a menudo. Y si el código está cerrado, no podemos entender en absoluto si la operación es de frenado o no (y qué búho exactamente). - Ahora voy a hurgar en este tema en la búsqueda del foro. Algo se ha ralentizado.

Aparentemente sí, este botón"Permitir que el EA opere" sólo funciona como se pretende si el código del EA lo contempla.
 
Chiripaha:

No estoy dispuesto a estar de acuerdo. - Porque desde esa posición se pierde la lógica de mantener los EAs trabajando y calculando correctamente tanto el dinero como las posiciones. - Esta es una. Segundo. - Si mi EA está durmiendo, por ejemplo, durante 100 milisegundos, y otro empieza a trabajar al mismo tiempo, entonces qué pasará, que en cuanto pasen esos 100 milisegundos, el otro tendrá que parar su trabajo... y pasarla de nuevo a este en el medio y así indefinidamente... Por otro lado. He visto (no pocas veces) en los EAs cuando mandan a "dormir" durante minutos y muchas veces en cada bloque de ejecución. - Entonces, si todos los demás búhos no están trabajando durante este tiempo, también está mal de alguna manera. - Así que la pregunta es bastante pertinente. Me gustaría entender la lógica de funcionamiento en este punto. Pero no he encontrado una explicación detallada en los documentos oficiales.

Pero entre dos males yo elegiría este último. En este caso, simplemente dejaría el búho que estoy seguro. Si no es así, da igual: al menos se conserva la corrección de los recálculos, aunque se ralentiza su trabajo.

El problema no es tan trivial como parece. - La cuestión es que mis experimentos han demostrado que si la casilla "Permitir que los EAs operen" está desmarcada, el trabajo del EA no se detiene - todos los cálculos se realizan de la misma manera en cada tick. Sólo las transacciones del EA no se envían al servidor. Pero, si estos cálculos se llenan con estos "deslices" (no del todo correctos), entonces si hay 5-10 de tales EAs, pueden específicamente ralentizar la ejecución del EA real que está operando en ese momento.

Sí, algunos programadores colocan el control sobre los permisos para operar y dejan que el búho trabaje sobre esta base. Pero no se hace más a menudo. Y si el código está cerrado, no podemos entender en absoluto si la operación es de frenado o no (y qué búho exactamente). - Ahora voy a hurgar en este tema en la búsqueda del foro. Algo se ha ralentizado.

Gracias a Arles por la pregunta, por recordarme y ponerme al día. No tenía la suficiente experiencia para entender lo que se escribía sobre el tema. Lo haré de nuevo ahora.


Sin entrar en detalles del procesamiento del código del procesador, detengámonos en la "imagen" común: durante Sleep() hay una pausa para el procesamiento posterior de este mismo código (todos los demás códigos se procesan en hilos paralelos INDEPENDIENTES).
 
TarasBY:
Sin entrar en detalles del procesamiento del código del procesador, detengámonos en una "imagen" común: durante Sleep() hay una pausa en el procesamiento posterior de este mismo código (todos los demás códigos se procesan en hilos paralelos INDEPENDIENTES).

Bueno, ahí tienes... Y eso es una "emboscada". Si entiendo bien lo que digo. - Permítanme aclarar...

Si te he entendido bien, Igor, los Asesores Expertos no se procesan de forma secuencial (como hice en mis experimentos), sino en paralelo? Y, si es así, resulta que Arles tiene razón y se pueden abrir 2 operaciones en paralelo si cada señal ha recibido las condiciones adecuadas?

Por eso es importante para mí: me ayudará a organizar mi trabajo correctamente. Cuando no entiendes lo que pasa y cómo, puedes cometer un gran error.
 

Además, a simple vista, Sleep() no funciona en el probador, incluso está escrito en alguna parte de la documentación...

El inicio del EA se realiza en la función Start() con la llegada de cada tick. Si tienes una docena de EAs, intenta manejar los errores, deberían aparecer. Si realiza muchas solicitudes a las empresas de corretaje, lo más probable es que aparezca un error como "El flujo está ocupado".

En cuanto a la casilla"Permitir que el EA opere" . Sí, el Asesor Experto funciona, pero sólo las operaciones están prohibidas, ver el registro, dirá todo.

 

Hola, ¿puede decirme qué es este script?

//+------------------------------------------------------------------+
//|                                                        close.mq4 |
//|                      Copyright © 2004, MetaQuotes Software Corp. |
//|                                       http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2004, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net/"
#property show_confirm

//+------------------------------------------------------------------+
//| script "close first market order if it is first in the list"     |
//+------------------------------------------------------------------+
int start()
  {
   bool   result;
   double price;
   int    cmd,error;
//----
   if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES))
     {
      cmd=OrderType();
      //---- first order is buy or sell
      if(cmd==OP_BUY || cmd==OP_SELL)
        {
         while(true)
           {
            if(cmd==OP_BUY) price=Bid;
            else            price=Ask;
            result=OrderClose(OrderTicket(),OrderLots(),price,3,CLR_NONE);
            if(result!=TRUE) { error=GetLastError(); Print("LastError = ",error); }
            else error=0;
            if(error==135) RefreshRates();
            else break;
           }
        }
     }
   else Print( "Error when order select ", GetLastError());
//----
   return(0);
  }
//+------------------------------------------------------------------+
 
alex12:

Hola, ¿puede decirme qué es este script?

Dice: "Cerrar la primera orden de mercado si es la primera de la lista".
 
alex12:

Hola, ¿podría decirme qué tipo de script es este?


Alex, esto es lo que dice aquí:

script "close first market order if it is first in the list"

Un script que cierra la primera orden de mercado si es la primera de la lista.

Es decir, según entiendo por la lógica del código, es más probable que se cierre la primera orden abierta. Si tiene, por ejemplo, 10 órdenes abiertas, la orden número 1 se cerrará. Es decir, la que se abrió primero.

 
Chiripaha:

Bueno, ahí tienes... Y eso es una "emboscada". Si entiendo bien lo que digo. - A ver si lo entiendo...

Si he entendido bien, Igor, los Asesores Expertos no se procesan secuencialmente (como hice en mis experimentos), sino en paralelo? Si es así, significa que Arles tiene razón y que se pueden abrir dos operaciones en paralelo, si cada señal ha recibido las condiciones adecuadas?

Por qué es importante para mí: ayudará a organizar el trabajo adecuadamente. Cuando no entiendes lo que pasa y cómo, puedes cometer muchos errores.

Sergiy, ¿de dónde has sacado un postulado como "Todos los Asesores Expertos son procesados en serie por el terminal"? - En la era de la computación paralela. ;)

No he realizado tales experimentos (con la determinación del orden de procesamiento de los códigos de los Asesores Expertos por el terminal) - mi respuesta está en el nivel de la lógica. Simplemente (sin entrar en detalles del funcionamiento del terminal) dispongo el procesamiento consecutivo (forzado) de los Asesores Expertos durante las operaciones comerciales. Pero la respuesta más correcta es mi propia experiencia. Es cierto que no hay que olvidar tener en cuenta los parámetros de entrada a la hora de configurar la experiencia, para poder procesar correctamente los resultados obtenidos. :)

P.S. Leí en alguna parte (del desarrollador), que la construcción actual de MT4 puede procesar hasta 8 (si no recuerdo mal) órdenes de comercio en paralelo, aunque desde "mi punto de vista" no está claro lo que es un terminal de usuario - es regulado por el servidor DC ("al otro lado del cable"). ;)

 
Chiripaha:

...

Es decir, según entiendo la lógica del código, es más probable que se cierre la primera orden abierta. Si tiene, por ejemplo, 10 órdenes abiertas, la orden número 1 se cerrará. Es decir, la que se abrió primero.


Sí, pero sólo si esta primera orden es una orden de mercado. Si se trata de una orden pendiente, no ocurrirá nada.
 
TarasBY:

Sergey, ¿de dónde has sacado ese postulado de que "Todos los EAs son procesados por el terminal de forma secuencial"? - En la era de la computación paralela. ;)

No he hecho tales experimentos (con la determinación del orden de procesamiento de los códigos de los Asesores Expertos por el terminal) - mi respuesta está en el nivel de la lógica. Simplemente (sin entrar en detalles del funcionamiento del terminal) dispongo el procesamiento consecutivo (forzado) de los Asesores Expertos durante las operaciones comerciales. Pero la respuesta más correcta es mi propia experiencia. Es cierto que no hay que olvidar tener en cuenta los parámetros de entrada a la hora de configurar la experiencia, para poder procesar correctamente los resultados obtenidos. :)

Ese es el punto (para la corrección de la puesta en escena de los parámetros del experimento). Por eso hago las preguntas, ya que no estoy seguro de mis propias capacidades y, por lo tanto, intento identificar -quizás he hecho algo mal, si estos resultados son divergentes. Esto va más al grano de las pruebas: en momentos como éste, un programa aparentemente bien escrito falla y te das cuenta de que tienes que buscar en algún sitio.

Conseguí estos "experimentos" por accidente. También escribí programas para el trabajo en paralelo - ahora dejé este método porque no aumentaba la eficiencia (se puede realizar en otros proyectos). El resultado fue tal, que hasta que no se procesara el primer programa -no se obtendrían datos- el segundo no se iniciaría (o, más exactamente, fallaría). Esta secuencia dependía de la ventana en la que había colocado (es decir, en qué orden) los bloques de EA. - Por lo tanto, concluimos que la secuencia de las ventanas es importante, es decir, que los Asesores Expertos se procesan secuencialmente, no en paralelo. Y esta secuencia depende de la numeración de las ventanas en la lista del terminal.

Esta es la esencia de la experiencia.

Pero, de nuevo, quizá sea una interpretación incorrecta de mis resultados. Por eso, ahora intento insistentemente resolver esta cuestión, y no sólo con el "resbalón".

Razón de la queja: