ERROR en el código. Ayudadme por favor.

Para añadir comentario, por favor Autorícese o regístrese
78920987
23
78920987  

Buenas tardes,


He creado un EA pero me da errores.

Paso el código y los errores que me aparecen:


//+------------------------------------------------------------------+

//|                                                          IBT.mq4 |

//|                        Copyright 2018, MetaQuotes Software Corp. |

//|                                             https://www.mql5.com |

//+------------------------------------------------------------------+

#property copyright "Copyright 2018, MetaQuotes Software Corp."

#property link      "https://www.mql5.com"

#property version   "1.00"

#property strict

//Introducimos las variables globales

input double ForTarget=0.09;     //Porcentaje de vela que vamos a utilizar para Target

input double ForStoploss=0.03;   //Porcentaje de vela que vamos a utilizar para Stoploss

input double VolumenInicial=1;   //Volumen a utilizar

input double ATRMenor=10;        //Periodo corto de ATR

input double ATRMayor=50;        //Periodo largo de ATR

input int PeriodoATR=10;         //Periodo de ATR

input int PeriodoCCI=40;         //Periodo de CCI

input int PeriodoRSI=11;         //Periodo de RSI

input int PeriodoV=10;           //Periodo de Volumen

double SL,TP;

int C,V;

int ContC=1;

int ContV=1;                     //Variable secundaria

double Precio;

double SumaV,SumaATR;

//FUNCIONES DE SUMA Y VENTA//


   int Comprar(double Volumen)

   {

   int TicketNuevo=OrderSend(Symbol(),OP_BUY,Volumen,Ask,10,Ask-SL,Ask+TP);

   

   return(TicketNuevo);

   }

   

//FUNCIONES PARA REALIZAR EL PROCESO DE VENTA EN EL RECOVERY DE COMPRAS//


   int Vender(double Volumen)

   {

   int TicketNuevo=OrderSend(Symbol(),OP_SELL,Volumen,Bid,10,Bid+SL,Bid-TP);

   

   return(TicketNuevo);

   }

   

//+------------------------------------------------------------------+

//| Expert initialization function                                   |

//+------------------------------------------------------------------+

int OnInit()

  {

//---

   

//---

   return(INIT_SUCCEEDED);

  }

//+------------------------------------------------------------------+

//| Expert deinitialization function                                 |

//+------------------------------------------------------------------+

void OnDeinit(const int reason)

  {

//---

   

  }

//+------------------------------------------------------------------+

//| Expert tick function                                             |

//+------------------------------------------------------------------+

void OnTick()

  {

   //Variables Locales//

double MediaATR, MediaV;

double ValorATR, ValorCCI, ValorRSI, ATRCorto, ATRLargo, ValorVolumen;


//PROCESO DE CALCULO VOLUMEN//

for( int i=0;i<PeriodoV;i++)

  {

  SumaV= SumaV+iVolume(Symbol(),0,1);

  }

  

  MediaV=SumaV/PeriodoV; //Calculamos la media del volumen 

  SumaV=0;              //Reinicializamos el valor de la suma para el calculo de la próxima media

  

  //PROCESO DE CALCULO ATR//

  for( int i=0;i<PeriodoATR;i++)

  {

  SumaATR=SumaATR+iATR(Symbol(),0,10,i);

  }

  MediaATR=SumaATR/PeriodoATR; //Calculamos la media del ATR 

  SumaV=0;              //Reinicializamos el valor de la suma para el calculo de la próxima media

  

  //CALCULO DE VALORES QUE VAMOS A NECESITAR//

ValorATR=iATR(Symbol(),0,10,0);

ATRCorto=iATR(Symbol(),0,ATRMenor,0);

ATRLargo=iATR(Symbol(),0,ATRMayor,0);

ValorCCI=iCCI(Symbol(),0,PeriodoCCI,PRICE_CLOSE,0);

ValorRSI=iRSI(Symbol(),0,PeriodoRSI,PRICE_CLOSE,0);

ValorVolumen=iVolume(Symbol(),0,0);

  

  //CONDICIONES PARA REALIZAR UNA COMPRA//

if( ContC==1 && ValorATR<MediaATR && ATRCorto>ATRLargo && ValorCCI<100 && ValorRSI>60 && ValorVolumen>MediaV)

  {ContC=0;    //No dejamos que se pueda comprar hasta que se cierre esta compra

   Print("Comprar");

   Precio=Ask;

   TP=ForTarget*Precio;

   SL=ForStoploss*Precio;

   C=Comprar(VolumenInicial);

   }

   

   //CONDICIONES PARA REALIZAR UNA VENTA//

if( ContV==1 && ValorATR<MediaATR && ATRCorto>ATRLargo && ValorCCI>(-100) && ValorRSI<40 && ValorVolumen>MediaV)

  {ContV=0;    //No dejamos que se pueda vender hasta que se cierre esta venta

   Print("vender");

   Precio=Bid;

   TP=ForTarget*Precio;

   SL=ForStoploss*Precio;

   C=Vender(VolumenInicial);

   }   

   

   //SALIDA DE COMPRA/VENTA POR SL O TP//

   //PROCESO SALIDA DE COMPRA//

int order=OrderSelect (C,SELECT_BY_TICKET);

if(ContC==0)

   { If(Ask<=OrderStopLoss()   []    Ask>=OrderTakeProfit() )

      { ContC=1;   //Permitimos que sea posible volver a comprar

      }

   }

   

   //PROCESO SALIDA DE VENTA//

int Order=OrderSelect (V,SELECT_BY_TICKET);

if(ContV==0)

   { If(Bid>=OrderStopLoss()   []    Bid<=OrderTakeProfit())

      { ContV=1;   //Permitimos que sea posible volver a vender

      }

   }

   

   //SALIDA DE COMPRA /VENTA POR CCI//

   //COMPRA

if(ContC==0 && ValorCCI>100)

      {

      ContC=1;

      Print("Se ha cerrado la compra por CCI");

      OrderClose (C,VolumenInicial,Bid,3,Red);

      }  

      

   //VENTA

if(ContV==0 && ValorCCI<(-100))

      {

      ContV=1;

      Print("Se ha cerrado la venta por CCI");

      OrderClose (C,VolumenInicial,Ask,3,Red);

      }  

      

      

      

  }

//+------------------------------------------------------------------+




Muchas gracias.

Les debo una buena.

Saludos cordiales.

karachiento
188
karachiento  
78920987:

Buenas tardes,


He creado un EA pero me da errores.

Paso el código y los errores que me aparecen:


//+------------------------------------------------------------------+

//|                                                          IBT.mq4 |

//|                        Copyright 2018, MetaQuotes Software Corp. |

//|                                             https://www.mql5.com |

//+------------------------------------------------------------------+

#property copyright "Copyright 2018, MetaQuotes Software Corp."

#property link      "https://www.mql5.com"

#property version   "1.00"

#property strict

//Introducimos las variables globales

input double ForTarget=0.09;     //Porcentaje de vela que vamos a utilizar para Target

input double ForStoploss=0.03;   //Porcentaje de vela que vamos a utilizar para Stoploss

input double VolumenInicial=1;   //Volumen a utilizar

input double ATRMenor=10;        //Periodo corto de ATR

input double ATRMayor=50;        //Periodo largo de ATR

input int PeriodoATR=10;         //Periodo de ATR

input int PeriodoCCI=40;         //Periodo de CCI

input int PeriodoRSI=11;         //Periodo de RSI

input int PeriodoV=10;           //Periodo de Volumen

double SL,TP;

int C,V;

int ContC=1;

int ContV=1;                     //Variable secundaria

double Precio;

double SumaV,SumaATR;

//FUNCIONES DE SUMA Y VENTA//


   int Comprar(double Volumen)

   {

   int TicketNuevo=OrderSend(Symbol(),OP_BUY,Volumen,Ask,10,Ask-SL,Ask+TP);

   

   return(TicketNuevo);

   }

   

//FUNCIONES PARA REALIZAR EL PROCESO DE VENTA EN EL RECOVERY DE COMPRAS//


   int Vender(double Volumen)

   {

   int TicketNuevo=OrderSend(Symbol(),OP_SELL,Volumen,Bid,10,Bid+SL,Bid-TP);

   

   return(TicketNuevo);

   }

   

//+------------------------------------------------------------------+

//| Expert initialization function                                   |

//+------------------------------------------------------------------+

int OnInit()

  {

//---

   

//---

   return(INIT_SUCCEEDED);

  }

//+------------------------------------------------------------------+

//| Expert deinitialization function                                 |

//+------------------------------------------------------------------+

void OnDeinit(const int reason)

  {

//---

   

  }

//+------------------------------------------------------------------+

//| Expert tick function                                             |

//+------------------------------------------------------------------+

void OnTick()

  {

   //Variables Locales//

double MediaATR, MediaV;

double ValorATR, ValorCCI, ValorRSI, ATRCorto, ATRLargo, ValorVolumen;


//PROCESO DE CALCULO VOLUMEN//

for( int i=0;i<PeriodoV;i++)

  {

  SumaV= SumaV+iVolume(Symbol(),0,1);

  }

  

  MediaV=SumaV/PeriodoV; //Calculamos la media del volumen 

  SumaV=0;              //Reinicializamos el valor de la suma para el calculo de la próxima media

  

  //PROCESO DE CALCULO ATR//

  for( int i=0;i<PeriodoATR;i++)

  {

  SumaATR=SumaATR+iATR(Symbol(),0,10,i);

  }

  MediaATR=SumaATR/PeriodoATR; //Calculamos la media del ATR 

  SumaV=0;              //Reinicializamos el valor de la suma para el calculo de la próxima media

  

  //CALCULO DE VALORES QUE VAMOS A NECESITAR//

ValorATR=iATR(Symbol(),0,10,0);

ATRCorto=iATR(Symbol(),0,ATRMenor,0);

ATRLargo=iATR(Symbol(),0,ATRMayor,0);

ValorCCI=iCCI(Symbol(),0,PeriodoCCI,PRICE_CLOSE,0);

ValorRSI=iRSI(Symbol(),0,PeriodoRSI,PRICE_CLOSE,0);

ValorVolumen=iVolume(Symbol(),0,0);

  

  //CONDICIONES PARA REALIZAR UNA COMPRA//

if( ContC==1 && ValorATR<MediaATR && ATRCorto>ATRLargo && ValorCCI<100 && ValorRSI>60 && ValorVolumen>MediaV)

  {ContC=0;    //No dejamos que se pueda comprar hasta que se cierre esta compra

   Print("Comprar");

   Precio=Ask;

   TP=ForTarget*Precio;

   SL=ForStoploss*Precio;

   C=Comprar(VolumenInicial);

   }

   

   //CONDICIONES PARA REALIZAR UNA VENTA//

if( ContV==1 && ValorATR<MediaATR && ATRCorto>ATRLargo && ValorCCI>(-100) && ValorRSI<40 && ValorVolumen>MediaV)

  {ContV=0;    //No dejamos que se pueda vender hasta que se cierre esta venta

   Print("vender");

   Precio=Bid;

   TP=ForTarget*Precio;

   SL=ForStoploss*Precio;

   C=Vender(VolumenInicial);

   }   

   

   //SALIDA DE COMPRA/VENTA POR SL O TP//

   //PROCESO SALIDA DE COMPRA//

int order=OrderSelect (C,SELECT_BY_TICKET);

if(ContC==0)

   { If(Ask<=OrderStopLoss()   []    Ask>=OrderTakeProfit() )

      { ContC=1;   //Permitimos que sea posible volver a comprar

      }

   }

   

   //PROCESO SALIDA DE VENTA//

int Order=OrderSelect (V,SELECT_BY_TICKET);

if(ContV==0)

   { If(Bid>=OrderStopLoss()   []    Bid<=OrderTakeProfit())

      { ContV=1;   //Permitimos que sea posible volver a vender

      }

   }

   

   //SALIDA DE COMPRA /VENTA POR CCI//

   //COMPRA

if(ContC==0 && ValorCCI>100)

      {

      ContC=1;

      Print("Se ha cerrado la compra por CCI");

      OrderClose (C,VolumenInicial,Bid,3,Red);

      }  

      

   //VENTA

if(ContV==0 && ValorCCI<(-100))

      {

      ContV=1;

      Print("Se ha cerrado la venta por CCI");

      OrderClose (C,VolumenInicial,Ask,3,Red);

      }  

      

      

      

  }

//+------------------------------------------------------------------+




Muchas gracias.

Les debo una buena.

Saludos cordiales.

Linea 120 y 128: El operador "ó" no es "[]", sino "||"

78920987
23
78920987  

Muchas gracias #Karachiento. Arreglado.

Ahora tengo este mensaje, no sé que quiere decir:


karachiento
188
karachiento  
78920987:

Muchas gracias #Karachiento. Arreglado.

Ahora tengo este mensaje, no sé que quiere decir:


Son advertencias de dos tipos. El primer tipo es sobre typecasting (o conversion de tipos de datos) y el segundo tipo es para sugerirte que deberías checkear si la orden enviada fue colocada/cerrada en el mercado o si ocurrió un error. 

Para añadir comentario, por favor Autorícese o regístrese