Vender y comprar si se cumple la condición

 

Publi

Vender y comprar si se cumple la condición

 

Publi

Resultados 1 al 7 de 7


  1. #1

    Re: Vender y comprar si se cumple la condición


    Publi
    Estimado amigo,

    Cierto lo que comentas, la gran mayoría de los lenguajes de programación tienen las mismas rutinas: bucles, condiciones, funciones, etc. Aquí con el MQL4 no es la excepción, simplemente en cuanto te familiarices con la sintaxis podrás crear fácilmente tus propios scripts o EAs.

    Aunque tengo tiempo sin codificar pude buscar la chuleta para un ejemplo de colocación de orden:

    int ticket=OrderSend(Symbol(),OP_BUY,1,price,3,stoplos s,takeprofit,"My order",16384,0,clrGreen);


    Algunos tips:

    Notarás cuando escribas el comando OrderSend, el editor lo presentará en color azul, luego los parámetros en negro. Inmediatamente, al abrir el paréntesis, el mismo editor crea una franja amarilla con todos los parámetros que integran dicho comando. No es necesario que coloques todos, algunos pueden ser dejados en blanco respetando la posición de las comas.

    Desde el mismo editor también puedes acceder al último menú "Ayuda" o "Help" y seleccionas "manual de Referencia de MQL4" (o MQL5). Una vez desplegada tal sección, tendrás un menú en la zona izquierda con varias pestañas. Selecciona la pestaña "Indice" y tendrás toda la gama de instrucciones, comandos y funciones que utiliza el MQL4, por supuesto, cada uno de ellos tendrá su explicación en la parte derecha y un ejemplo de sintaxis correcta.

    La instrucción OrderSend funciona mejor si le asignas una variable del tipo Integer tal cual como está en el ejemplo denominada ticket, es decir declarándola previamente la primera vez: int ticket.

    Veo que tu instrucción IF tiene múltiples condiciones. Yo solía probar cada condición por separado, luego de asegurarme que todas funcionaban, procedía a colocarlas en una sola instrucción.

    En tu caso aplica:

    If (condición1 es verdadera y condición2 es verdadera y condición3 es verdadera)
    int ticket=OrderSend(...

    Cordiales saludos y éxitos!
    Foro de Forex Trading United

  2. Publi
    Publi


  3. #2




    Reputación:
    Poder de reputación: 5

    Espana
    Mensajes: 7
    Créditos: 327

    Re: Vender y comprar si se cumple la condición

    Cita Iniciado por tonyvaloz Ver mensaje
    De nada mi estimado amigo...
    En relación a tus nuevas dudas te comento lo siguiente:

    1) Es correcto, la variante OP_BUY abre una orden de compra al precio actual del mercado, es decir, al más reciente precio Ask recibido desde el servidor. Por lo tanto, no hay que colocar parámetro alguno de precio. Debes dejarlo en blanco dejando la coma correspondiente. Ese será el momento del cierre de tu vela actual.

    Si fuese el caso de una OP_BUYLIMIT o OP_BUYSTOP, sí tendrías que colocar tu precio deseado, en el primero por debajo del mercado y en el segundo por encima del mercado.

    Ten en cuenta también que toda orden BUY abre la compra por el precio Ask y al momento de su cierre lo hace por el precio Bid. Por supuesto, lo contrario sucede con la orden SELL.


    2) La sentencia int ticket=OrderSend(... hace lo siguiente:
    • Genera un valor entero en la variable ticket, de hecho, podrá servirte más adelante para comprobar su disparo. Por ejemplo: si ticket > 0 quiere decir que la orden fue disparada.
    • Paralelamente, dispara tu orden deseada.



    Saludos y éxitos!
    Gracias nuevamente por tu ayuda y tus consejos.

    Si quisiera en un momento, antes de abrir una orden de venta o compra, ¿PUedo verificar si hay alguna abierta primero para cerrarla? Es decir algo como:

    Verifico la condición
    Cierro cualquier operación abierta en ese par
    Ejecuto la compra/venta nueva.
    Para así no tener que abrir y cerrar operaciones yo manualmente, imagino que tendría esta sintaxis:

    OrderClose(order_id,1,Ask,3,Red);
    ¿Ask sería en el caso de un orderclose de venta y bid en un orderclose de compra?

    El problema sería verificar si existe ya una operación abierta (O sea, no pendiente, si no que esté ya funcionando) y cerrarla para abrir la nueva para que sólo haya una operación en el par elegido. ¿Quizá con una condición if? Y supongo que en el order_id es el valor de "ticket" , ¿no?

    Perdona las molestias y gracias nuevamente.
    Foro de Forex Trading United

  4. #3




    Reputación:
    Poder de reputación: 7

    Bahamas
    Mensajes: 136
    Créditos: 768

    Re: Vender y comprar si se cumple la condición

    ....Soy un poco nuevo con el tema de programación mql, pero como tengo experiencia en otros lenguajes de programación lo básico de bucles, condiciones, funciones y esas cosas las conozco.....
    Hola como según lo que te leo entiendes de programación la regla numero uno de un buen programador es siempre revisar la documentación. Aqui te lo dejo:

    Trade Functions - MQL4 Reference

    Seguramente así podes avanzar mejor,

    Saludo,
    Foro de Forex Trading United

  5. #4

    Re: Vender y comprar si se cumple la condición

    Cita Iniciado por Reload Ver mensaje
    Tonyvaloz, muchas gracias por responder y tomarte la molestia de darme los tips. Tengo una duda aún, en la siguiente función que expones:



    Imagino que el op_buy abre la opción de compra, pero me gustaría saber qué pongo en price para que se abra justo en esa condición. Es decir, qué tengo que poner en el price para que cuando el programa detecte que la condición es correcta abra la posición en ese precio que es el cierre de la vela actual, no sé si me explico. Y en teoría, si no quiero poner stoploss ni take profit, esos valores los dejo a 0 o simplemente pongo la coma sin ningún valor, cierto?

    La variable ticket se guarda en un valor entero, pero esa sentencia que expuse arriba abre la posición directamente o simplemente agrega valor a la variable ticket?

    De nada mi estimado amigo...
    En relación a tus nuevas dudas te comento lo siguiente:

    1) Es correcto, la variante OP_BUY abre una orden de compra al precio actual del mercado, es decir, al más reciente precio Ask recibido desde el servidor. Por lo tanto, no hay que colocar parámetro alguno de precio. Debes dejarlo en blanco dejando la coma correspondiente. Ese será el momento del cierre de tu vela actual.

    Si fuese el caso de una OP_BUYLIMIT o OP_BUYSTOP, sí tendrías que colocar tu precio deseado, en el primero por debajo del mercado y en el segundo por encima del mercado.

    Ten en cuenta también que toda orden BUY abre la compra por el precio Ask y al momento de su cierre lo hace por el precio Bid. Por supuesto, lo contrario sucede con la orden SELL.


    2) La sentencia int ticket=OrderSend(... hace lo siguiente:
    • Genera un valor entero en la variable ticket, de hecho, podrá servirte más adelante para comprobar su disparo. Por ejemplo: si ticket > 0 quiere decir que la orden fue disparada.
    • Paralelamente, dispara tu orden deseada.



    Saludos y éxitos!
    Foro de Forex Trading United

  6. #5




    Reputación:
    Poder de reputación: 5

    Espana
    Mensajes: 7
    Créditos: 327

    Re: Vender y comprar si se cumple la condición

    Cita Iniciado por tonyvaloz Ver mensaje
    Estimado amigo,

    Cierto lo que comentas, la gran mayoría de los lenguajes de programación tienen las mismas rutinas: bucles, condiciones, funciones, etc. Aquí con el MQL4 no es la excepción, simplemente en cuanto te familiarices con la sintaxis podrás crear fácilmente tus propios scripts o EAs.

    Aunque tengo tiempo sin codificar pude buscar la chuleta para un ejemplo de colocación de orden:

    int ticket=OrderSend(Symbol(),OP_BUY,1,price,3,stoplos s,takeprofit,"My order",16384,0,clrGreen);


    Algunos tips:

    Notarás cuando escribas el comando OrderSend, el editor lo presentará en color azul, luego los parámetros en negro. Inmediatamente, al abrir el paréntesis, el mismo editor crea una franja amarilla con todos los parámetros que integran dicho comando. No es necesario que coloques todos, algunos pueden ser dejados en blanco respetando la posición de las comas.

    Desde el mismo editor también puedes acceder al último menú "Ayuda" o "Help" y seleccionas "manual de Referencia de MQL4" (o MQL5). Una vez desplegada tal sección, tendrás un menú en la zona izquierda con varias pestañas. Selecciona la pestaña "Indice" y tendrás toda la gama de instrucciones, comandos y funciones que utiliza el MQL4, por supuesto, cada uno de ellos tendrá su explicación en la parte derecha y un ejemplo de sintaxis correcta.

    La instrucción OrderSend funciona mejor si le asignas una variable del tipo Integer tal cual como está en el ejemplo denominada ticket, es decir declarándola previamente la primera vez: int ticket.

    Veo que tu instrucción IF tiene múltiples condiciones. Yo solía probar cada condición por separado, luego de asegurarme que todas funcionaban, procedía a colocarlas en una sola instrucción.

    En tu caso aplica:

    If (condición1 es verdadera y condición2 es verdadera y condición3 es verdadera)
    int ticket=OrderSend(...

    Cordiales saludos y éxitos!
    Tonyvaloz, muchas gracias por responder y tomarte la molestia de darme los tips. Tengo una duda aún, en la siguiente función que expones:

    int ticket=OrderSend(Symbol(),OP_BUY,1,price,3,stoplos s,takeprofit,"My order",16384,0,clrGreen);
    Imagino que el op_buy abre la opción de compra, pero me gustaría saber qué pongo en price para que se abra justo en esa condición. Es decir, qué tengo que poner en el price para que cuando el programa detecte que la condición es correcta abra la posición en ese precio que es el cierre de la vela actual, no sé si me explico. Y en teoría, si no quiero poner stoploss ni take profit, esos valores los dejo a 0 o simplemente pongo la coma sin ningún valor, cierto?

    La variable ticket se guarda en un valor entero, pero esa sentencia que expuse arriba abre la posición directamente o simplemente agrega valor a la variable ticket?
    Foro de Forex Trading United

  7. #6




    Reputación:
    Poder de reputación: 5

    Espana
    Mensajes: 7
    Créditos: 327

    Vender y comprar si se cumple la condición

    Hola chicos,Soy un poco nuevo con el tema de programación mql, pero como tengo experiencia en otros lenguajes de programación lo básico de bucles, condiciones, funciones y esas cosas las conozco. Estoy en la parte del código en la que necesito que si se cumple la condición que pongo, se realice una venta, pongo el código: if(Signal!=Fresh[0]) { if(PopUpAlert){ Alert(Symbol()," ","Vender"); OrderType() == OP_SELL; }}El problema es que no sé si lo tengo bien, ya que no sé abrir posiciones de compra y venta. Agradecería si alguien me echara una mano.Gracias

    - - - Updated - - -

    Cita Iniciado por Reload Ver mensaje
    Hola chicos,Soy un poco nuevo con el tema de programación mql, pero como tengo experiencia en otros lenguajes de programación lo básico de bucles, condiciones, funciones y esas cosas las conozco. Estoy en la parte del código en la que necesito que si se cumple la condición que pongo, se realice una venta, pongo el código: if(Signal!=Fresh[0]) { if(PopUpAlert){ Alert(Symbol()," ","Vender"); OrderType() == OP_SELL; }}El problema es que no sé si lo tengo bien, ya que no sé abrir posiciones de compra y venta. Agradecería si alguien me echara una mano.Gracias
    perdonad es que no sé editar el mensaje y el código salió muy mal, lo pongo con cota:

    if(Signal!=Fresh[0])
    {
    if(PopUpAlert){
    Alert(Symbol()," ","Vender");
    OrderType() == OP_SELL;
    }
    }
    Foro de Forex Trading United

  8. #7

    Re: Vender y comprar si se cumple la condición


    Publi
    Cita Iniciado por Reload Ver mensaje
    Gracias nuevamente por tu ayuda y tus consejos.

    Si quisiera en un momento, antes de abrir una orden de venta o compra, ¿PUedo verificar si hay alguna abierta primero para cerrarla? Es decir algo como:



    Para así no tener que abrir y cerrar operaciones yo manualmente, imagino que tendría esta sintaxis:



    ¿Ask sería en el caso de un orderclose de venta y bid en un orderclose de compra?

    El problema sería verificar si existe ya una operación abierta (O sea, no pendiente, si no que esté ya funcionando) y cerrarla para abrir la nueva para que sólo haya una operación en el par elegido. ¿Quizá con una condición if? Y supongo que en el order_id es el valor de "ticket" , ¿no?

    Perdona las molestias y gracias nuevamente.


    No te preocupes por las preguntas!
    En estos días no debemos salir de nuestros hogares. De manera que tenemos tiempo a favor.


    1) Para verificar si previamente tienes una orden ya sea pendiente o disparada, la instrucción es la siguiente:

    int OrderType();

    Podrá arrojarte seis valores después de tu consulta que son los siguientes: 0, 1, 2, 3, 4, y 5

    a continuación su significado:

    OP_BUY Buy operation
    OP_SELL 1 Sell operation
    OP_BUYLIMIT 2 Buy limit pending order
    OP_SELLLIMIT 3 Sell limit pending order
    OP_BUYSTOP 4 Buy stop pending order
    OP_SELLSTOP 5 Sell stop pending order

    nota que las dos primeras corresponden a las órdenes de mercado, es decir, las que ya están disparadas.

    Posiblemente necesites colocar dicha instrucción de chequeo dentro de un loop o condición If.


    2) La regla es la siguiente:
    Si generas una orden de compra OP_BUY... el precio será el Ask
    La instrucción OrderClose utilizará el parámetro Bid

    Si generas una orden de compra OP_SELL... el precio será Bid
    La instrucción OrderClose utilizará el parámetro Ask


    3) La variable orden_id está asignada por el programa. Toda orden colocada tiene su propio número que la identifica, es el número largo que ves en la pestaña Trade, (primera columna en la izquierda de órdenes abiertas o pendientes). Mientras que el valor de la variable ticket, previamente creada por ti como usuario, suele ser un número mayor que cero una vez disparada la orden, si mal no recuerdo es un 1. Si el valor es positivo quiere decir que la orden fue disparada correctamente, por el contrario, si no se dispara por error alguno el valor pasa a ser -1.


    Saludos de nuevo!
    Foro de Forex Trading United

This website uses 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.
     

 

Publi


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