Como utilizar correctamente OrderSelect()?

 

Publi

Resultados 1 al 4 de 4

Tema: Como utilizar correctamente OrderSelect()?

  1. #1
    Estoy intentando usar la función OrderSelect de mql4 (he empezado con mql4, ya me pondré con mql5 que es más complicado). He tomado este código de mql4.com pero no me funciona….

    Code:
    Código:
    if(OrderSelect(1, SELECT_BY_POS)==true)
     Print(“open price  “,OrderOpenPrice());
     else
     Print(“OrderSelect returned the error of “,GetLastError());

  2. #2
    El código que has puesto es totalmente correcto, lo único que estás utilizando la selección por posición y no por ticket y, por tanto, el primer parámetro de OrderSelect() es el índice de la posición, tu has puesto el número 1, lo que hace que seleccione la primera orden, tanto abiertas como pendientes, de tu lista de órdenes activas.
    Para seleccionar de forma adecuada la orden enviada por tu EA tendrías que poner algo así:

    Code:
    Código:
    for (int i = 0; i < OrdersTotal(); i++)
    {
    if (OrderSelect(i,SELECT_BY_POS) )
    {
    if ((OrderSymbol() == Symbol())  &&  (OrderMagicNumber() == MagicNumber))
    {
    Print("open price  ",OrderOpenPrice());
    }
    }
    }
    De todas formas a ver si viene alguien que sabe más de programación que yo…..

  3. #3
    Ahora pruebo ese código, pero podrías explicarlo, no entiendo na!!!

  4. #4
    El código que puso eFXto es de las mejores formas para buscar tu orden de forma correcta.
    Se pasa el OrderSelect a todas las órdenes activas utilizando el operador cíclico for, se comprueba que la orden es para el símbolo en el que está activo el EA y además se comprueba que el MagicNumber de la orden sea el MagicNumber de tu EA. Si todas las comprobaciones son correctas se ejecuta la función Print() y puedes estar seguro de que la orden seleccionada fue enviada por tu EA. El operador for se ejecuta para los valores de i=0 hasta que i sea mayor o igual a OrdersTotal(), es decir, hasta desde i=0 hasta i=OrdersTotal()-1; con esto das un repaso a todas las órdenes activas.

    Mr.Pip, en el código que pusistes realizas únicamente la selección de la orden que ocupa el índice 1. La numeración del índice de órdenes comienza en cero y llega hasta el total de órdenes menos 1, por ejemplo, si tienes 3 órdenes el índice sería 0, 1 y 2. Por tanto, si tienes una única orden, esta ocupa el índice cero y tu código no funciona. También, si tienes varias órdenes sigues seleccionando la que está en el índice 1 (que sería la segunda órden de la lista vista en Metatrader) sin comprobar si fue o no enviada por tu EA.

Etiquetas para este tema

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •  
Cookies
Utilizamos cookies propias y de terceros para mejorar nuestros servicios y mostrarle publicidad relacionada con sus preferencias mediante el análisis de sus hábitos de navegación. Si continua navegando, consideramos que acepta su uso. Puede cambiar la configuración u obtener más información y política de cookies aquí.