[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 377

 
Zhunko:

Todos los guiones y asesores trabajan en sus propios hilos. Las órdenes comerciales de estos se recogen en una cola separada. A continuación, se distribuyen a los flujos de comercio libre. El número de hilos comerciales libres puede ser igual a 8.

Print() muestra lo que está disponible para la salida en el momento de la salida. La presencia de múltiples hilos puede determinarse a través del registro. La salida se muestra al principio de la función start() y al final. Poner un retraso entre ellos. Ejecute varios Asesores Expertos en diferentes herramientas. Mira el registro. Puede ver que entre las salidas de un Asesor Experto habrá salidas de otros Asesores Expertos.

Es decir, respondiendo a la pregunta de Arles, si un Asesor Experto ha registrado órdenes y "se ha echado una siesta" durante un tiempo, en este momento otro EA colocará una orden (entrará en una operación en el mercado) que no ha cruzado el límite de los fondos asignados (supongamos el 80% del depósito - ambos EAs tendrán este tamaño). ¿Y cuando el primero reanude el trabajo (y el terminal de gestión monetaria ya haya sido calculado el día anterior), también podrá abrir una operación que supere los límites establecidos por el Asesor Experto?

Si este sistema (hipotéticamente) se multiplica por varios EAs, ¿podría haber alguno en el que la Gestión de Riesgos estuviera en un sistema crítico?

¿He entendido bien esto del multithreading? - Si es así, desde el punto de vista financiero es ciertamente un desastre. Pero, como la probabilidad de que esto ocurra es baja en las cuentas pequeñas, esto es sólo hipotético. Y en las cuentas más grandes, probablemente escribirán algo ellos mismos. Pero aún así, ¿resulta ser el caso?

Y tengo una pregunta: ¿es ésta la posición oficial o son sólo especulaciones y experimentos como los míos?
 
Chiripaha:

Es decir, respondiendo a la pregunta de Arles, si un EA ha realizado la contabilidad de las órdenes y "se ha echado una siesta" durante un tiempo, en ese momento otro EA no ha superado el límite de los fondos asignados (supongamos el 80% del depósito - ambos EAs tendrán ese tamaño) y colocará una orden (entrará en una operación en el mercado). ¿Y cuando el primero reanude el trabajo (y el terminal de gestión monetaria ya haya sido calculado el día anterior), también abrirá una operación que supere los límites establecidos por el Asesor Experto?

Si este sistema (hipotéticamente) se multiplica por varios Asesores Expertos, ¿podría haber uno en el que la Gestión del Riesgo estuviera en un sistema crítico?

¿He entendido bien esto del multithreading? - Si es así, es sin duda un lío desde el punto de vista financiero. Pero como la probabilidad es baja en las cuentas pequeñas, es sólo hipotética. Y en las cuentas más grandes, probablemente escribirán algo ellos mismos. Pero aún así, ¿resulta ser el caso?

Y tengo una pregunta: ¿es ésta la posición oficial o son sólo especulaciones y experiencias como las mías?

¿Sabes algo sobre la sincronización?

MQL4 tiene una función para la sincronización a nivel atómico.

 
Zhunko:

¿Sabes algo sobre la sincronización?

MQL4 tiene una función para la sincronización a nivel atómico.


Vadim, ¿lo has probado? No sincroniza nada. He estado jugando con él recientemente. Tienes que construir la cola tú mismo. Por desgracia, lo único que hace es reducir el código en tres líneas. O tal vez no lo entiendo.
 
Es decir, simplemente aplicando esta función se asegura que sólo un EA se está ejecutando a la vez, pero la cola no está alineada, un EA puede estar inactivo y el otro puede ser llamado dos veces.
 
Zhunko:

¿Sabes algo sobre la sincronización?

MQL4 tiene una función para la sincronización a nivel atómico.

Gracias por el enlace - ahora tengo una idea de cómo organizar este multithreading de manera más eficiente. Aunque es sólo una suposición - no veo una solución hasta ahora (en el sentido de la resolución del problema actual). Y añade la posición de Igor sobre el "semáforo".

Sin embargo, es usted quien ha completado otro modelo. Donde estos procesos se alinean, supuestamente (tengo dudas), de forma coherente.

Y estoy tratando de responder a la pregunta de Arles y ahora a la mía, en ese modelo que he descrito anteriormente. Al fin y al cabo, has eludido responder a mi pregunta. En este modelo se produce un desajuste en la gestión del riesgo.

No sé si la sincronización. Soy nuevo en la programación. Pero, por otro lado, se me da bien contar el dinero, es decir, se me dan bien las finanzas. : ))

Y mis conocimientos financieros me dicen que "la música puede dejar de sonar..." (de Margin Call) con este enfoque. : ))
 
Integer:

Vadim, ¿has probado a aplicarlo? No sincroniza nada. He estado jugando con él recientemente. Tienes que construir la cola tú mismo. Por desgracia, lo único que hace es reducir el código en tres líneas. O tal vez no lo entiendo.
Justo en la línea de mis dudas...
 

¡Te lo diré (de esta forma) así! (Te pido que te lo tomes a broma).

Mis experimentos, a pesar de todas las sugerencias de comprobar el multithreading, muestran que mientras no intercambie los bloques en los gráficos, no funciona en absoluto. En cuanto los cambié todos a la vez, todas las preguntas desaparecieron.

Por lo tanto, procederé en mis creaciones sobre la base de este postulado por el momento.

Y el hecho de que la Gestión de Riesgos pueda "quebrar" no por mi voluntad - gracias, Vadim, que lo has mostrado y llamado la atención. Esto ayudará a evitar esta situación. Bueno, para los que lo saben.

 

¡Buenos días! La línea e está bien, ¿puede decirme cómo hacer esto?

//Comment("OrdersProfit  ",OrdersProfit(),"AccountBalance  ",AccountBalance(),"Equity  ",AccountEquity());
 
Dimka-novitsek:

¡Buenos días! La línea e está bien, ¿puede decirme cómo hacer esto?


Comentario("OrdersProfit ",OrdersProfit(), "AccountBalance ",AccountBalance(), "Equity ",AccountEquity());

Estos errores se ven fácilmente en el editor al compilar.

 
¡¡¡¡¡¡Gracias!!!!!! Se refería a una función en general... ¡No sé cómo lo escribí así!
Razón de la queja: