Errores, fallos, preguntas - página 847

 

El compilador me expresó algo en inglés. El bracket algo no es un programa, el programa en general está mal con este bracket y el bracket está desequilibrado. Pero hay paréntesis. ¿Podría decirme dónde buscar un error?

'}' - Error al final del programa Redo.mq5 3562 1
'{' - paréntesis desequilibrados Redo.mq5 3330 1

//////////////////////////////////////////////////////////////////////////////////////////////

int waitIfBusy() 
{   
   for (int Yx = 0;  MQL5InfoInteger(MQL5_TRADE_ALLOWED) && Yx < 50; Yx++) Sleep(125);   
   if (Yx >= 50) Print("Торговый поток занят больше ", DoubleToString(25 * Yx / 1000, 2), " секунд");
   else if (Yx > 0) Print("Торговый поток был занят ", DoubleToString(25 * Yx / 1000, 2), " секунд");   
   return (Yx);   
} 

//////////////////////////////////////////////////////////////////////////////////////////////
 
Creo que el problema está más arriba... así lo veo yo, está bien...
 
Yedelkin:

Bueno, ya lo he terminado arriba. Permítame repetirlo: la "nueva" cotización para el Asesor Experto es una cotización que llega justo después de la finalización de la siguiente función OnTick(), incluso si esta cotización no es el "primer tick de una barra". La condición de que llegue una nueva barra se comprobará sólo después de que el Asesor Experto termine el procesamiento de esa barra "anterior".

se comprobará sólo después de que el Asesor Experto termine de procesar la cotización que llegó en la barra "anterior". ...Si la función OnTick() se ejecuta durante 90 segundos y se inicia a las 00.00.00, la "condición para un nuevo tick en M1 se ejecutará al menos una vez, concretamente después de las 00.01.30

Gracias, así es como debe ser.
 
Dimka-novitsek:

El compilador me expresó algo en inglés. El bracket algo no es un programa, el programa en general está mal con este bracket y el bracket está desequilibrado. Pero hay paréntesis. Por favor, dígame, ¿dónde buscar un error?

'}' - final inesperado del programa Redo.mq5 3562 1
'{' - paréntesis desequilibrados Remake.mq5 3330 1

¿Quizás faltan las llaves al escribir el código (independientemente de lo que diga el compilador)?

int waitIfBusy() 
{   
   for (int Yx = 0;  MQL5InfoInteger(MQL5_TRADE_ALLOWED) && Yx < 50; Yx++) 
   {
    Sleep(125);   
   if (Yx >= 50) Print("Торговый поток занят больше ", DoubleToString(25 * Yx / 1000, 2), " секунд");
   else 
     if (Yx > 0) Print("Торговый поток был занят ", DoubleToString(25 * Yx / 1000, 2), " секунд");   
   return (Yx);   
   }
}
 
¡¡¡Gracias!!!
 
Lo siento, la misma pregunta. Dice '{' - algún operador esperaba paréntesis.mq5 612 62 Lo he estado probando durante unos 20-25 minutos en un EA independiente y no encuentro la razón.
/////////////////////////////////////////////////////////////////////// 

bool OrderClose(string Symb)
  {



    PositionSelect(Symb);  Print("Start@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");

   long PositionID=0;
    PositionID=PositionGetInteger(POSITION_IDENTIFIER);//Идентификатор позиции - это уникальное число, которое присваивается каждой вновь открытой позиции и не изменяется в течение всей ее жизни. Переворот позиции не изменяет идентификатора позиции.

     Print("PositionID");
    Print(PositionID);
   HistorySelect(
                 TimeCurrent()-(60*60*24*7*4),// с даты
                 TimeCurrent() // по дату
                 );

     for(int i=0; HistoryDealsTotal()>i; i++) 
   
     {
      ulong TicetSdelki;
      TicetSdelki=
                  HistoryDealGetTicket(
                  i        // номер сделки
                 );

                   long  HistoryID=HistoryDealGetInteger(
                  TicetSdelki,// тикет
      DEAL_POSITION_ID          // идентификатор свойства
      );                          //Идентификатор позиции, в открытии, изменении или закрытии которой участвовала эта сделка. Каждая позиция имеет уникальный идентификатор, который присваивается всем сделкам, совершенным на инструменте в течение всей жизни позиции.

                                  // Print ( i ); Print ( "HistoryID" ); Print ( HistoryID ); 
      if(HistoryID!=0 && PositionID!=0 && PositionID==HistoryID)
        {
         ulong TicetTojSdelki; TicetTojSdelki=TicetSdelki;

         string TYP="";
         if(HistoryDealGetInteger(TicetTojSdelki,DEAL_TYPE)==DEAL_TYPE_BUY){ TYP="OP_SELL";}
         if(HistoryDealGetInteger(TicetTojSdelki,DEAL_TYPE)==DEAL_TYPE_SELL){ TYP="OP_BUY";}
         ulong resultat=OrderSendSELLi(Symbol(),TYP,HistoryDealGetDouble(TicetTojSdelki,DEAL_VOLUME),10,10,
                                       ASK(Symbol())+300 *SymbolInfoDouble(Symbol(),SYMBOL_POINT),BID(Symbol())-300 *SymbolInfoDouble(Symbol(),SYMBOL_POINT)," com ",600,600,0);
       
         if(resultat==10009)return true;else  return false;

           }

    }



  }
//+------------------------------------------------------------------+
Los he revisado 6 veces p-par, todos parecían estar emparejados. Y no son tan oscuros, no son tantos. Estoy mirando todo, puntos con puntos, otros soportes... ¡Echa un vistazo, por favor, si puedes!
 
Dimka-novitsek:
Lo siento, la misma pregunta. Dice '{' - algún operador esperaba paréntesis.mq5 612 62 Lo intento durante unos 20-25 minutos o quizás más en un EA independiente y no encuentro la causa, todos los paréntesis grandes los he visto 6 veces, todos emparejados. Y no son tan oscuros, no son tantos. Estoy mirando todo, puntos con puntos, otros soportes... ¡Echa un vistazo, por favor, si puedes!

Para que el código sea comprensible no sólo para ti sino para todos los demás, hay una función muy útil en el MetaEditor. Se llama Styler (siga este enlace para más detalles). Haga clic en Herramientas => Styler. Atajo Ctrl+, . Pruébalo y te ayudará a entenderlo. ))

 
Sí, enseguida, lo siento.
 
/////////////////////////////////////////////////////////////////////// 

bool OrderClose(string Symb)


{



    PositionSelect(Symb);  Print("Start@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");

   long PositionID=0;
    PositionID=PositionGetInteger(POSITION_IDENTIFIER);//Идентификатор позиции - это уникальное число, которое присваивается каждой вновь открытой позиции и не изменяется в течение всей ее жизни. Переворот позиции не изменяет идентификатора позиции.

     Print("PositionID");
    Print(PositionID);
   HistorySelect(
                 TimeCurrent()-(60*60*24*7*4),// с даты
                 TimeCurrent() // по дату
                 );

     for(int i=0; HistoryDealsTotal()>i; i++) 
   
     {
                     ulong TicetSdelki;
                     TicetSdelki=
                     HistoryDealGetTicket(
                     i        // номер сделки
                     );

                     long  HistoryID=HistoryDealGetInteger(
                     TicetSdelki,// тикет
                     DEAL_POSITION_ID          // идентификатор свойства
                     );                          //Идентификатор позиции, в открытии, изменении или закрытии которой участвовала эта сделка. Каждая позиция имеет уникальный идентификатор, который присваивается всем сделкам, совершенным на инструменте в течение всей жизни позиции.

                                  // Print ( i ); Print ( "HistoryID" ); Print ( HistoryID ); 
                if(HistoryID!=0 && PositionID!=0 && PositionID==HistoryID)
                {
                            ulong TicetTojSdelki; TicetTojSdelki=TicetSdelki;
                            string TYP="";
                            if(HistoryDealGetInteger(TicetTojSdelki,DEAL_TYPE)==DEAL_TYPE_BUY){ TYP="OP_SELL";}
                            if(HistoryDealGetInteger(TicetTojSdelki,DEAL_TYPE)==DEAL_TYPE_SELL){ TYP="OP_BUY";}
                            ulong resultat=OrderSendSELLi(Symbol(),TYP,HistoryDealGetDouble(TicetTojSdelki,DEAL_VOLUME),10,10,
                            ASK(Symbol())+300 *SymbolInfoDouble(Symbol(),SYMBOL_POINT),BID(Symbol())-300 *SymbolInfoDouble(Symbol(),SYMBOL_POINT)," com ",600,600,0);
       
                            if(resultat==10009)return true;else  return false;

                }

    }



}
//+------------------------------------------------------------------+
Sólo hay tres pares de soportes básicos
 
Dimka-novitsek:
Sólo hay tres pares de paréntesis

El compilador señala la línea con la que tropezó. La próxima vez deberías resaltar esas líneas. Es un dolor de cabeza encontrar "la línea 612 y la posición 62 del cursor".

En esta línea.

if(resultat==10009)return true;else  return false;

No me gusta que true y false no estén rodeados de paréntesis. No sé si el idioma lo permite, pero así es como debería escribirse en fen-shui:

if(resultat==10009) 
    return(true);
else  
    return(false);