Publi

Publi

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


  1. #1

    ergaster


    Reputación:
    Poder de reputación: 3

    Mensajes: 24
    Créditos: 847

    Orden de apertura a la tercera vela si se cumple condicion


    Publi
    Hola a todos. Aun estoy aprendiendo a esto de programar asesores expertos y necesito un poco de ayuda.

    Quiero hacer lo siguiente; Tenemos una condición con un if, si esta se cumple entra dentro de el pero no quiero que se emita una ordensend hasta el cierre de la tercera vela siempre y cuando se cumpla otra condición.

    Es decir vela actual (le llamaremos primera)-> entra en el primer if condicional al cumplirse la condicion->cierre de esa vela pero sigue dentro de la condición pasa un parametro ->vela segunda pasa un parametro-> vela tercera pasa otro parametro-> al cierre comprueba los parámetros en un if condicional. Si es favorable emite un ordensend, si no volveria a empezar hasta que se cumpliera el primer if.

    ontick()
    {
    if(condición)
    {
    cierre vela primera
    parametro
    Cierre vela segunda
    parametro
    Cierre vela tercera
    parametro
    if(condición parámetros al cierre de la vela tercera es favorable)
    {
    ordersend
    }
    }
    }

    Como puedo hacerlo. Estuve mirando por ahí que hacen algo parecido con bucles for, pero no llego a entender.

    Estoy con mql4 pero con la build moderna, asi que utilizo ontick en lugar de star

    Un saludo y gracias.
    Foro de Forex Trading United

     

  2.                         
    Publi
  3. #2

    ergaster


    Reputación:
    Poder de reputación: 5

    Mensajes: 32
    Créditos: 661

    Re: Orden de apertura a la tercera vela si se cumple condicion

    Cita Iniciado por Rick7 Ver mensaje
    Hola a todos. Aun estoy aprendiendo a esto de programar asesores expertos y necesito un poco de ayuda.

    Quiero hacer lo siguiente; Tenemos una condición con un if, si esta se cumple entra dentro de el pero no quiero que se emita una ordensend hasta el cierre de la tercera vela siempre y cuando se cumpla otra condición.

    Es decir vela actual (le llamaremos primera)-> entra en el primer if condicional al cumplirse la condicion->cierre de esa vela pero sigue dentro de la condición pasa un parametro ->vela segunda pasa un parametro-> vela tercera pasa otro parametro-> al cierre comprueba los parámetros en un if condicional. Si es favorable emite un ordensend, si no volveria a empezar hasta que se cumpliera el primer if.

    ontick()
    {
    if(condición)
    {
    cierre vela primera
    parametro
    Cierre vela segunda
    parametro
    Cierre vela tercera
    parametro
    if(condición parámetros al cierre de la vela tercera es favorable)
    {
    ordersend
    }
    }
    }

    Como puedo hacerlo. Estuve mirando por ahí que hacen algo parecido con bucles for, pero no llego a entender.

    Estoy con mql4 pero con la build moderna, asi que utilizo ontick en lugar de star

    Un saludo y gracias.

    hola Rick7
    A ver, yo utilizo otro lenguaje de programación pero como la lógica suele ser la misma, te doy una idea a ver si te vale:
    Creo que debes considerar esa tercera vela como si fuera la actual, es decir cuando se cierre esa tercera vela cumpliendo la condición que quieres.
    Luego también obligas a que cumpla otra condicion (o la misma) en la vela anterior (que sería tu segunda vela), y luego obligas a que también cumpla en la vela vela anterior a la anterior (que sería tu primera vela).
    Mas o menos así: if condicion1 AND condicion2[1] AND condicion3[2]
    los numeros entre corchetes serían las velas anterior y la anteanterior
    Foro de Forex Trading United

     

  4. #3

    ergaster


    Reputación:
    Poder de reputación: 5

    Mensajes: 32
    Créditos: 661

    Re: Orden de apertura a la tercera vela si se cumple condicion

    para ir renonmbrando la variable o variables con nuevos parámetros, se podría "anidar" las condiciones if. Mas o menos así:

    If condición1[3] then beguin
    {nuevo valor a la variable};
    if condicion2[2] then
    {nuevo valor a la variable} ;
    if concicion3 then
    {nuevo valor a la variable};
    orden venta/compra;
    end;
    Foro de Forex Trading United

     

  5. #4

    Erectus


    Reputación:
    Poder de reputación: 3

    Espana
    Mensajes: 106
    Créditos: 2.963

    Re: Orden de apertura a la tercera vela si se cumple condicion

    Creo que lo estás planteando mal, o mejor dicho, creo que hay una mejor forma de tratarlo.

    La vela actual no es la primera de uin grupo de 4, sino que es la última. de esta forma, podrás hacer un if, llamando a funciones para la vela "current+3", "current+2", "current +1" y "Current".

    De esta forma seria de la siguente manera:

    if (condicion en indicador "current+3" && condicion en indicador "current+2" && condicion en indicador "current+1" && condicion en indicador "current"){
    compra/vender o lo que sea que quieras hacer
    }

    De todas forms es algo complicado de explicar así.

    SI necesitas algo concreto por aqui estaré.

    Uns aludo,
    Foro de Forex Trading United

     

  6. #5
    Avatar de nelapsi
    habilis


    Reputación:
    Poder de reputación: 3

    Espana
    Mensajes: 121

    Re: Orden de apertura a la tercera vela si se cumple condicion

    Buenas,

    Voy a verlo e intento investigartelo amigo.

    Un abrazo...

    Cita Iniciado por Rick7 Ver mensaje
    Hola a todos. Aun estoy aprendiendo a esto de programar asesores expertos y necesito un poco de ayuda.

    Quiero hacer lo siguiente; Tenemos una condición con un if, si esta se cumple entra dentro de el pero no quiero que se emita una ordensend hasta el cierre de la tercera vela siempre y cuando se cumpla otra condición.

    Es decir vela actual (le llamaremos primera)-> entra en el primer if condicional al cumplirse la condicion->cierre de esa vela pero sigue dentro de la condición pasa un parametro ->vela segunda pasa un parametro-> vela tercera pasa otro parametro-> al cierre comprueba los parámetros en un if condicional. Si es favorable emite un ordensend, si no volveria a empezar hasta que se cumpliera el primer if.

    ontick()
    {
    if(condición)
    {
    cierre vela primera
    parametro
    Cierre vela segunda
    parametro
    Cierre vela tercera
    parametro
    if(condición parámetros al cierre de la vela tercera es favorable)
    {
    ordersend
    }
    }
    }

    Como puedo hacerlo. Estuve mirando por ahí que hacen algo parecido con bucles for, pero no llego a entender.

    Estoy con mql4 pero con la build moderna, asi que utilizo ontick en lugar de star

    Un saludo y gracias.
    Foro de Forex Trading United

     

  7. #6

    ergaster


    Reputación:
    Poder de reputación: 3

    Mensajes: 24
    Créditos: 847

    Re: Orden de apertura a la tercera vela si se cumple condicion

    Hola y gracias a todos por intentar ayudar.

    Igual no me explique bien. Voy a intentar explicarlo de nuevo.

    Imagina que tengo un indicador iRSI y al cumplirse una condición entra dentro del if. Por ejemplo:

    ontick()
    {

    RSIactual=iRSI(Symbol(),1,14,0,0);

    if(RSIactual<=70)
    {

    Ahora esta en la vela actual, pero quiero que cuando se cierren la dos proximas velas, al cierre de la segunda, me haga otra comprobación con otra condición. La duda que tengo no es como hacer la condicional, si no como puedo hacer para que el programa siga su curso hasta que hayan pasado dos velas desde que entro en el if(RSIactual<=70)

    }
    }

    Entiendo que puedo comprobar el cierre del RSI de las velas anteriores a la actual o al reves (que es lo que me aconseja "almipa"), pero no es lo que quiero hacer, porque la orden de compra dependerá de si la tendencia es alcista o no, al cierre de la segunda vela. En ese momento el RSI no cuenta para nada.

    No se si consigo explicarme bien, se que es difícil y mas para mi que no domino esto, se programar en C pero esto es diferente.


    Agradezco mucho vuestra ayuda.
    Un saludo.
    Foro de Forex Trading United

     

  8. #7




    Reputación:
    Poder de reputación: 2

    Espana
    Mensajes: 10
    Créditos: 193

    Re: Orden de apertura a la tercera vela si se cumple condicion

    Cita Iniciado por Rick7 Ver mensaje
    ontick()
    {
    if(condición)
    {
    cierre vela primera
    parametro
    Cierre vela segunda
    parametro
    Cierre vela tercera
    parametro
    if(condición parámetros al cierre de la vela tercera es favorable)
    {
    ordersend
    }
    }
    }
    En leguaje Mql4 directo sería mas o menos así:

    Código:
    bool condicion;
    
    void OnTick()
    {
    if(condicion); //Si OK, seguimos
    {
    if (Close[3]>1) ;//Aqui pones lo que quieres que calule; //Si OK, seguimos
    {
    if (Close[2]>1) ;//Aqui pones lo que quieres que calule; //Si OK, seguimos
    {
    if (Close[1]>1) ;//Aqui pones lo que quieres que calule; //Si OK, seguimos
    {
    if (Close[0]>1) ;//Condicion parametros al cierre de la vela tercera es favorable; //Si OK, ponemos la Orden
    {
    //OrderSend tal tal
    }}}}}
    
    //Cerramos void OnTick
    }
    Tienes que hacer un "if" dentro de otro, porque si Close[3] se cumple, pasa al siguiente y así hasta que pone la orden.
    Si alguno de los "if" no se cumple saltará la última llave y no pondrá la orden.

    Piensa que la vela actual es la vela cero o su valor al cierre será el de Close[0]. Por eso yo haría las preguntas para poner la orden al Open de la vela cero y preguntaría para saber que ha hecho a partir del Close[1].

    Hay muchas maneras de hacerlo.
    Tambien puedes asignar a una variable si se cumple cada condición y al final montar un solo "If" y poner la orden.

    Lo que quieres hacer es RSI y acción del precio, entonces tienes que calcular con los Close[x], High[x], Low[x], de las últimas velas preguntando si ha hecho lo que quieres que haga.
    Saludos.
    Foro de Forex Trading United

     

  9. #8

    Erectus


    Reputación:
    Poder de reputación: 3

    Espana
    Mensajes: 106
    Créditos: 2.963

    Re: Orden de apertura a la tercera vela si se cumple condicion

    Hola RIck,

    Insisto en mi idea en lo mas fácil que puedes hacer (bajo mi humilde punto de vista claro )

    ontick()
    {

    RSI_hace_3_velas=iRSI(Symbol(),1,14,0,3); -> el último 3 indica que es la vela desplazada 3 posiciones a la izquierda. Recuerda que la actua es la 0.

    if(RSI_hace_3_velas<=70)
    {
    //Segunda condicion, como no sé me la invento
    Stoc_hace_2_velas=iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN,2) -> este ultimo 2 como he comentado antes, es el desplazamiento.

    if (Stoc_hace_2_velas>50)
    {
    //TErcera condicion, tambien me la invento, precio actual por encima de la vela anterior

    if (iHigh(NULL,0,1)>Ask)
    {
    //Ultima condicion con valores actuales (en la vela activa)

    if (iVolume>100)
    {
    //Compro, Vendo o lo que sea.

    }
    }
    }
    }
    }

    Otra opcion que a mi me gusta más dado que son valores pasados es definir todo y ejecutar solo un if de esta manera:

    RSI_hace_3_velas=iRSI(Symbol(),1,14,0,3);
    Stoc_hace_2_velas=iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN,2);
    if (Stoc_hace_2_velas>50) Mayor_hace_1_vela=TRUE else Mayor_hace_1_vela=FALSE;
    if (iVolume>100) Volumen_actual_ok=TRUE else Volumen_actual_ok=FALSE;

    if (RSI_hace_3_velas>X && Stoc_hace_2_velas>Y && Mayor_hace_1_vela && Volumen_actual_ok)
    {

    // Haz lo que sea

    }

    Obviamente faltan definir correctamente las variable, X e y darles valor, o definirlas como extern.

    Espero haberte ayudado con este ejemplo pero si sigues con dudas, miraré el hilo para ayudarte más si es necesario.

    Un saludo,
    Foro de Forex Trading United

     

  10. #9

    ergaster


    Reputación:
    Poder de reputación: 3

    Mensajes: 24
    Créditos: 847

    Re: Orden de apertura a la tercera vela si se cumple condicion

    Muchas gracias a todos!!

    Me estais sirviendo de mucha ayuda y lo que es mejor es que me estais dando ideas. Luego también me estais enseñando un poco de la sintaxis ya que desconocia Close, iHigh, iVolume, etc... Como bien dije estoy aprendiendo y a medida que me van surgiendo las cosas voy preguntando o mirando la ayuda dándole a F1 en el metaeditor, que es bastante útil por cierto.

    Si no os importa no cierro el hilo todavía por si me surge alguna duda. Solo puedo programar un rato a estas horas, ya que el trabajo me absorbe el resto del dia, por eso solo contesto a la noche.

    Voy a probar lo que me habéis dicho y a ver que tal me va, ya os contare.

    Un saludo y gracias!!!
    Foro de Forex Trading United

     

  11. #10

    ergaster


    Reputación:
    Poder de reputación: 3

    Mensajes: 24
    Créditos: 847

    Re: Orden de apertura a la tercera vela si se cumple condicion


    Publi
    Hola de nuevo a tod@s.

    Al fin conseguí ver lo que me decía almipa y MF1Forex, estaba obcecado con contar las velas hacia delante y no lo veía jaja.
    Cada día aprendo mas y leo para conocer diferentes estrategias. Ahora que estoy definiendo una (la cual esta muy verde) me encuentro con el problema a la hora de hacer backtest con el mt4. No consigo mas de un 25% en la calidad de modelado en el periodo m1. Estuve leyendo diferentes hilos en este foro y por la red y realmente no encuentro nada claro salvo que lo mejor es bajarse los datos de dukascopy y después utilizar un script de birt o algo así, pero como casi todos son de hace dos años, no se si funcionarían con al versión del mt4 que tengo, es la build 830.

    Alguien me podría pasar un manual actualizado (para tontos), de como conseguir la calidad del modelado al 90%?, ya si fuera al 99% seria la ostia.

    Un saludo y gracias.
    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