Publi

Publi

Página 1 de 2 12 ÚltimoÚltimo
Resultados 1 al 10 de 19


  1. #1




    Reputación:
    Poder de reputación: 2

    Mensajes: 60
    Créditos: 0

    problema abriendo operaciones en diferentes pares (MT4)


    Publi
    ¿Alguien sabe cómo hacer para colocar en el código del EA de MT4, para que abra operaciones si no hay ninguna operación abierta "en ese par", independientemente de que haya una abierta en otro par?
    Foro de Forex Trading United

     

  2.                         
    Publi
  3. #2
    Avatar de Wolfman
    Heidelbergensis


    Reputación:
    Poder de reputación: 15

    Mensajes: 2,052
    Créditos: 7,617

    Re: problema abriendo operaciones en diferentes pares (MT4)

    Cita Iniciado por trader0 Ver mensaje
    ¿Alguien sabe cómo hacer para colocar en el código del EA de MT4, para que abra operaciones si no hay ninguna operación abierta "en ese par", independientemente de que haya una abierta en otro par?

    No se si te has explicado bien.

    Quieres que el expert vertifique primero si no hay operacion abierta en ese par primero?

    O solo quieres que envie la orden?

    Si es lo segundo solo debes de agregar despues de las condiciones establecidas para la apertura de operacion el comando Ordersend()


    Saludos.
    Foro de Forex Trading United



    "La mente es como un paracaídas, sólo funciona si se abre. Albert Einstein

  4. #3




    Reputación:
    Poder de reputación: 5

    Mensajes: 17
    Créditos: 426

    Re: problema abriendo operaciones en diferentes pares (MT4)

    Cita Iniciado por Wolfman Ver mensaje
    No se si te has explicado bien.

    Quieres que el expert vertifique primero si no hay operacion abierta en ese par primero?

    O solo quieres que envie la orden?

    Si es lo segundo solo debes de agregar despues de las condiciones establecidas para la apertura de operacion el comando Ordersend()


    Saludos.
    Imagino que asignandoles un magicnumber diferente para cada par.
    Foro de Forex Trading United

     

  5. #4
    Avatar de tivag
    antecessor


    Reputación:
    Poder de reputación: 9

    Espana
    Mensajes: 610
    Créditos: 3,998

    Re: problema abriendo operaciones en diferentes pares (MT4)

    hola asi te podria servir :

    {
    bool exists = false;
    for (int i=OrdersTotal()-1; i >= 0; i--)
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
    {
    if (OrderSymbol() == Symbol())
    {
    exists = true;
    }
    }
    else
    {
    Print("OrderSelect() error - ", ErrorDescription(GetLastError()));
    }

    if (exists == false)
    {
    Siguiente bloque ();

    }
    }
    Foro de Forex Trading United

     

  6. #5




    Reputación:
    Poder de reputación: 2

    Mensajes: 60
    Créditos: 0

    Re: problema abriendo operaciones en diferentes pares (MT4)

    Cita Iniciado por tivag Ver mensaje
    hola asi te podria servir :

    {
    bool exists = false;
    for (int i=OrdersTotal()-1; i >= 0; i--)
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
    {
    if (OrderSymbol() == Symbol())
    {
    exists = true;
    }
    }
    else
    {
    Print("OrderSelect() error - ", ErrorDescription(GetLastError()));
    }

    if (exists == false)
    {
    Siguiente bloque ();

    }
    }

    Hola tivag. Gracias por responder. Solo para confirmar: en este código lo que se está diciendo es que, si no hay ninguna operación en el symbolo en que está puesto el EA, entonces... (y lo que se ponga que haga). Correcto?

    Es decir, si coloco este indicador en una ventana del EURUSD, y también en el USDCADy en el GBPUSD, el EA colocado en eurusd si no hay ninguna operacion abierta en este par, hara lo que se le diga, independientemente de si hay o no abiertas en los otros (USDCAD y GBPUSD). Esto es correcto?
    Foro de Forex Trading United

     

  7. #6
    Avatar de tivag
    antecessor


    Reputación:
    Poder de reputación: 9

    Espana
    Mensajes: 610
    Créditos: 3,998

    Re: problema abriendo operaciones en diferentes pares (MT4)

    Cita Iniciado por trader0 Ver mensaje
    Hola tivag. Gracias por responder. Solo para confirmar: en este código lo que se está diciendo es que, si no hay ninguna operación en el symbolo en que está puesto el EA, entonces... (y lo que se ponga que haga). Correcto?

    Es decir, si coloco este indicador en una ventana del EURUSD, y también en el USDCADy en el GBPUSD, el EA colocado en eurusd si no hay ninguna operacion abierta en este par, hara lo que se le diga, independientemente de si hay o no abiertas en los otros (USDCAD y GBPUSD). Esto es correcto?
    De nada , para eso estamos, efectivamente es asi , si no existe nada en ese par ( ni operaciones abiertas ni pendientes) que haga lo que tu quieras, espero que te sirva

    saludos
    Foro de Forex Trading United

     

  8. #7




    Reputación:
    Poder de reputación: 2

    Mensajes: 60
    Créditos: 0

    Re: problema abriendo operaciones en diferentes pares (MT4)

    Cita Iniciado por tivag Ver mensaje
    De nada , para eso estamos, efectivamente es asi , si no existe nada en ese par ( ni operaciones abiertas ni pendientes) que haga lo que tu quieras, espero que te sirva

    saludos
    Muchas gracias tivag. Y si no es molestia, es que estuve probando el código y no está abriendo las operaciones. No se si sea que lo escribí mal. Mas abajo lo que coloqué.

    Antes de ver el código me gustaría preguntar, ¿este código funciona para abirir posiciones en pares diferentes y no en ventanas diferentes? es así no? Si es así, ¿hay forma de que sirva en caso de que las ventanas a las que se asocia el EA sean diferentes, así sean los mismos pares? es decir, que si yo tengo 3 ventanas abiertas del EUR/USD cada una , y asocio el EA a cada una, las tome por separado (si en una hay una posicion abierta pero en la otra OrdersTotal()==0, abra en esta en que no hay ninguna). ¿Sabes como puedo hacer esto?

    Aquí como lo puse que no está abriendo las operaciones:

    Código:
       bool exists = false;
       for (int i=OrdersTotal()-1; i >= 0; i--)      
          {
          if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
             {
             if (OrderSymbol() == Symbol())
                {
                exists = true;
                }
             }
             else
                {
                Alert("OrderSelect() error - ", GetLastError());
                }
    
          if (exists == false)
             {
             int ticket1=OrderSend(NULL, OP_BUY, 0.10, Ask, 10, Bid-0.0020, Bid+0.0020, NULL, 0, 120, clrNONE);    
    
             }
          }
    Foro de Forex Trading United

     

  9. #8
    Avatar de tivag
    antecessor


    Reputación:
    Poder de reputación: 9

    Espana
    Mensajes: 610
    Créditos: 3,998

    Re: problema abriendo operaciones en diferentes pares (MT4)

    Cita Iniciado por trader0 Ver mensaje
    Muchas gracias tivag. Y si no es molestia, es que estuve probando el código y no está abriendo las operaciones. No se si sea que lo escribí mal. Mas abajo lo que coloqué.

    Antes de ver el código me gustaría preguntar, ¿este código funciona para abirir posiciones en pares diferentes y no en ventanas diferentes? es así no? Si es así, ¿hay forma de que sirva en caso de que las ventanas a las que se asocia el EA sean diferentes, así sean los mismos pares? es decir, que si yo tengo 3 ventanas abiertas del EUR/USD cada una , y asocio el EA a cada una, las tome por separado (si en una hay una posicion abierta pero en la otra OrdersTotal()==0, abra en esta en que no hay ninguna). ¿Sabes como puedo hacer esto?

    Aquí como lo puse que no está abriendo las operaciones:

    Código:
       bool exists = false;
       for (int i=OrdersTotal()-1; i >= 0; i--)      
          {
          if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
             {
             if (OrderSymbol() == Symbol())
                {
                exists = true;
                }
             }
             else
                {
                Alert("OrderSelect() error - ", GetLastError());
                }
    
          if (exists == false)
             {
             int ticket1=OrderSend(NULL, OP_BUY, 0.10, Ask, 10, Bid-0.0020, Bid+0.0020, NULL, 0, 120, clrNONE);    
    
             }
          }

    hola he probado el codigo, tal cual lo has escrito , es decir, lo que he echo es un robot que sino existe nada en ese par me abra operacion, y a mi si me abre operaciones, asi que el error deberia estar en otro lado. No te marca ningun error en el diario?

    Este codigo lo que te dice es que si no existe nada en ese par haga lo que quieras, es decir, ni exista ordenes abiertas ni ordenes pendientes en ese par, por lo que si tienes 3 ventanas del eur_usd y en una de ellas hay abierta algo o alguna pendiente no se te ejecutara en el resto de ventanas ( siempre y cuando tengas puesto ese codigo en el resto de ventanas jejej).

    No se si te he entendido bien la ultima parte, quieres que si en una ventana del eur_usd haya algo abierto pero en otra ventana no haya na abierto entonces que haga lo que quieras no? si es asi podrias jugar con los numeros magicos de las ordenes, poniendo en cada ventana un numero magico distinto, chequearlos si existen o no y hacer lo que sea....

    por ejemplo si existe la orden de numero magico 1 que haga lo que quieras :

    "{
    bool exists = false;
    for (int i=OrdersTotal()-1; i >= 0; i--)
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
    {
    if (OrderType() == OP_BUY && OrderSymbol() == Symbol() && OrderMagicNumber() == 1)
    {
    exists = true;
    }
    }
    else
    {
    Print("OrderSelect() error - ", ErrorDescription(GetLastError()));
    }

    if (exists)
    {
    lo que quieras;

    }
    }"


    y jugar tambien con que si no existe la orden de numero magico 1 que haga lo que tu quieras:


    "{
    bool exists = false;
    for (int i=OrdersTotal()-1; i >= 0; i--)
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
    {
    if (OrderType() == OP_BUY && OrderSymbol() == Symbol() && OrderMagicNumber() == 1)
    {
    exists = true;
    }
    }
    else
    {
    Print("OrderSelect() error - ", ErrorDescription(GetLastError()));
    }

    if (exists == false)
    {
    lo que quieras();

    }
    }

    "

    saludos espero que te sirva
    Foro de Forex Trading United

     

  10. #9




    Reputación:
    Poder de reputación: 2

    Mensajes: 60
    Créditos: 0

    Re: problema abriendo operaciones en diferentes pares (MT4)

    Cita Iniciado por trader0 Ver mensaje
    Muchas gracias tivag. Y si no es molestia, es que estuve probando el código y no está abriendo las operaciones. No se si sea que lo escribí mal. Mas abajo lo que coloqué...
    Cita Iniciado por tivag Ver mensaje
    hola he probado el codigo, tal cual lo has escrito , es decir, lo que he echo es un robot que sino existe nada en ese par me abra operacion, y a mi si me abre operaciones, asi que el error deberia estar en otro lado. No te marca ningun error en el diario?...
    No tivag, no dice ningún error. Simplemente no abre operaciones. El código que publicaste por acá, no ta que fue sin utilizar el botón de etiquetar código. Estoy pensando que haya colocado las llaves de una manera diferente a como tu las estas colocando. ¿Es así como tu las estás colocando? ¿Podrías copiar y pegar y isando la función del foro "envolver con etiqueta CODE el código" para verlo tal cual lo estás colocando tu en tu MT4?

    Mira, esto es lo que yo estoy colocando, tal cual:

    Código:
       bool exists = false;
       for (int i=OrdersTotal()-1; i >= 0; i--)      
          {
          if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
             {
             if (OrderSymbol() == Symbol())
                {
                exists = true;
                }
             else
                {
                Alert("OrderSelect() error - ", GetLastError());
                }
             }
          
          if (exists == false)
             {
             int ticket1=OrderSend(NULL, OP_BUY, 0.10, Ask, 10, Bid-0.0020, Bid+0.0020, NULL, 0, 120, clrNONE);    
    
             }
          }


    Los códigos que colocaste, esta parte que dice:

    Código:
    bool exists = false;
        for (int i=OrdersTotal()-1; i >= 0; i--)
        if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
        {
            if (OrderType() == OP_BUY && OrderSymbol() == Symbol() && OrderMagicNumber() == 1)
    ¿Aquí seleccionará todas las operaciones que estubieran abiertas, sean cuantas sean, y revisará si el número mágico de la orden coresponde con el que pregunto (que en este caso 1)?


    Muchas gracias tivag por toda tu ayuda. Muy agradecido. Espero que pueda funcionarme ahora. Sigo buscando a ver por qué no me funciono aunque a ti te funcionó... ?? Ahí dejé el código tal cual lo estoy colocando por si encuentras algo difrente a como tu lo estás colocando pues si te funcionó a ti debería estarme funcionando a mi también... ??

    Gracias de nuevo.
    Foro de Forex Trading United
    Última edición por trader0; 15-06-2015 a las 18:12

     

  11. #10
    Avatar de tivag
    antecessor


    Reputación:
    Poder de reputación: 9

    Espana
    Mensajes: 610
    Créditos: 3,998

    Re: problema abriendo operaciones en diferentes pares (MT4)


    Publi
    Cita Iniciado por trader0 Ver mensaje
    No tivag, no dice ningún error. Simplemente no abre operaciones. El código que publicaste por acá, no ta que fue sin utilizar el botón de etiquetar código. Estoy pensando que haya colocado las llaves de una manera diferente a como tu las estas colocando. ¿Es así como tu las estás colocando? ¿Podrías copiar y pegar y isando la función del foro "envolver con etiqueta CODE el código" para verlo tal cual lo estás colocando tu en tu MT4?

    Mira, esto es lo que yo estoy colocando, tal cual:

    Código:
       bool exists = false;
       for (int i=OrdersTotal()-1; i >= 0; i--)      
          {
          if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
             {
             if (OrderSymbol() == Symbol())
                {
                exists = true;
                }
             else
                {
                Alert("OrderSelect() error - ", GetLastError());
                }
             }
          
          if (exists == false)
             {
             int ticket1=OrderSend(NULL, OP_BUY, 0.10, Ask, 10, Bid-0.0020, Bid+0.0020, NULL, 0, 120, clrNONE);    
    
             }
          }


    Los códigos que colocaste, esta parte que dice:

    Código:
    bool exists = false;
        for (int i=OrdersTotal()-1; i >= 0; i--)
        if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
        {
            if (OrderType() == OP_BUY && OrderSymbol() == Symbol() && OrderMagicNumber() == 1)
    ¿Aquí seleccionará todas las operaciones que estubieran abiertas, sean cuantas sean, y revisará si el número mágico de la orden coresponde con el que pregunto (que en este caso 1)?


    Muchas gracias tivag por toda tu ayuda. Muy agradecido. Espero que pueda funcionarme ahora. Sigo buscando a ver por qué no me funciono aunque a ti te funcionó... ?? Ahí dejé el código tal cual lo estoy colocando por si encuentras algo difrente a como tu lo estás colocando pues si te funcionó a ti debería estarme funcionando a mi también... ??

    Gracias de nuevo.
    hola sin problemas te lo vuelvo a copiar con el code

    en el caso de por ejemplo si existe la orden de numero magico 1 que haga lo que quieras :

    Código:
    {
        bool exists = false;
        for (int i=OrdersTotal()-1; i >= 0; i--)
        if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
        {
            if (OrderType() == OP_BUY && OrderSymbol() == Symbol() && OrderMagicNumber() == 1)
            {
                exists = true;
            }
        }
        else
        {
            Print("OrderSelect() error - ", ErrorDescription(GetLastError()));
        }
        
        if (exists)
        {
            lo que quieras;
            
        }
    }
    en el caso de

    que si no existe la orden de numero magico 1 que haga lo que tu quieras:

    Código:
    {
        bool exists = false;
        for (int i=OrdersTotal()-1; i >= 0; i--)
        if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
        {
            if (OrderType() == OP_BUY && OrderSymbol() == Symbol() && OrderMagicNumber() == 1)
            {
                exists = true;
            }
        }
        else
        {
            Print("OrderSelect() error - ", ErrorDescription(GetLastError()));
        }
        
        if (exists == false)
        {
            lo que quieras();
            
        }
    }

    Y en el primer caso que te puse:

    Código:
    {
        bool exists = false;
        for (int i=OrdersTotal()-1; i >= 0; i--)
        if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
        {
            if (OrderSymbol() == Symbol())
            {
                exists = true;
            }
        }
        else
        {
            Print("OrderSelect() error - ", ErrorDescription(GetLastError()));
        }
        
        if (exists == false)
        {
            Siguiente bloque ();
            
        }
    }
    Efectivamente hay en lo que has puesto te pillara las ordenes buy de ese simbolo con numero magico 1, en este caso.

    Lo que puedes hacer para descartar cosas es por ejemplo si dudas que sea el codigo este pues haces un ea simple solo con ese codigo por ejemplo si no existe la buy nº magico 1 que compre y lo ejecutas y si no te funciona ya sabes que algo del codigo estas fallando, que se ejecuta entonces ya te toca ir mirando en el resto del ea que parte es la que falla , puede que sea un calculo , una condicion ...etc yo a veces cuando no doy donde puesde estar el error , les pongo que me pinte un arrow para saber en que parte si llega y en que parte no llega y asi voy descartando que parte del codigo puede ser, algo basto si pero efectivo cuando estas mareado jajaja.

    saludos y a ver si esta vez te sale bien
    Foro de Forex Trading United

     

Página 1 de 2 12 ÚltimoÚltimo
Publi
Publi


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