Cómo abrir solo 1 orden cuando 2 gráficos dan la misma señal
Cómo abrir solo 1 orden cuando 2 gráficos dan la misma señal

 

Publi

Resultados 1 al 4 de 4

Tema: Cómo abrir solo 1 orden cuando 2 gráficos dan la misma señal

  1. #1
    1 Anexo(s) Hola. Ejecuto el mismo EA en múltiples gráficos, se ejecuta y ordena cuando se cumplen las condiciones en la apertura de una nueva vela. Pero a veces, más de un par da la señal al mismo tiempo, lo que da como resultado dos órdenes abiertas exactamente al mismo tiempo, como se muestra en la imagen.
    ¿Hay alguna forma de remediar esto y evitar que ocurra una de las órdenes?



  2.                         
    Publicidad
  3. #2

    Cita Iniciado por ;
    Hola, ejecuto el mismo EA en múltiples gráficos, se ejecuta y ordena cuando se cumplen las condiciones en la apertura de una nueva vela. Pero a veces, más de un par da la señal al mismo tiempo, lo que da como resultado dos órdenes abiertas exactamente al mismo tiempo, como se muestra en la imagen. ¿Hay alguna forma de remediar esto y evitar que ocurra una de las órdenes? {imagen}
    Ambos EA se ejecutan en diferentes subprocesos y se ejecutan de forma asíncrona. Si abren posiciones exactamente al mismo tiempo, debe obligarlas a ejecutarse sincrónicamente mediante un mutex.Cree un mutex. Cuando se cumpla la señal abierta, deje que cada EA adquiera el mutex. Una vez que se adquiere el mutex, verifique si ya existe una orden abierta. Si es así, no abras otro. Como solo un EA puede adquirir el mutex en un momento dado, el EA que intente adquirirlo tendrá que esperar al EA que lo posee. De esta manera, los EA ya no funcionan en paralelo, una condición previa para lograr lo que desea. Una implementación funcional es
    https://github.com/rosasurfer/mt4-mq...fLib1.mq4#L315(hace muchas más cosas de las que necesita), un caso de uso real
    https://github.com/rosasurfer/mt4-mq...ller.mq4#L1030, las líneas 1049-1051 nunca son ejecutadas por más de exactamente un EA (comportamiento sincrónico en lugar de asincrónico).
    https://www.mql5.com/en/docs/globals...setonconditiones tu amigo y punto de partida para la investigación.

  4. #3

    Cita Iniciado por ;
    {quote} Ambos EA se ejecutan en diferentes subprocesos y se ejecutan de forma asíncrona. Si abren posiciones exactamente al mismo tiempo, debe obligarlas a ejecutarse sincrónicamente mediante un mutex. Crea una exclusión mutua. Cuando se cumpla la señal abierta, deje que cada EA adquiera el mutex. Una vez que se adquiere el mutex, verifique si ya existe una orden abierta. Si es así, no abras otro. Como solo un EA puede adquirir el mutex en un momento dado, el EA que intente adquirirlo tendrá que esperar al EA que lo posee. De esta manera, los EA ya no funcionan en paralelo, una condición previa ...
    Está bien, gracias. Entonces, un mutex de mi investigación es un archivo mqh externo, ¿verdad?

  5. #4

    Cita Iniciado por ;
    {cita} Ok, gracias. Entonces, un mutex de mi investigación es un archivo mqh externo, ¿verdad?
    Puede ser cualquier recurso accesible por un lenguaje de programación con una forma definida de gestionar el acceso. En términos muy simples, es un contador que cuenta el número de accesos de un recurso. Tal recurso también puede llamarse semáforo, y un mutex es un semáforo especial: uno con acceso exclusivo mutuo. Significa que es un contador con el número máximo de accesos simultáneos de 1. Si un bloque de código adquiere el recurso, ningún otro bloque de código puede hacerlo (exclusivo mutuo). Todos los demás tienen que esperar hasta que el código propietario del recurso lo libere. Llámalo bloqueo si quieres. En MQL, puede usar un controlador de ventana, un controlador de archivo, una variable especial o, en el caso de mi marco, es solo una cadena MQL normal almacenada en el gráfico. GlobalVariableSetOnCondition() le permite crear un mecanismo de bloqueo utilizando una variable global como el recurso para el que puede administrar el acceso. Busque GlobalVariableSetOnCondition y bloquee en el foro de MQL5, hay algunas implementaciones de ejemplo más. GlobalVariableSetOnCondition() es parte de MQL especialmente para ese propósito, nada más. De la documentación anterior de MQL4: La función brinda acceso atómico a una variable global, por lo que puede usarse para proporcionar un semáforo para la interacción de varios expertos que trabajan simultáneamente dentro de una terminal de cliente.

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •  
Uso de cookies
Utilizamos cookies propias y de terceros para elaborar información estadística y mostrarle publicidad personalizada a través del análisis de su navegación. Si continúa navegando acepta su uso. Más información y política de cookies.
     

Aviso legal: Ni forosforex.com ni ninguna persona involucrada en forosforex.com aceptarán ninguna responsabilidad por cualquier pérdida o daño en el trading como resultado de la confianza en la información contenida en este sitio web, incluidos datos, cotizaciones, gráficos y señales de compra/venta. Por favor, infórmese plenamente de los riesgos y costes asociados a las operaciones en los mercados financieros, una de las formas de inversión que más riesgos entrañan.
forosforex.com le quiere recordar que los datos contenidos en este sitio web no son necesariamente en tiempo real ni exactos. forosforex.com no asume responsabilidad alguna por las pérdidas en que usted podría incurrir como resultado de la utilización de estos datos. Este acuerdo se rige por su versión en inglés, que prevalecerá siempre que haya alguna discrepancia entre la versión en inglés y la versión en español. Los CFD son un producto difícil de entender, varios organismos reguladores consideran que no es adecuado para inversores minoristas debido a su complejidad y riesgo.
Advertencia de riesgo: Los CFDs son un producto difícil de entender, y puede no ser adecuado para inversores minoristas debido a su complejidad y riesgo. Existe la posibilidad de sufrir una pérdida igual o superior a la inversión. Por lo tanto, no debe invertir o arriesgar dinero que no pueda permitirse perder. Debe asegurarse de que comprende todos los riesgos. Antes de abrir una cuenta en un broker por favor sea consciente e infórmese de los riesgos asociados con el trading. El contenido de este sitio web no debe interpretarse como asesoramiento personal. ForosForex recomienda que busque el consejo de un asesor financiero independiente.