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