Erreurs, bugs, questions - page 847

 

Le compilateur m'a exprimé quelque chose en anglais. Le bracket quelque chose n'est pas un programme, le programme en général est mauvais avec ce bracket et le bracket est déséquilibré. Mais il y a des parenthèses. Pourriez-vous me dire où chercher une erreur ?

'}' - Erreur à la fin du programme Redo.mq5 3562 1
'{' - parenthèses non équilibrées 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);   
} 

//////////////////////////////////////////////////////////////////////////////////////////////
 
Je crois que le problème est plus haut... de ce point de vue, tout va bien...
 
Yedelkin:

Eh bien, je l'ai déjà terminé ci-dessus. Je le répète : la "nouvelle" cotation pour l'Expert Advisor est une cotation qui arrive juste après l'achèvement de la fonction OnTick() suivante, même si cette cotation n'est pas le "premier tick d'une barre". La condition de l'arrivée d'une nouvelle barre ne sera vérifiée qu'après que l'Expert Advisor ait terminé le traitement de cette "précédente" barre.

ne sera vérifiée qu'une fois que le conseiller expert aura terminé le traitement de la cotation de la barre "précédente". ...Si la fonction OnTick() est exécutée pendant 90 secondes et démarrée à 00.00.00, la "condition pour un nouveau tick sur M1 sera exécutée au moins une fois, à savoir après 00.01.30".

Merci, c'est comme ça que ça doit être.
 
Dimka-novitsek:

Le compilateur m'a exprimé quelque chose en anglais. Le bracket quelque chose n'est pas un programme, le programme en général est mauvais avec ce bracket et le bracket est déséquilibré. Mais il y a des parenthèses. S'il vous plaît, dites-moi, où chercher une erreur ?

'}' - fin inattendue du programme Redo.mq5 3562 1
'{' - parenthèses non équilibrées Remake.mq5 3330 1

Peut-être que les accolades manquent lors de l'écriture du code (indépendamment de ce que dit le compilateur) ?

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);   
   }
}
 
Merci ! !!
 
Je suis désolé, même question. Il dit '{' - un opérateur quelconque attendait des parenthèses.mq5 612 62 J'ai essayé pendant environ 20-25 minutes dans un EA séparé et je ne peux pas trouver la raison.
/////////////////////////////////////////////////////////////////////// 

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;

           }

    }



  }
//+------------------------------------------------------------------+
Je les ai regardés 6 fois par paires, ils semblent tous être appariés. Et ils ne sont pas si sombres, pas si nombreux. Je regarde tout, les points avec les points, les autres parenthèses... Jetez un coup d'œil, s'il vous plaît, si vous le pouvez !
 
Dimka-novitsek:
Désolé, même question. Il dit '{' - un opérateur attendait des parenthèses.mq5 612 62 Je l'essaie pendant environ 20-25 minutes ou peut-être plus dans un EA séparé et je ne peux pas trouver la cause, toutes les grandes parenthèses que j'ai vues 6 fois, toutes appariées. Et ils ne sont pas si sombres, pas si nombreux. Je regarde tout, les points avec les points, les autres parenthèses... Jetez un coup d'œil, s'il vous plaît, si vous le pouvez !

Afin de rendre le code compréhensible non seulement pour vous mais aussi pour tout le monde, il existe une fonction très utile dans le MetaEditor. Il s'agit du Styler (suivez ce lien pour plus de détails). Cliquez sur Outils => Styler. Raccourci Ctrl+, . Essayez-le et cela vous aidera à le comprendre. ))

 
Oui, tout de suite, désolé.
 
/////////////////////////////////////////////////////////////////////// 

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;

                }

    }



}
//+------------------------------------------------------------------+
Il n'y a que trois paires de supports de base
 
Dimka-novitsek:
Il n'y a que trois paires de parenthèses

Le compilateur signale la ligne sur laquelle il a trébuché. La prochaine fois, vous devriez souligner ces lignes. C'est une vraie galère de chercher "ligne 612 et position du curseur 62".

Sur cette ligne.

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

Je n'aime pas que le vrai et le faux ne soient pas entourés de parenthèses. Je ne sais pas si la langue le permet, mais c'est ainsi que cela devrait être écrit dans le fen-shui :

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