EA MT4 Por Favor Ayuda Robot

 

Publi

Por Favor Ayuda Robot

 

Publi

Resultados 1 al 9 de 9


  1. #1
    Avatar de cazandovelas



    Reputación:
    Poder de reputación: 12

    Mensajes: 194
    Créditos: 3.688

    Re: Por Favor Ayuda Robot


    Publi
    Cita Iniciado por robertomar Ver mensaje
    Compi, ya te lo comenté por privado, si lo que quieres es que solo abra la compra cuando cruce 100 hacia arriba (y solo la venta cuando cruce de -100 hacia abajo) te dije como tenías que hacerlo, no vale con que pongas que CCI > 100, porque entonces mientras esté por encima de 100 seguirá lanzando compras una y otra vez.

    Aparte, si quieres que teniendo una orden abierta, ya no lance ninguna más hasta que cierre esa, antes de lanzarlas tendrías que chequear si tienes órdenes abiertas o no.

    Código:
       double CCI0 = iCCI(_Symbol, 0, 14, PRICE_TYPICAL, 0);
       double CCI1 = iCCI(_Symbol, 0, 14, PRICE_TYPICAL, 1);
       
       if(CCI1 <= 100 && CCI0 > 100)
       {
       //  Compruebas que el EA no tenga ninguna orden abierta
       //  Y si no tiene, entonces das orden de compra
       
       }
       
       if(CCI1 >= -100 && CCI0 < -100)
       {
       //  Compruebas que el EA no tenga ninguna orden abierta
       //  Y si no tiene, entonces das orden de venta
       
       }
    Si quieres que sea a cierre de vela en lugar de 0 y 1 en el ultimo parámetro del CCI le tendrías que poner 1 y 2.

    Disculpa, pero no tengo más tiempo como para hacertelo yo entero, por aquí por el foro hay varios posts donde varios compañeros, entre ellos yo, ya pusimos códigos para poder chequear las órdenes que lleva abiertas el EA en relación a su Magic Number, etc, etc.

    Espero que lo puedas solucionar con estas indicaciones y las de los posts que te hablo, que son de julio o por ahí, vamos que son recientes.

    Saludos y un abrazo.

    Muchas gracias amigo por querer ayudarme lo valoro mucho gracias de corazon.Te pido perdon si soy un poco cansado o molesto mucho, lo siento.

    Te he hecho caso he añadido tu codigo al que estaba haciendo y he buscado una forma de selecionas la orden y cerrar la que estviera abierta, pero despues de comprobar el codigo y ponerlo a prueba sigue sin funcionar como yo quiero el codigo es este.

    Código:
     // Variables Externasextern double Lote = 0.1;
    extern double StopLoss = 20;
    extern double TakeProfit = 40;
    
    
    extern int Slippage = 0;
    extern int MagicNumber = 123;
    
    
    
    
    extern int numerOrdenes = 1;
    extern int Desfase = 0;
    
    
    // Variables Globales
    double ConvPip;
    int ConvPipSlippage;
    int TickectCompra;
    int TickectVenta;
    
    
    
    
    
    
    //+------------------------------------------------------------------+
    //| expert initialization function                                   |
    //+------------------------------------------------------------------+
    
    
      
     
    
    
    //+------------------------------------------------------------------+
    //| expert start function                                            |
    //+------------------------------------------------------------------+
    int start()
      {
    
    
          
       OrderSelect(0,SELECT_BY_POS);
       
          if (TickectCompra > 0 && Bid - OrderOpenPrice() >= 2 * ConvPip)
          {
             double StopLossCompraMod = OrderOpenPrice();
             OrderModify(TickectCompra,OrderOpenPrice(),StopLossCompraMod,OrderTakeProfit(),0,Blue);
          }
          
          if (TickectVenta > 0 && OrderOpenPrice() - Ask >= 2 * ConvPip)
          {
             double StopLossVentaMod = OrderOpenPrice();
             OrderModify(TickectVenta,OrderOpenPrice(),StopLossVentaMod,OrderTakeProfit(),0,Blue);
          }     
       
       
       int TotalOrdenes = OrdersTotal();
       
       if(TotalOrdenes == 1) return(0);
       
       //Orden de Compra
       double CCI0 = iCCI(_Symbol, 0, 14, PRICE_TYPICAL, 0); 
       double CCI1 = iCCI(_Symbol, 0, 14, PRICE_TYPICAL, 1); 
       
       
       if(CCI1 <= 100 && CCI0 > 100) {
    
    
          OrderSelect(TickectVenta,SELECT_BY_TICKET);
          
          //Cerrar orden Venta
          if(TickectVenta > 0)
          {
             OrderClose(TickectVenta,OrderLots(),Ask,ConvPipSlippage,Red);
          }
          
          
          // Abrir Operacion de compra
          TickectCompra = OrderSend(Symbol(),OP_BUY,Lote,Ask,ConvPipSlippage,Ask - (StopLoss * Point),Ask + (TakeProfit * Point),"Orden de Compra",MagicNumber,0,Green);
          
          TickectVenta = 0;
      
       }
        
       
       //Orden de Venta
       if(CCI1 >= -100 && CCI0 < -100)
       {
          OrderSelect(TickectCompra,SELECT_BY_TICKET);
          
          //Cerrar orden Venta
          if(TickectCompra > 0)
          {
             OrderClose(TickectCompra,OrderLots(),Bid,ConvPipSlippage,Red);
          }
    
    
          // Abrir Operacion de venta
          TickectVenta = OrderSend(Symbol(),OP_SELL,Lote,Bid,ConvPipSlippage,Bid + (StopLoss * Point),Bid - (TakeProfit * Point),"Orden de Venta",MagicNumber,0,Red);
          
          TickectCompra = 0;
       }    
     
     return(0);
      }

    Amigo creo que me rindo por que aun poniendo lo que me has dicho sigue abriendo mas ordenes si esta por encima de 100 o por debajo de 100 es decir que no abre una sola posicion sigue abriendo una y otra, me refiero a que abre una y otra pero cuando se cierra la actual es decir siempre hay una sola posicion abierta en ese momento Pero lo que yo es que solo se abra una vez la posicion cuando cruce la linea y No que cuando este encima de 100 vuelva a abrir otra eso no quiero pero parece que es imposible hacerlo con codigo ME RINDO.

    Bueno amigo y compañero , te agredezco mucho tu ayuda incluso te voy a dar Reputacion por tu aporte educativo sobre mql4, ademas creo que eres un excelente programador por eso si empiezo ganar en el foro algo lo primero sera contratarte como programador para poder hacer un EA ROBOT mucho mas complejo y con muchas mas opciones y parametros que no seria para nada igual que este sencillo ea que quiero construir para uso personal pero bueno no se puede hacer y lo acepto
    Foro de Forex Trading United


  2. Publi
    Publi


  3. #2
    Avatar de cazandovelas



    Reputación:
    Poder de reputación: 12

    Mensajes: 194
    Créditos: 3.688

    Re: Por Favor Ayuda Robot

    Cita Iniciado por didaz Ver mensaje
    Buenas....
    Creo que es más o menos lo que querías
    Le he añadido algunas cosas : un breakeven, traillingstop , control de horarios

    Espero que te sea útil .

    Por Favor Ayuda Robot-cazandovelas-dax-m5.png
    MUCHAS GRACIAS POR TODO EL TRABAJO QUE HAS HECHO CON EL CODIGO GRACIAASSSSSS!!

    Que sorpresa me he llevado, estoy contento y alegre, te estoy muy agradecido ha sido todo un detalle todas las molestias que te has tomado gracias, he estado leyendo el codigo y hasta tiene comentarios y todo trailling stop breakeven esta muy completo gracias.

    Lo he estado testeando con la prueba de estrategia de la metatrader y no me funciona lo del CCi por que lo pongo en modo visual y espero aver si funciona lo del indicador como yo lo queria el cci pero veo que pasa la linea de 100 y la de -100 y no se abre la posicion y despues alomejor sin venir a cuento mas adelante se abre la posicion pero no creo que sea por que se cumple la condicion del cci, es que si lo veo en modo visual veo que pasa las lineas del cci como si nada y no ejecuta nada. Alomejor no es ningun fallo y e falta algo en la configuracion activar no se...

    Pero no pasa nada, te estoy muy agradecido ahora tengo una base de codigo excelente para poder continuar con mi aprendizaje para poderle hacer las modificaciones que aprenda para que el cci haga exactamente lo que yo queria,

    Gracias por todo compañero, eternamente agradecido te deseo que te vaya todo bien en el trading y la vida
    Foro de Forex Trading United


  4. #3
    Avatar de cazandovelas



    Reputación:
    Poder de reputación: 12

    Mensajes: 194
    Créditos: 3.688

    Re: Por Favor Ayuda Robot

    Cita Iniciado por jmsetrader Ver mensaje
    Bueno, la verdad es que en cuanto a programación no puedo ayudarte mucho Cazandovelas por no decir nada ya que no tengo ni papa de programación en mql... eso sí... tengo unas dudas... cuando dices que has vuelto a fallar y a perderlo todo.... lo hiciste con esa estrategia? es una estrategia en la que sólo te basas y confías del CCI? la siguiente es una pregunta tonta que doy por hecho que la has hecho... la has testeado? si la has testeado y ves que a la larga es una estrategia ganadora, quizá no te haga falta el robot... quizá simplemente tengas que trabajar tus nervios, o tus ansiedades a la hora de operar, no sé... hay un libro muy bueno que se llama Trading en la zona que creo que te puede ayudar... el principio es un poco tostón pero cuando entra en materia es muy muy interesante y profundo... a mí me ayudó...
    Si crees que de todas formas necesitas el EA y por lo visto es tan sencillo (aunque no te pueda ayudar) puedes intentar hacerlo en fxdreema, donde hay un editor que es muy sencillo de utilizar y siendo tan sencilla la estrategia no te costará mucho hacerlo...
    pero seguro que note hace falta, si tienes todos los cimientos correctos (estrategia testeada, fiable y tal), confía en tu estrategia y actúa como un robot... a la larga si las pruebas han sido positivas en real debería serlo.
    Suerte.

    Gracias por contestar,

    Lo perdi todo con otra estrategia price action con soportes y resistencias me ponia nervioso y me entraba muchas ansiedad a la hora de perder la oporunidad y entraba en malos momentos.
    La estrategia del CCi la he testeado y a la larga con la configuracion que le pongo de stoploss y takeprofit parece que gana mas que pierde.
    A mi me gustaria hacerlo yo sin necesidad de ningun programa de apoyo como fxdreema porque ya probe otros similares y no me gusta el resultado que me da porque me limita por si quiero añadirle algo mas.
    El libro de trading en la zona ya lo he leido esta bastante bien el libro y me sirvio mucho pero despues de 3 años sigo cometiendo los mismo errores por eso quiero hacer el robot yque el robot ejecute las ordenes sin sentimientos

    Gracias por los consejos y lo tendre en cuenta, aunque amigo creo que yo ser disciplinado es imposible por mi personalidad no hago cas me cuesta mucho.
    Foro de Forex Trading United


  5. #4
    Avatar de cazandovelas



    Reputación:
    Poder de reputación: 12

    Mensajes: 194
    Créditos: 3.688

    Re: Por Favor Ayuda Robot

    Cita Iniciado por robertomar Ver mensaje
    Compi, ya te lo comenté por privado, si lo que quieres es que solo abra la compra cuando cruce 100 hacia arriba (y solo la venta cuando cruce de -100 hacia abajo) te dije como tenías que hacerlo, no vale con que pongas que CCI > 100, porque entonces mientras esté por encima de 100 seguirá lanzando compras una y otra vez.

    Aparte, si quieres que teniendo una orden abierta, ya no lance ninguna más hasta que cierre esa, antes de lanzarlas tendrías que chequear si tienes órdenes abiertas o no.

    Código:
       double CCI0 = iCCI(_Symbol, 0, 14, PRICE_TYPICAL, 0);
       double CCI1 = iCCI(_Symbol, 0, 14, PRICE_TYPICAL, 1);
       
       if(CCI1 <= 100 && CCI0 > 100)
       {
       //  Compruebas que el EA no tenga ninguna orden abierta
       //  Y si no tiene, entonces das orden de compra
       
       }
       
       if(CCI1 >= -100 && CCI0 < -100)
       {
       //  Compruebas que el EA no tenga ninguna orden abierta
       //  Y si no tiene, entonces das orden de venta
       
       }
    Si quieres que sea a cierre de vela en lugar de 0 y 1 en el ultimo parámetro del CCI le tendrías que poner 1 y 2.

    Disculpa, pero no tengo más tiempo como para hacertelo yo entero, por aquí por el foro hay varios posts donde varios compañeros, entre ellos yo, ya pusimos códigos para poder chequear las órdenes que lleva abiertas el EA en relación a su Magic Number, etc, etc.

    Espero que lo puedas solucionar con estas indicaciones y las de los posts que te hablo, que son de julio o por ahí, vamos que son recientes.

    Saludos y un abrazo.
    Gracias compañero y amigo por querer ayudarme Gracias.
    Voy a aplicarme el estudio de mql4 y voy a seguir tus indicaciones para seguir aprendiendo y algun dia hare mi propio robot rentable estoy seguro aunqe tarde 2 o 3 años jeje xD

    Muchas gracias por contestarte. Gracias por todo.
    Foro de Forex Trading United


  6. #5
    Avatar de cazandovelas



    Reputación:
    Poder de reputación: 12

    Mensajes: 194
    Créditos: 3.688

    Por Favor Ayuda Robot

    Buenos dias compañeros;

    Despues de tener una mala racha perdedora en este post los compañeros me ayudaron muchos con sus consejos es el siguiente:
    http://www.tradingunited.es/foro/tra...a-trading.html

    Lo recupere todo incluso con beneficios, pero lo que paso otra vez lo mismo lo volvi a perder todo en una racha perdedora, entonces he llegado a esta conlusion "Yo mismo me hago perder, por no tener disciplina y ponerme nervioso por miedo a perder la oportunidad" entonces he pensando:

    Un robot "NO TIENE SENTIMIENTOS" es mi solucion.

    El problema que hay es que a mi humano que soy igual que todo no me da tiempo darle en el momento exacto cuando la linea cruza o no puedo estar pendiente siempre esperando a que cruce, pero un robot si puede hacer esto


    Mi experencia sobre la programacion MQL4 es basica lo simple, conocimiento basico, por esto os pido ayuda amigos y compañeros porque confio en vosotros y se que sois buenos programadores.

    Aqui pongo el grafico del indicador con lo que quiero que haga el robot
    No se por que la imagen se inserta como archivo adjunto yo solo quiero que la imagen sea vea en el foro normal no se... porque sale asi jeje bueno no pasa nada esta es la imagen

    graficocci.bmp

    Por Favor Ayuda Robot-bmp_thumb.gif

    Tan bien mi estrategia es bastante sencilla, es el indicador CCi si cruza arriba la linea de 100 compra si se da la vuelta y cruza hacia abajo la linea de 100 venta, asi de simple y con la linea de -100 igual.


    Llevo tiempo leyendo manuales y viendo videotutoriales de mql4 y ademas estoy leyendo el libro oficial de mql4 pero lo entiendo y me hago un lio, yo solo queria hacer mi propio ea sencillo y testearlo para mi estrategia y ver si hacia que consiguiera beneficio despues compartirlo en el foro de tradingunited con el backtesting. Bueno amigos este es el codigo que e echo y estoy probando pero no funciona.

    Código PHP:
    // Variables Externas
    extern double Lotes 0.10;
    extern double StopLoss 10;
    extern double TakeProfit 10;




    //+------------------------------------------------------------------+
    //| Expert deinitialization function                                 |
    //+------------------------------------------------------------------+
    int start()
      {
    //---
     
      
    double CCi iCCI (Symbol(),0,14,PRICE_TYPICAL,0);


     
       for(
    int i=0;i<={
            
         if (
    CCi 100){


          if(
    OrdersTotal() > 0) return(0);
          
    OrderSend(Symbol(),OP_BUY,0.01,Ask,NULL,Ask - (StopLoss Point),Ask + (TakeProfit Point),"OrdenArriba",3,0,Green);  


          }
          
        break;
       }
        
        
       for(
    int i=0;i<={
            
         if (
    CCi 1000){


          if(
    OrdersTotal() > 0) return(0);
          
    OrderSend(Symbol(),OP_SELL,Lotes,Bid,NULL,Bid + (StopLoss Point),Bid - (TakeProfit Point),"OrdenAbajo",123,0,Green); 


          }
          
        break;
       }
     
    //=======================================================================//




      
    for(int i=0;i<={
            
         if (
    CCi > -100){


          if(
    OrdersTotal() > 0) return(0);
          
    OrderSend(Symbol(),OP_BUY,0.01,Ask,NULL,Ask - (StopLoss Point),Ask + (TakeProfit Point),"OrdenArriba",3,0,Green);  


          }
          
        break;
       }
        
        
       for(
    int i=0;i<={
            
         if (
    CCi < -100){


          if(
    OrdersTotal() > 0) return(0);
          
    OrderSend(Symbol(),OP_SELL,Lotes,Bid,NULL,Bid + (StopLoss Point),Bid - (TakeProfit Point),"OrdenAbajo",123,0,Green); 


          }
          
        break;
       }
     
        
      
       return(
    0);
      } 

    El codigo no hace lo que yo quiero por que empieza a abrir posiciones si la condicion se cumple una y otra vez pero para eso puse el bucle for para que solo se ejecutara 2 veces.

    Me parece que algo no entiendo del bucle for o lo empleo mal.
    No se la verdad pero creo que para que el bucle for se pare poniendo break se tiene que parar.
    Foro de Forex Trading United
    Última edición por cazandovelas; 15:06 a las


  7. #6
    Avatar de jmsetrader



    Reputación:
    Poder de reputación: 12

    Espana
    Mensajes: 571
    Créditos: 1.021

    Re: Por Favor Ayuda Robot

    Cita Iniciado por cazandovelas Ver mensaje
    Buenos dias compañeros;

    Despues de tener una mala racha perdedora en este post los compañeros me ayudaron muchos con sus consejos es el siguiente:
    http://www.tradingunited.es/foro/tra...a-trading.html

    Lo recupere todo incluso con beneficios, pero lo que paso otra vez lo mismo lo volvi a perder todo en una racha perdedora, entonces he llegado a esta conlusion "Yo mismo me hago perder, por no tener disciplina y ponerme nervioso por miedo a perder la oportunidad" entonces he pensando:

    Un robot "NO TIENE SENTIMIENTOS" es mi solucion.

    El problema que hay es que a mi humano que soy igual que todo no me da tiempo darle en el momento exacto cuando la linea cruza o no puedo estar pendiente siempre esperando a que cruce, pero un robot si puede hacer esto


    Mi experencia sobre la programacion MQL4 es basica lo simple, conocimiento basico, por esto os pido ayuda amigos y compañeros porque confio en vosotros y se que sois buenos programadores.

    Aqui pongo el grafico del indicador con lo que quiero que haga el robot
    No se por que la imagen se inserta como archivo adjunto yo solo quiero que la imagen sea vea en el foro normal no se... porque sale asi jeje bueno no pasa nada esta es la imagen

    graficocci.bmp

    Por Favor Ayuda Robot-bmp_thumb.gif

    Tan bien mi estrategia es bastante sencilla, es el indicador CCi si cruza arriba la linea de 100 compra si se da la vuelta y cruza hacia abajo la linea de 100 venta, asi de simple y con la linea de -100 igual.


    LLevo tiempo leyendo manuales y viendo videotutoriales de mql4 y ademas estoy leyendo el libro oficial de mql4 pero lo entiendo y me hago un lio, yo solo queria hacer mi propio ea sencillo y testearlo para mi estrategia y ver si hacia que consiguiera beneficio despues compartirlo en el foro de tradingunited con el backtesting. Bueno amigos este es el codigo que e echo y estoy probando pero no funciona.

    Código PHP:
    // Variables Externas
    extern double Lotes 0.10;
    extern double StopLoss 10;
    extern double TakeProfit 10;




    //+------------------------------------------------------------------+
    //| Expert deinitialization function                                 |
    //+------------------------------------------------------------------+
    int start()
      {
    //---
     
      
    double CCi iCCI (Symbol(),0,14,PRICE_TYPICAL,0);


     
       for(
    int i=0;i<={
            
         if (
    CCi 100){


          if(
    OrdersTotal() > 0) return(0);
          
    OrderSend(Symbol(),OP_BUY,0.01,Ask,NULL,Ask - (StopLoss Point),Ask + (TakeProfit Point),"OrdenArriba",3,0,Green);  


          }
          
        break;
       }
        
        
       for(
    int i=0;i<={
            
         if (
    CCi 1000){


          if(
    OrdersTotal() > 0) return(0);
          
    OrderSend(Symbol(),OP_SELL,Lotes,Bid,NULL,Bid + (StopLoss Point),Bid - (TakeProfit Point),"OrdenAbajo",123,0,Green); 


          }
          
        break;
       }
     
    //=======================================================================//




      
    for(int i=0;i<={
            
         if (
    CCi > -100){


          if(
    OrdersTotal() > 0) return(0);
          
    OrderSend(Symbol(),OP_BUY,0.01,Ask,NULL,Ask - (StopLoss Point),Ask + (TakeProfit Point),"OrdenArriba",3,0,Green);  


          }
          
        break;
       }
        
        
       for(
    int i=0;i<={
            
         if (
    CCi < -100){


          if(
    OrdersTotal() > 0) return(0);
          
    OrderSend(Symbol(),OP_SELL,Lotes,Bid,NULL,Bid + (StopLoss Point),Bid - (TakeProfit Point),"OrdenAbajo",123,0,Green); 


          }
          
        break;
       }
     
        
      
       return(
    0);
      } 

    El codigo no hace lo que yo quiero por que empieza a abrir posiciones si la condicion se cumple una y otra vez pero para eso puse el bucle for para que solo se ejecutara 2 veces.

    Me parece que algo no entiendo del bucle for o lo empleo mal.
    No se la verdad pero creo que para que el bucle for se pare poniendo break se tiene que parar.
    Bueno, la verdad es que en cuanto a programación no puedo ayudarte mucho Cazandovelas por no decir nada ya que no tengo ni papa de programación en mql... eso sí... tengo unas dudas... cuando dices que has vuelto a fallar y a perderlo todo.... lo hiciste con esa estrategia? es una estrategia en la que sólo te basas y confías del CCI? la siguiente es una pregunta tonta que doy por hecho que la has hecho... la has testeado? si la has testeado y ves que a la larga es una estrategia ganadora, quizá no te haga falta el robot... quizá simplemente tengas que trabajar tus nervios, o tus ansiedades a la hora de operar, no sé... hay un libro muy bueno que se llama Trading en la zona que creo que te puede ayudar... el principio es un poco tostón pero cuando entra en materia es muy muy interesante y profundo... a mí me ayudó...
    Si crees que de todas formas necesitas el EA y por lo visto es tan sencillo (aunque no te pueda ayudar) puedes intentar hacerlo en fxdreema, donde hay un editor que es muy sencillo de utilizar y siendo tan sencilla la estrategia no te costará mucho hacerlo...
    pero seguro que note hace falta, si tienes todos los cimientos correctos (estrategia testeada, fiable y tal), confía en tu estrategia y actúa como un robot... a la larga si las pruebas han sido positivas en real debería serlo.
    Suerte.
    Foro de Forex Trading United

  8. #7
    Avatar de didaz



    Reputación:
    Poder de reputación: 14

    Espana
    Mensajes: 191
    Créditos: 2.335

    Re: Por Favor Ayuda Robot

    Buenas....
    Creo que es más o menos lo que querías
    Le he añadido algunas cosas : un breakeven, traillingstop , control de horarios

    Espero que te sea útil .

    Por Favor Ayuda Robot-cazandovelas-dax-m5.png
    Foro de Forex Trading United
    Archivos adjuntados Archivos adjuntados

  9. #8

    Re: Por Favor Ayuda Robot

    Cita Iniciado por cazandovelas Ver mensaje
    Muchas gracias amigo por querer ayudarme lo valoro mucho gracias de corazon.Te pido perdon si soy un poco cansado o molesto mucho, lo siento.

    Te he hecho caso he añadido tu codigo al que estaba haciendo y he buscado una forma de selecionas la orden y cerrar la que estviera abierta, pero despues de comprobar el codigo y ponerlo a prueba sigue sin funcionar como yo quiero el codigo es este.

    Código:
     // Variables Externasextern double Lote = 0.1;
    extern double StopLoss = 20;
    extern double TakeProfit = 40;
    
    
    extern int Slippage = 0;
    extern int MagicNumber = 123;
    
    
    
    
    extern int numerOrdenes = 1;
    extern int Desfase = 0;
    
    
    // Variables Globales
    double ConvPip;
    int ConvPipSlippage;
    int TickectCompra;
    int TickectVenta;
    
    
    
    
    
    
    //+------------------------------------------------------------------+
    //| expert initialization function                                   |
    //+------------------------------------------------------------------+
    
    
      
     
    
    
    //+------------------------------------------------------------------+
    //| expert start function                                            |
    //+------------------------------------------------------------------+
    int start()
      {
    
    
          
       OrderSelect(0,SELECT_BY_POS);
       
          if (TickectCompra > 0 && Bid - OrderOpenPrice() >= 2 * ConvPip)
          {
             double StopLossCompraMod = OrderOpenPrice();
             OrderModify(TickectCompra,OrderOpenPrice(),StopLossCompraMod,OrderTakeProfit(),0,Blue);
          }
          
          if (TickectVenta > 0 && OrderOpenPrice() - Ask >= 2 * ConvPip)
          {
             double StopLossVentaMod = OrderOpenPrice();
             OrderModify(TickectVenta,OrderOpenPrice(),StopLossVentaMod,OrderTakeProfit(),0,Blue);
          }     
       
       
       int TotalOrdenes = OrdersTotal();
       
       if(TotalOrdenes == 1) return(0);
       
       //Orden de Compra
       double CCI0 = iCCI(_Symbol, 0, 14, PRICE_TYPICAL, 0); 
       double CCI1 = iCCI(_Symbol, 0, 14, PRICE_TYPICAL, 1); 
       
       
       if(CCI1 <= 100 && CCI0 > 100) {
    
    
          OrderSelect(TickectVenta,SELECT_BY_TICKET);
          
          //Cerrar orden Venta
          if(TickectVenta > 0)
          {
             OrderClose(TickectVenta,OrderLots(),Ask,ConvPipSlippage,Red);
          }
          
          
          // Abrir Operacion de compra
          TickectCompra = OrderSend(Symbol(),OP_BUY,Lote,Ask,ConvPipSlippage,Ask - (StopLoss * Point),Ask + (TakeProfit * Point),"Orden de Compra",MagicNumber,0,Green);
          
          TickectVenta = 0;
      
       }
        
       
       //Orden de Venta
       if(CCI1 >= -100 && CCI0 < -100)
       {
          OrderSelect(TickectCompra,SELECT_BY_TICKET);
          
          //Cerrar orden Venta
          if(TickectCompra > 0)
          {
             OrderClose(TickectCompra,OrderLots(),Bid,ConvPipSlippage,Red);
          }
    
    
          // Abrir Operacion de venta
          TickectVenta = OrderSend(Symbol(),OP_SELL,Lote,Bid,ConvPipSlippage,Bid + (StopLoss * Point),Bid - (TakeProfit * Point),"Orden de Venta",MagicNumber,0,Red);
          
          TickectCompra = 0;
       }    
     
     return(0);
      }

    Amigo creo que me rindo por que aun poniendo lo que me has dicho sigue abriendo mas ordenes si esta por encima de 100 o por debajo de 100 es decir que no abre una sola posicion sigue abriendo una y otra, me refiero a que abre una y otra pero cuando se cierra la actual es decir siempre hay una sola posicion abierta en ese momento Pero lo que yo es que solo se abra una vez la posicion cuando cruce la linea y No que cuando este encima de 100 vuelva a abrir otra eso no quiero pero parece que es imposible hacerlo con codigo ME RINDO.

    Bueno amigo y compañero , te agredezco mucho tu ayuda incluso te voy a dar Reputacion por tu aporte educativo sobre mql4, ademas creo que eres un excelente programador por eso si empiezo ganar en el foro algo lo primero sera contratarte como programador para poder hacer un EA ROBOT mucho mas complejo y con muchas mas opciones y parametros que no seria para nada igual que este sencillo ea que quiero construir para uso personal pero bueno no se puede hacer y lo acepto

    Gracias compañero, de momento supongo que no me puedes dar más reputación porque ya me diste el otro día, así que hasta que no le des a otros compañeros el sistema no te dejará, pero vamos, eso es lo de menos, jajajaja.

    A ver, con lo que yo te puse, solo te podrá abrir operaciones en la vela donde cruce, en la siguiente vela ya no, lo que pasa es que en esa vela, mientras está en curso el valor del CCI se va moviendo arriba y abajo, por lo cual, si cierras cuando baje de 100, entonces te la cerrará y en cuanto llegue otro tick en el que de nuevo esté por encima de 100 te volverá a abrir otra. Para que solo te abra una orden en esa vela, tendrías que ponerle a esa parte del código que te lo haga solamente a apertura de vela nueva, y en los parámetros del CCI ponerle al shift 1 y 2, en lugar de 0 y 1, tal como te comenté en el otro post. En ese caso, cuando en una vela se produzca el cruce, y cierre dicha vela estando por encima, automáticamente al abrir nueva vela te hará la compra.

    Para esto, solo tendrías que poner un pequeño fragmenteo de código, para que te lo haga solamente a apertura de vela:

    Código:
        // Esto fuera de todas las llaves de todas las funciones, es decir arriba, donde se declaran las variables internas del EA
        datetime  lastOpenBarTime;
        bool        IsBarOpen;
       
        // Esto dentro de la función OnTick() o de la función start() si lo estás haciendo con código antiguo
    
        if(lastOpenBarTime == 0) lastOpenBarTime = Time[0];
        if(lastOpenBarTime != Time[0] { 
           lastOpenBarTime =  Time[0];
           IsBarOpen = true; 
        } else {
           IsBarOpen = false;  }
        
        // y luego antes de meter el OrderSend, le pones :
        if(IsBarOpen)   OrderSend(tal tal tal....)
    Si lo que quieres es que entre en la vela en curso (no a cierre de vela), entonces tendrías que dejar los shit en 0 y 1, pero para que no reentre más veces en dicha vela, tendrías que almacenar el Time[0] de dicha vela en una variable en el momento en que entres, y ponerle como condición que el Time[0] de la vela corriente sea mayor que el valor de esa variable que tienes almacenada.

    No obstante, yo no pondría que cierre la operación al bajar de 100, puesto que te la va a abrir e inmediatamente la mayoría de las veces te la va a cerrar en un instante, ya que en la vela en curso el valor de cualquier indicador se está moviendo constantemente,. Por lo tanto, vas a ir perdiendo el spread en cada entrada.

    Tampoco es una forma adecuada como estás chequeando si tienes órdenes abiertas, los post de los que te hablé en los que se explicó como hacerlo correctamente son estos:

    http://www.tradingunited.es/foro/tra...tml#post146252

    http://www.tradingunited.es/foro/tra...tml#post148410

    Habría que aplicar esa misma metodología, aplicada a tu EA.

    Espero que te sirva y lo puedas solucionar.

    Saludos y un abrazo.
    Foro de Forex Trading United
    Última edición por robertomar; 02:58 a las


  10. #9

    Re: Por Favor Ayuda Robot


    Publi
    Compi, ya te lo comenté por privado, si lo que quieres es que solo abra la compra cuando cruce 100 hacia arriba (y solo la venta cuando cruce de -100 hacia abajo) te dije como tenías que hacerlo, no vale con que pongas que CCI > 100, porque entonces mientras esté por encima de 100 seguirá lanzando compras una y otra vez.

    Aparte, si quieres que teniendo una orden abierta, ya no lance ninguna más hasta que cierre esa, antes de lanzarlas tendrías que chequear si tienes órdenes abiertas o no.

    Código:
       double CCI0 = iCCI(_Symbol, 0, 14, PRICE_TYPICAL, 0);
       double CCI1 = iCCI(_Symbol, 0, 14, PRICE_TYPICAL, 1);
       
       if(CCI1 <= 100 && CCI0 > 100)
       {
       //  Compruebas que el EA no tenga ninguna orden abierta
       //  Y si no tiene, entonces das orden de compra
       
       }
       
       if(CCI1 >= -100 && CCI0 < -100)
       {
       //  Compruebas que el EA no tenga ninguna orden abierta
       //  Y si no tiene, entonces das orden de venta
       
       }
    Si quieres que sea a cierre de vela en lugar de 0 y 1 en el ultimo parámetro del CCI le tendrías que poner 1 y 2.

    Disculpa, pero no tengo más tiempo como para hacertelo yo entero, por aquí por el foro hay varios posts donde varios compañeros, entre ellos yo, ya pusimos códigos para poder chequear las órdenes que lleva abiertas el EA en relación a su Magic Number, etc, etc.

    Espero que lo puedas solucionar con estas indicaciones y las de los posts que te hablo, que son de julio o por ahí, vamos que son recientes.

    Saludos y un abrazo.
    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