Publi

Publi

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


  1. #1
    Avatar de Jorge_Martin
    ergaster


    Reputación:
    Poder de reputación: 3

    Espana
    Mensajes: 18
    Créditos: 595

    Podéis corregir este código mql4?


    Publi
    Hola, veréis he intentado realizar un EA por mi mismo gracias a los tutoriales de youtube. El caso es que mas o menos lo he encaminado y tras la compilación (sin errores), realizo un backtesting donde no se ha ejecutado ni una sola orden. Por ello os pido un poquito de ayuda para ver donde esta el error en el código, yo he supuesto que se trata por utilizar varios timeframe, pero no lo se la verdad...

    Gracias por adelantado,




    Código:
    extern double lotesrunnercorto = 0.1; // Lotes del runner corto
    //extern double lotesrunnerlargo = 0.1; // Lotes del runner largo
    extern double distanciaslrunnercorto = 0.01500; // Distancia a Stop Loss runner corto
    //extern double distanciaslrunnerlargo = 0.01500; // Distancia a Stop Loss runner largo
    extern double distanciatprunnercorto = 0.00500;  // Distancia a Take Profit runner corto
    //extern double distanciatprunnerlargo = 0.00100;  // Distancia a Take Profit runner largo
    extern double distanciabreakevencorto = 0.00400; // Distancia a Break Even runner corto
    //extern int distanciabreakevenlargo = 0.00500;  // Distancia a Break Even runner largo
    extern int rsiperiod = 14; // Periodo promedio para el RSI
    extern double nivelmaxrsi = 70; // Nivel maximo de entrada del RSI
    extern double nivelminrsi = 30; // Nivel minimo de entrada del RSI
    extern int magic = 2143;
    int ticket = 0;
    //+------------------------------------------------------------------+
    //| Expert initialization function                                   |
    //+------------------------------------------------------------------+
    int OnInit()
      {
    //---
       
    //---
       return(INIT_SUCCEEDED);
      }
    //+------------------------------------------------------------------+
    //| Expert deinitialization function                                 |
    //+------------------------------------------------------------------+
    void OnDeinit(const int reason)
      {
    //---
       
      }
    //+------------------------------------------------------------------+
    //| Expert tick function                                             |
    //+------------------------------------------------------------------+
    void OnTick()
      {
    //---
     double RSI30;
     double RSI15;
     double RSI5;
     RSI30 = iRSI(Symbol(), PERIOD_M30, rsiperiod, PRICE_CLOSE, 2);
     RSI15 = iRSI(Symbol(), PERIOD_M15, rsiperiod, PRICE_CLOSE, 2);
     RSI5 = iRSI(Symbol(), PERIOD_M5, rsiperiod, PRICE_CLOSE, 2);
     
     if(ticket == 0) {
     // No hay orden aberta.
     // chequeo si debemos abrir orden de venta.
     //Nivel de entrada de compra
       if( RSI30 <= nivelminrsi && RSI15 <= nivelminrsi && RSI5 <= nivelminrsi){//Falta la condicion que la ultima vela (shift=2) sea positiva
        ticket = OrderSend(Symbol(), OP_BUY, lotesrunnercorto, Ask, 3, distanciaslrunnercorto, distanciatprunnercorto, NULL, magic,0, Blue);
       }
       if( RSI30 >= nivelmaxrsi && RSI15 >= nivelmaxrsi && RSI5 >= nivelmaxrsi){//Falta la condicion que la ultima vela (shift=2) sea negativa
        //Nivel de entrada de venta
        ticket = OrderSend(Symbol(), OP_SELL, lotesrunnercorto, Bid, 3, distanciaslrunnercorto, distanciatprunnercorto, NULL, magic,0, Blue);
       }
      else{
       if(OrderSelect(OrdersTotal()-1, SELECT_BY_POS, MODE_TRADES) == true){
       
         if( OrderType() == OP_SELL){
             if( RSI30 <= nivelminrsi && RSI15 <= nivelminrsi && RSI5 <= nivelminrsi){//Falta la condicion que la ultima vela (shift=2) sea positiva
              //Nivel de entrada de compra
              ticket = OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 3, Brown);
              ticket = OrderSend(Symbol(), OP_BUY, lotesrunnercorto, Ask, 3, distanciaslrunnercorto, distanciatprunnercorto, NULL, magic,0, Blue);
             }
          }
         
         if( OrderType() == OP_BUY){
             if( RSI30 >= nivelmaxrsi && RSI15 >= nivelmaxrsi && RSI5 >= nivelmaxrsi){//Falta la condicion que la ultima vela (shift=2) sea negativa
             //Nivel de entrada de venta
             ticket = OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 3, Brown);
             ticket = OrderSend(Symbol(), OP_SELL, lotesrunnercorto, Bid, 3, distanciaslrunnercorto, distanciatprunnercorto, NULL, magic,0, Blue);
              }
             }
          }
         
         }
       
        }
      }
    Foro de Forex Trading United

     

  2.                         
    Publi
  3. #2
    Avatar de Jorge_Martin
    ergaster


    Reputación:
    Poder de reputación: 3

    Espana
    Mensajes: 18
    Créditos: 595

    Re: Podéis corregir este código mql4?

    Lo es os pongo a continuación es unas pequeñas modificaciones que he realizado en el EA. También os pongo más abajo el el resultado del diario al ejecutarlo en Metatrader


    Código:
    extern double lotesrunnercorto = 0.1; // Lotes del runner corto
    //extern double lotesrunnerlargo = 0.1; // Lotes del runner largo
    extern double distanciaSL = 150; // Distancia a Stop Loss runner corto venta
    extern double distanciaTP = 50; // Distancia a Stop Loss runner corto compra
    extern double distanciabreakevencorto = 0.00400; // Distancia a Break Even runner corto
    extern int rsiperiod = 14; // Periodo promedio para el RSI
    extern double nivelmaxrsi = 70; // Nivel maximo de entrada del RSI
    extern double nivelminrsi = 30; // Nivel minimo de entrada del RSI
    extern int magic = 2143;
    int ticket = 0;
    //+------------------------------------------------------------------+
    //| Expert initialization function                                   |
    //+------------------------------------------------------------------+
    int OnInit()
      {
    //---
       
    //---
       return(INIT_SUCCEEDED);
      }
    //+------------------------------------------------------------------+
    //| Expert deinitialization function                                 |
    //+------------------------------------------------------------------+
    void OnDeinit(const int reason)
      {
    //---
       
      }
    //+------------------------------------------------------------------+
    //| Expert tick function                                             |
    //+------------------------------------------------------------------+
    void OnTick()
      {
    //---
     double RSI30;
     double RSI15;
     double RSI5;
     RSI30 = iRSI(Symbol(), PERIOD_M30, rsiperiod, PRICE_CLOSE, 0);
     RSI15 = iRSI(Symbol(), PERIOD_M15, rsiperiod, PRICE_CLOSE, 0);
     RSI5 = iRSI(Symbol(), PERIOD_M5, rsiperiod, PRICE_CLOSE, 1);
     
    double distanciaslrunnercortoAsk = Ask +  distanciaSL * Point; // Distancia a Stop Loss runner corto venta
    double distanciaslrunnercortoBid = Bid - distanciaSL * Point; // Distancia a Stop Loss runner corto compra
    double distanciatprunnercortoAsk = Ask -  distanciaTP * Point;  // Distancia a Take Profit runner corto venta
    double distanciatprunnercortoBid = Bid + distanciaTP * Point;  // Distancia a Take Profit runner corto compra
    
    
    
    
     
     if(ticket == 0) {
     // No hay orden aberta.
     // chequeo si debemos abrir orden de venta.
     //Nivel de entrada de compra
       if( RSI30 <= nivelminrsi && RSI15 <= nivelminrsi && RSI5 <= nivelminrsi){//Falta la condicion que la ultima vela (shift=2) sea positiva
        ticket = OrderSend(Symbol(), OP_BUY, lotesrunnercorto, Ask, 3, distanciaslrunnercortoBid, distanciatprunnercortoBid, NULL, magic,0, Blue);
       }
       if( RSI30 >= nivelmaxrsi && RSI15 >= nivelmaxrsi && RSI5 >= nivelmaxrsi){//Falta la condicion que la ultima vela (shift=2) sea negativa
        //Nivel de entrada de venta
        ticket = OrderSend(Symbol(), OP_SELL, lotesrunnercorto, Bid, 3, distanciaslrunnercortoAsk, distanciatprunnercortoAsk, NULL, magic,0, Blue);
       }
      else{
       if(OrderSelect(OrdersTotal()-1, SELECT_BY_POS, MODE_TRADES) == true){
       
         if( OrderType() == OP_SELL){
             if( RSI30 <= nivelminrsi && RSI15 <= nivelminrsi && RSI5 <= nivelminrsi){//Falta la condicion que la ultima vela (shift=2) sea positiva
              //Nivel de entrada de compra
              ticket = OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 3, Brown);
              ticket = OrderSend(Symbol(), OP_BUY, lotesrunnercorto, Ask, 3, distanciaslrunnercortoBid, distanciatprunnercortoBid, NULL, magic,0, Blue);
             }
          }
         
         if( OrderType() == OP_BUY){
             if( RSI30 >= nivelmaxrsi && RSI15 >= nivelmaxrsi && RSI5 >= nivelmaxrsi){//Falta la condicion que la ultima vela (shift=2) sea negativa
             //Nivel de entrada de venta
             ticket = OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 3, Brown);
             ticket = OrderSend(Symbol(), OP_SELL, lotesrunnercorto, Bid, 3, distanciaslrunnercortoAsk, distanciatprunnercortoAsk, NULL, magic,0, Blue);
              }
             }
          }
         
         }
       
        }
      }
    //+------------------------------------------------------------------+
    
    
    
    
    DIARIO DE METATRADER: 
    
    2015.01.08 23:01:46.777    EURUSD,M30: 1078845 tick events (2167 bars, 1079845 bar states) processed within 10047 ms (total time 13369 ms)
    2015.01.08 23:01:45.977    2014.12.01 15:44  Triple_RSI EURUSD,M30: OrderSend error 130
    2015.01.08 23:01:36.734    Triple_RSI inputs: lotesrunnercorto=0.1; distanciaSL=0.015; distanciaTP=0.005; distanciabreakevencorto=0.004; rsiperiod=14; nivelmaxrsi=70; nivelminrsi=30; magic=2143; 
    2015.01.08 23:01:36.718    TestGenerator: unmatched data error (high value 1.19246 at 2015.01.05 12:00 is not reached from the least timeframe, high price 1.19238 mismatches)
    2015.01.08 23:01:33.410    TestGenerator: current spread 18 used
    2015.01.08 22:59:47.526    Expert Moving Average EURUSD,M30: removed
    Foro de Forex Trading United

     

  4. #3
    Avatar de Wolfman
    Heidelbergensis


    Reputación:
    Poder de reputación: 15

    Mensajes: 2.052
    Créditos: 7.617

    Re: Podéis corregir este código mql4?

    Cita Iniciado por Jorge_Martin Ver mensaje
    Lo es os pongo a continuación es unas pequeñas modificaciones que he realizado en el EA. También os pongo más abajo el el resultado del diario al ejecutarlo en Metatrader


    Código:
    extern double lotesrunnercorto = 0.1; // Lotes del runner corto
    //extern double lotesrunnerlargo = 0.1; // Lotes del runner largo
    extern double distanciaSL = 150; // Distancia a Stop Loss runner corto venta
    extern double distanciaTP = 50; // Distancia a Stop Loss runner corto compra
    extern double distanciabreakevencorto = 0.00400; // Distancia a Break Even runner corto
    extern int rsiperiod = 14; // Periodo promedio para el RSI
    extern double nivelmaxrsi = 70; // Nivel maximo de entrada del RSI
    extern double nivelminrsi = 30; // Nivel minimo de entrada del RSI
    extern int magic = 2143;
    int ticket = 0;
    //+------------------------------------------------------------------+
    //| Expert initialization function                                   |
    //+------------------------------------------------------------------+
    int OnInit()
      {
    //---
       
    //---
       return(INIT_SUCCEEDED);
      }
    //+------------------------------------------------------------------+
    //| Expert deinitialization function                                 |
    //+------------------------------------------------------------------+
    void OnDeinit(const int reason)
      {
    //---
       
      }
    //+------------------------------------------------------------------+
    //| Expert tick function                                             |
    //+------------------------------------------------------------------+
    void OnTick()
      {
    //---
     double RSI30;
     double RSI15;
     double RSI5;
     RSI30 = iRSI(Symbol(), PERIOD_M30, rsiperiod, PRICE_CLOSE, 0);
     RSI15 = iRSI(Symbol(), PERIOD_M15, rsiperiod, PRICE_CLOSE, 0);
     RSI5 = iRSI(Symbol(), PERIOD_M5, rsiperiod, PRICE_CLOSE, 1);
     
    double distanciaslrunnercortoAsk = Ask +  distanciaSL * Point; // Distancia a Stop Loss runner corto venta
    double distanciaslrunnercortoBid = Bid - distanciaSL * Point; // Distancia a Stop Loss runner corto compra
    double distanciatprunnercortoAsk = Ask -  distanciaTP * Point;  // Distancia a Take Profit runner corto venta
    double distanciatprunnercortoBid = Bid + distanciaTP * Point;  // Distancia a Take Profit runner corto compra
    
    
    
    
     
     if(ticket == 0) {
     // No hay orden aberta.
     // chequeo si debemos abrir orden de venta.
     //Nivel de entrada de compra
       if( RSI30 <= nivelminrsi && RSI15 <= nivelminrsi && RSI5 <= nivelminrsi){//Falta la condicion que la ultima vela (shift=2) sea positiva
        ticket = OrderSend(Symbol(), OP_BUY, lotesrunnercorto, Ask, 3, distanciaslrunnercortoBid, distanciatprunnercortoBid, NULL, magic,0, Blue);
       }
       if( RSI30 >= nivelmaxrsi && RSI15 >= nivelmaxrsi && RSI5 >= nivelmaxrsi){//Falta la condicion que la ultima vela (shift=2) sea negativa
        //Nivel de entrada de venta
        ticket = OrderSend(Symbol(), OP_SELL, lotesrunnercorto, Bid, 3, distanciaslrunnercortoAsk, distanciatprunnercortoAsk, NULL, magic,0, Blue);
       }
      else{
       if(OrderSelect(OrdersTotal()-1, SELECT_BY_POS, MODE_TRADES) == true){
       
         if( OrderType() == OP_SELL){
             if( RSI30 <= nivelminrsi && RSI15 <= nivelminrsi && RSI5 <= nivelminrsi){//Falta la condicion que la ultima vela (shift=2) sea positiva
              //Nivel de entrada de compra
              ticket = OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 3, Brown);
              ticket = OrderSend(Symbol(), OP_BUY, lotesrunnercorto, Ask, 3, distanciaslrunnercortoBid, distanciatprunnercortoBid, NULL, magic,0, Blue);
             }
          }
         
         if( OrderType() == OP_BUY){
             if( RSI30 >= nivelmaxrsi && RSI15 >= nivelmaxrsi && RSI5 >= nivelmaxrsi){//Falta la condicion que la ultima vela (shift=2) sea negativa
             //Nivel de entrada de venta
             ticket = OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 3, Brown);
             ticket = OrderSend(Symbol(), OP_SELL, lotesrunnercorto, Bid, 3, distanciaslrunnercortoAsk, distanciatprunnercortoAsk, NULL, magic,0, Blue);
              }
             }
          }
         
         }
       
        }
      }
    //+------------------------------------------------------------------+



    DIARIO DE METATRADER:

    2015.01.08 23:01:46.777 EURUSD,M30: 1078845 tick events (2167 bars, 1079845 bar states) processed within 10047 ms (total time 13369 ms)
    2015.01.08 23:01:45.977 2014.12.01 15:44 Triple_RSI EURUSD,M30: OrderSend error 130
    2015.01.08 23:01:36.734 Triple_RSI inputs: lotesrunnercorto=0.1; distanciaSL=0.015; distanciaTP=0.005; distanciabreakevencorto=0.004; rsiperiod=14; nivelmaxrsi=70; nivelminrsi=30; magic=2143;
    2015.01.08 23:01:36.718 TestGenerator: unmatched data error (high value 1.19246 at 2015.01.05 12:00 is not reached from the least timeframe, high price 1.19238 mismatches)
    2015.01.08 23:01:33.410 TestGenerator: current spread 18 used
    2015.01.08 22:59:47.526 Expert Moving Average EURUSD,M30: removed
    No estoy seguro pero recuerdo que error 130 tiene que ver con el lotaje, el sl, tp, veo que que te esta marcando 0.015 que serian 150 pips, tp 0.005 que son 50 pips.

    Talvez si explicas mejor la idea se te pueda echar la mano de mejor manera.

    Saludos.
    Foro de Forex Trading United



    "La mente es como un paracaídas, sólo funciona si se abre. Albert Einstein

  5. #4
    Avatar de Jorge_Martin
    ergaster


    Reputación:
    Poder de reputación: 3

    Espana
    Mensajes: 18
    Créditos: 595

    Re: Podéis corregir este código mql4?

    La idea es entrar al mercado cuando el RSI este por encima de 70 o por debajo de 30 en tres timeframes diferentes de 5, 15 y 30 minutos. Tomando como beneficio 5 pips y con el SL de 15 pips. Lo expreso así por que según expresa los pips metatrader 5 pips son 50...

    Muchas gracias por contestar,
    Foro de Forex Trading United

     

  6. #5
    Avatar de Neo Trader



    Reputación:
    Poder de reputación: 0

    Espana
    Mensajes: 4.835
    Créditos: 15.706

    Re: Podéis corregir este código mql4?

    Hola Jorge_Martin. Por favor recuerda utilizar títulos descriptivos en los temas
    Foro de Forex Trading United



  7. #6
    Avatar de Jorge_Martin
    ergaster


    Reputación:
    Poder de reputación: 3

    Espana
    Mensajes: 18
    Créditos: 595

    Re: Podéis corregir este código mql4?

    Lo siento es que no sabía que título ponerle... He aprendido a hacer este trozito de código en un par de dias y estoy muy perdido con esto de la programación...
    Foro de Forex Trading United

     

  8. #7
    Avatar de Wolfman
    Heidelbergensis


    Reputación:
    Poder de reputación: 15

    Mensajes: 2.052
    Créditos: 7.617

    Re: Podéis corregir este código mql4?

    si subes el bicho sera un poco mas facil echarte una mano.

    con relacion a la programacion, recuerda que para que una operativa sea programale debe ser clara en sus reglas.


    Compra, RSI30>50,RSI15>45 y RSI5 vela 2 <30 y RSI5VELA1 >30

    Saludos.
    Foro de Forex Trading United



    "La mente es como un paracaídas, sólo funciona si se abre. Albert Einstein

  9. #8
    Avatar de Jorge_Martin
    ergaster


    Reputación:
    Poder de reputación: 3

    Espana
    Mensajes: 18
    Créditos: 595

    Re: Podéis corregir este código mql4?

    Siento el retraso. Aquí esta el programa, he realizado un par de pequeñas modificaciones para ver si lo conseguía al fin.

    Muchas gracias por la ayuda,
    Foro de Forex Trading United
    Archivos adjuntados Archivos adjuntados

     

  10. #9
    Avatar de Jorge_Martin
    ergaster


    Reputación:
    Poder de reputación: 3

    Espana
    Mensajes: 18
    Créditos: 595

    Re: Podéis corregir este código mql4?

    Al final ya he conseguido crear el programa.

    Doy por finalizado este tema y lo cierro.
    Foro de Forex Trading United

     

  11. #10
    Avatar de P6J6L6B
    habilis


    Reputación:
    Poder de reputación: 2

    Espana
    Mensajes: 113

    Re: Podéis corregir este código mql4?


    Publi
    Cita Iniciado por Jorge_Martin Ver mensaje
    Al final ya he conseguido crear el programa.

    Doy por finalizado este tema y lo cierro.
    Hola jorge
    soy Pablo
    en primer lugar enhorabuena si conseguiste realizar eso solo con los videos de youtuve le tuviste que echar bien d horas yo tb estoy empezando con ello pero no a tu nivel queria saber como te fue, si le has dado un uso real y efectivo?
    y en que proyectos trabajas ahora de MQL4 por si te puedo echar una mano y kizas tu a mi en el futuro

    un saludo , tu nuevo amigo espero ^_^
    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