[¡Archivo!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no lo dejéis pasar. No podría ir a ningún sitio sin ti - 2. - página 320

 

¡Buenas noches a todos!

Por favor, díganme, compilé el programa, pero me dio un error "'\end_of_program' - paréntesis izquierdo desbalanceado D:\Program Files\MetaTrader 4 - Alpari\experts\probota 4.mq4 (161, 4)".

He comprobado todo, todo está correcto. ¿A qué puede estar relacionado este error?

 
Boneshapper:

¡Buenas noches a todos!

Por favor, díganme, compilé el programa, pero me dio un error "'\end_of_program' - paréntesis izquierdo desbalanceado D:\Program Files\MetaTrader 4 - Alpari\experts\probota 4.mq4 (161, 4)".

He comprobado todo, todo está correcto. ¿A qué puede estar relacionado este error?


Por ejemplo, la falta de paréntesis en cualquier condición... O bien compilar no el EA en sí, sino uno de sus inludios...
 
Boneshapper:

¡Buenas noches a todos!

Por favor, dígame, he compilado el programa, pero se genera el error "'\ fin_del_programa' - paréntesis izquierdo desequilibrado D:\ Archivos de programa\MetaTrader 4 - Alpari\experts\probota 4.mq4 (161, 4)".

He comprobado todo, todo está correcto. ¿A qué puede estar relacionado este error?


El compilador le ha dado el número de línea (161) entre paréntesis, donde falta o sobra un paréntesis.

Haga doble clic en el texto del error y el compilador le mostrará la ubicación del error.

 

Hola a todos.

¡¡¡Estimados profesionales!!!

Mira, por favor, cuál es el problema que no entiendo. Cuando intento poner una orden pendiente, pone dos.

while (Ticket2<0)

{

RefreshRates();

Ticket2=OrderSend(Symbol(),2,Lots_New*2,price,2,0,TP,"",MN); //1 orden pendiente de compra

Alert ("Error en el ciclo",GetLastError()); Alert ("TIK2= ",Ticket2;)

Dormir(500);

}

Gracias de antemano a todos los que respondan.
 

alguien puede ayudar a cambiar el código para que el indicador no tenga que ser actualizado en cada barra manualmente

#property indicator_buffers 6
#property indicator_color1 Black
#property indicator_color2 MediumBlue
#property indicator_color3 Yellow
#property indicator_color4 MediumBlue
#property indicator_color5 Green
#property indicator_color6 Red
#property indicator_separate_window

extern int RSI_Period = 40;         //8-25
extern int RSI_Price = 0;           //0-6
extern int Volatility_Band = 34;    //20-40
extern int RSI_Price_Line = 2;      
extern int RSI_Price_Type = 0;      //0-3
extern int Trade_Signal_Line = 7;   
extern int Trade_Signal_Type = 0;   //0-3
extern int NumberOfComputations =    2;
extern  int PeriodNorm=10;
extern int NumberOfBars         = 2000;

double RSIBuf[],UpZone[],MdZone[],DnZone[],MaBuf[],MbBuf[];

int init()
  {
   IndicatorShortName("Traders Dynamic Index SSA_normalize");
   SetIndexBuffer(0,RSIBuf);
   SetIndexBuffer(1,UpZone);
   SetIndexBuffer(2,MdZone);
   SetIndexBuffer(3,DnZone);
   SetIndexBuffer(4,MaBuf);
   SetIndexBuffer(5,MbBuf);
   
   SetIndexStyle(0,DRAW_NONE); 
   SetIndexStyle(1,DRAW_LINE); 
   SetIndexStyle(2,DRAW_LINE,0,2);
   SetIndexStyle(3,DRAW_LINE);
   SetIndexStyle(4,DRAW_LINE,0,2);
   SetIndexStyle(5,DRAW_LINE,0,2);
   
   SetIndexLabel(0,NULL); 
   SetIndexLabel(1,"VB High"); 
   SetIndexLabel(2,"Market Base Line"); 
   SetIndexLabel(3,"VB Low"); 
   SetIndexLabel(4,"RSI Price Line");
   SetIndexLabel(5,"Trade Signal Line");
 
   SetLevelValue(0,50);
   SetLevelValue(1,68);
   SetLevelValue(2,32);
   SetLevelStyle(STYLE_DOT,1,DimGray);
   
   return(0);
  }

int start()
  {
   double MA,RSI[];
   ArrayResize(RSI,Volatility_Band);
   int counted_bars=IndicatorCounted();
   int limit = Bars-counted_bars-1;
   for(int i=limit; i>=0; i--)
   {
      RSIBuf[i] = iCustom(Symbol(),Period(),"#_FullSSA_normalize",RSI_Period,NumberOfComputations,PeriodNorm,NumberOfBars,RSI_Price,0,i);
      MA = 0;
      for(int x=i; x<i+Volatility_Band; x++) {
         RSI[x-i] = RSIBuf[x];
         MA += RSIBuf[x]/Volatility_Band;
      }
      UpZone[i] = (MA + (1.6185 * StDev(RSI,Volatility_Band)));
      DnZone[i] = (MA - (1.6185 * StDev(RSI,Volatility_Band)));  
      MdZone[i] = ((UpZone[i] + DnZone[i])/2);
      }
   for (i=limit-1;i>=0;i--)  
      {
       MaBuf[i] = (iMAOnArray(RSIBuf,0,RSI_Price_Line,0,RSI_Price_Type,i));
       MbBuf[i] = (iMAOnArray(RSIBuf,0,Trade_Signal_Line,0,Trade_Signal_Type,i));   
      } 
//----
   return(0);
  }
  
double StDev(double& Data[], int Per)
{return(MathSqrt(Variance(Data,Per)));
}
double Variance(double& Data[], int Per)
{double sum, ssum;
  for (int i=0; i<Per; i++)
  {sum += Data[i];
   ssum += MathPow(Data[i],2);
  }
  return((ssum*Per - sum*sum)/(Per*(Per-1)));
}
//+------------------------------------------------------------------+
Archivos adjuntos:
 
Roman.:

Por ejemplo, la falta de paréntesis en cualquier condición... O no compila el Asesor Experto en sí mismo, sino uno de sus inlays...

Gracias, lo comprobaré más detenidamente
 
DhP:


El compilador le indicará el número de línea (161) donde falta o sobra el corchete.

Haga doble clic en el texto del error y el compilador le dirá dónde está el error.


Gracias por el consejo.
 
Boneshapper:

Sigue comprando un montón:( Por favor, dígame qué más se puede hacer.

Extraño, el código funciona. ¿Quizás no ponerlo ahí?
 
Roger:

Qué raro, el código funciona. ¿Tal vez lo pusiste en el lugar equivocado?
Parece que es correcto. Lo he comprobado varias veces. He mostrado el valor de Alerta 1 después de la transacción. Todos los días son normales, pero por qué exactamente el 12.10.2010 compra un montón - no puedo entender.
 
Roger:

Qué raro, el código funciona. ¿Tal vez lo pusiste en el lugar equivocado?

Cuando escribo esto, no escribo Flag=0 delante de la condición, porque entonces se actualizará cada vez antes de una transacción y será siempre 0. Si no especificamos un valor, por ejemplo sólo int Flag, el programa le asignará 0, ¿no?