Resultados 1 al 8 de 8

Tema: No puedo obtener el precio actual una vez abierta una operación de compra [EA]

  1. #1
    Buenas a todos, tengo un problema con un EA, a ver si me podeis ayudar:

    En mi código he hecho que se abra una operación de compra y justo después que me muestre el precio de compra. Pero resulta que una vez abierta una operación, el precio deja de variar, es decir, se queda congelado.

    Este es mi código:

    Código:
    int start()
    {
    //Permitir sólo una orden activa
    int TotalOrdenes = OrdersTotal();
    if(TotalOrdenes>=1)return (0);
    
    //Obtener precio de compra
    double precio = Ask;
    //Comprar
    OrderSend(Symbol(), OP_BUY, 0.01, Ask, 3, 0, 0, NULL, 0, 0, Green);
    //Mostrar precio actual
    Comment(“Precio: “,precio);
    return(0);
    }
    No puedo obtener el precio actual(ni de ningún otro indicador) una vez abierta una operación de compra.
    Si se quita la orden de compra, entonces sí se muestra como varía el precio(y de cualquier indicador).

    ¿Cómo puedo hacer para obtener las variaciones una vez abierta dicha operación de compra?

    Un saludo, gracias.

  2.                         
    Publicidad
  3. #2
    Saludos. Lo que te pasa es que tras abrir una orden tu variable TotalOrdenes ya es mayor que 1 y entonces haces un return(0) y todo el código que hay debajo no se ejecuta.

  4. #3
    Ostras, pues es verdad…

    Entonces, ¿cómo podría hacer para limitar el número de operaciones a uno y que al mismo tiempo siga mostrando el valor de compra una vez abierta esa operación?

    ¿No hay forma de limitar el número de operaciones sin tener que usar return(0)?

  5. #4

  6. #5
    Vale, ya he descubierto donde estaba el fallo, era simple. Lo pongo por si a alguien le interesa:

    if(OrdersTotal()==0){
    OrderSend(Symbol(), OP_BUY, 0.01, Ask, 3, 0, 0, NULL, 0, 0, Green);
    }
    double precio = Bid;
    Comment(“Precio: “,precio);
    El return(0) era innecesario.

  7. #6
    Buena solución con respecto a limitar las órdenes abiertas pero tu comentario no te mostrará el precio de apertura de la orden si no el precio Bid actual. Para obtener el precio de apertura de una orden tienes que utilizar la función OrderOpenPrice() después de haber seleccionado la orden de la que quieres obtener su precio. Algo así serviría:

    Code:
    Código:
    int ticket = 0;
     double precio;
     if(OrdersTotal()==0){
     ticket = OrderSend(Symbol(), OP_BUY, 0.01, Ask, 3, 0, 0, NULL, 0, 0, Green);
     //si ticket es mayor a cero la orden se abrio correctamente
     //y se puede seleccionar por su número de ticket
     if(ticket>0 && OrderSelect(ticket, SELECT_BY_TICKET)==true) {
     precio = OrderOpenPrice();
     Comment(“Orden abierta en: “, precio);
     }
     }

  8. #7
    Efectivamente, lo que yo quería era obtener el precio actual; sin embargo desconocía la existencia de la función OrderOpenPrice(). Quizá me sirva para más adelante.

    Gracias.

  9. #8
    Para el precio actual si lo hacías bien, pero no había quedado claro que es lo que querías mostrar.

    Cualquier otra pregunta no dudes en hacerla, siempre estoy por aquí.

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
  •  
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.