Publi

Publi

Resultados 1 al 5 de 5


  1. #1

    ergaster


    Reputación:
    Poder de reputación: 3

    Mensajes: 24
    Créditos: 847

    Saber si una operacion esta abierta


    Publi
    Buenas tardes a tod@s,

    Estoy programando un asesor experto en mql4, y estoy un poco estancado intentando que el programa compruebe si hay alguna operación abierta. Sabe diferenciar cuando esta abierta una operación con el número mágico OrderMagicNumber()==Magico , pero no se como hacer para que sepa que esa operación del número mágico sea de ask o bid. De la forma que lo tengo puesto con el OrderType()==0 lo hace bien pero claro, para cualquier operación abierta la haya abierto manualmente o mediante el asesor. El problema esta ahí.

    Mi intención es poner este asesor en dos pares distintos, obviamente cada asesor tendrá un número mágico diferente, y que en cada par, solo pueda haber una de ask y otra de bid a la vez abiertas, si se da el caso.

    Ontick()
    {
    for(i=0;i<=OrdersTotal()-1;i++)
    {
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
    if(OrderMagicNumber()==Magico && OrderType()==0)
    {
    OrdenAbiertaC=true;
    }
    if(OrderMagicNumber()==Magico && OrderType()==1)
    {
    OrdenAbiertaV=true;
    }
    }
    }

    No se si esta es la mejor forma de recorrer todas las operaciones que están abiertas, ya que con el OrdersTotal() contabilizará todas las operaciones sean de ese par de divisas o no.
    Estoy abierto a ofertas para hacerlo de otra forma. Matizo que soy bastante novato

    Un saludo y gracias.
    Foro de Forex Trading United

     

  2.                         
    Publi
  3. #2
    Avatar de robertomar
    Heidelbergensis


    Reputación:
    Poder de reputación: 9

    Espana
    Mensajes: 905
    Créditos: 15.929

    Re: Saber si una operacion esta abierta

    Compi, qué quieres decir con que si la operación es de Ask o de Bid???, que si es una operación de compra o de venta???.

    El EA que quieres hacer solo tiene una operación abierta en cada par de compra y una de venta en cada momento o puede tener más??



    Saludos y un abrazo.
    Foro de Forex Trading United

     

  4. #3

    ergaster


    Reputación:
    Poder de reputación: 3

    Mensajes: 24
    Créditos: 847

    Re: Saber si una operacion esta abierta

    Cita Iniciado por robertomar Ver mensaje
    Compi, qué quieres decir con que si la operación es de Ask o de Bid???, que si es una operación de compra o de venta???.

    El EA que quieres hacer solo tiene una operación abierta en cada par de compra y una de venta en cada momento o puede tener más??



    Saludos y un abrazo.
    Hola gracias por contestar. Sí, si es una operación de compra o de venta.

    Quiero decir que en cada par puede haber una de compra y otra de venta a la vez, pero solo una de cada.

    Un saludo.
    Foro de Forex Trading United

     

  5. #4
    Avatar de robertomar
    Heidelbergensis


    Reputación:
    Poder de reputación: 9

    Espana
    Mensajes: 905
    Créditos: 15.929

    Re: Saber si una operacion esta abierta

    Cita Iniciado por Rick7 Ver mensaje
    Hola gracias por contestar. Sí, si es una operación de compra o de venta.

    Quiero decir que en cada par puede haber una de compra y otra de venta a la vez, pero solo una de cada.

    Un saludo.

    Ok compi, comprendido. Tienes que seleccionar las ordenes, y luego meterle filtros para que solo te cuente las que sean del par donde esta funcionando el EA y del Magic que tenga el EA y una vez que encuentra de ese par y ese Magic, ya mirar que tipo de orden es, si es OP_BUY o es OP_SELL (esto si el EA solo abre ordenes a mercado). Quedaría así, por ejemplo:

    Código:
    bool buy = false,  sell = false;
        
           for (int i = OrdersTotal() - 1; i >= 0; i--) {
          
           if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES) )
            {
            if (OrderSymbol() == _Symbol && OrderMagicNumber() == Magico) {
                
                
                if(OrderType() == OP_BUY)   buy  = true;  
                if(OrderType() == OP_SELL)  sell = true; 
                
                }
              }
            }
    
         if(!buy)  {
         // aquí lo que quieras hacer si no hay compra, (OrderSend o lo que sea)
        }
    
         if(!sell)  {
         // aquí lo que quieras hacer si no hay venta
        }

    Saludos y un abrazo.
    Foro de Forex Trading United

     

  6. #5

    ergaster


    Reputación:
    Poder de reputación: 3

    Mensajes: 24
    Créditos: 847

    Re: Saber si una operacion esta abierta


    Publi
    Cita Iniciado por robertomar Ver mensaje
    Ok compi, comprendido. Tienes que seleccionar las ordenes, y luego meterle filtros para que solo te cuente las que sean del par donde esta funcionando el EA y del Magic que tenga el EA y una vez que encuentra de ese par y ese Magic, ya mirar que tipo de orden es, si es OP_BUY o es OP_SELL (esto si el EA solo abre ordenes a mercado). Quedaría así, por ejemplo:

    Código:
    bool buy = false,  sell = false;
        
           for (int i = OrdersTotal() - 1; i >= 0; i--) {
          
           if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES) )
            {
            if (OrderSymbol() == _Symbol && OrderMagicNumber() == Magico) {
                
                
                if(OrderType() == OP_BUY)   buy  = true;  
                if(OrderType() == OP_SELL)  sell = true; 
                
                }
              }
            }
    
         if(!buy)  {
         // aquí lo que quieras hacer si no hay compra, (OrderSend o lo que sea)
        }
    
         if(!sell)  {
         // aquí lo que quieras hacer si no hay venta
        }

    Saludos y un abrazo.
    Gracias por contestar, si, es justo eso lo que necesito. Me imagine que preguntando que par era podría solucionarlo, pero tenia la duda por el tipo de orden abierta, ya que solo hacia referencia en esa linea del código al tipo de orden, por lo que creía que me haría lo mismo y me recorrería todas las abiertas fueran o no de ese par (es lo que me pasaba antes). Entiendo que al poner if(OrderType() == OP_BUY) buy = true; dentro del if en el que se pregunta el tipo de par, ya discrimina los que no son de ese par y de ese numero mágico.
    Muchas gracias de nuevo, hoy empece mis vacaciones de verano, y voy a estar 15 días fuera así que lo probare en cuanto vuelva.

    Un saludo a todos y buen verano!!
    Foro de Forex Trading United

     

Publi
Publi


Aviso Legal
Ley Orgánica 15/1999, de 13 de diciembre, de Protección de Datos de Carácter Personal