Errori, bug, domande - pagina 847

 

Il compilatore mi ha espresso qualcosa in inglese. La staffa qualcosa non è un programma, il programma in generale è sbagliato con questa staffa e la staffa è sbilanciata. Ma ci sono delle parentesi. Potreste dirmi dove cercare un errore?

'}' - Errore alla fine del programma Redo.mq5 3562 1
'{' - parentesi sbilanciate 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);   
} 

//////////////////////////////////////////////////////////////////////////////////////////////
 
Credo che il problema sia più in alto... da questo punto di vista, è tutto a posto...
 
Yedelkin:

Beh, l'ho già finito qui sopra. Ripeto: la "nuova" quotazione per l'Expert Advisor è una quotazione che arriva subito dopo il completamento della funzione OnTick() successiva, anche se questa quotazione non è il "primo tick di una barra". La condizione dell'arrivo di una nuova barra viene controllata solo dopo che l'Expert Advisor termina l'elaborazione di quella barra "precedente".

sarà controllato solo dopo che l'Expert Advisor ha terminato l'elaborazione della quotazione arrivata sulla barra "precedente". ...Se la funzione OnTick() è eseguita per 90 secondi e iniziata alle 00.00.00, la "condizione per un nuovo tick su M1 sarà eseguita almeno una volta, cioè dopo le 00.01.30

Grazie, è così che dovrebbe essere.
 
Dimka-novitsek:

Il compilatore mi ha espresso qualcosa in inglese. La staffa qualcosa non è un programma, il programma in generale è sbagliato con questa staffa e la staffa è sbilanciata. Ma ci sono delle parentesi. Per favore, ditemi, dove cercare un errore?

'}' - fine inaspettata del programma Redo.mq5 3562 1
'{' - parentesi sbilanciate Remake.mq5 3330 1

Forse mancano le parentesi quando si scrive il codice (indipendentemente da quello che dice il compilatore)?

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);   
   }
}
 
Grazie!!!
 
Mi dispiace, stessa domanda. Dice '{' - qualche operatore si aspettava una parentesi.mq5 612 62 Ho provato per circa 20-25 minuti in un EA separato e non riesco a trovare la ragione.
/////////////////////////////////////////////////////////////////////// 

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;

           }

    }



  }
//+------------------------------------------------------------------+
Li ho guardati 6 volte p-pairwise, sembrano tutti accoppiati. E non sono così scuri, non così tanti. Sto guardando tutto, punti con punti, altre parentesi... Date un'occhiata, per favore, se potete!
 
Dimka-novitsek:
Scusa, stessa domanda. Dice '{' - qualche operatore si aspettava una parentesi.mq5 612 62 Lo provo per circa 20-25 minuti o forse più in un EA separato e non riesco a trovare la causa, tutte le parentesi grandi le ho viste 6 volte, tutte accoppiate. E non sono così scuri, non così tanti. Sto guardando tutto, punti con punti, altre parentesi... Date un'occhiata, per favore, se potete!

Per rendere il codice comprensibile non solo per voi ma per tutti gli altri, c'è una caratteristica molto utile nel MetaEditor. Si chiama Styler (segui questo link per i dettagli). Clicca su Strumenti => Styler. Scorciatoia Ctrl+, . Provatelo e vi aiuterà a capirlo. ))

 
Sì, subito, scusate.
 
/////////////////////////////////////////////////////////////////////// 

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;

                }

    }



}
//+------------------------------------------------------------------+
Ci sono solo tre coppie di parentesi di base
 
Dimka-novitsek:
Ci sono solo tre coppie di parentesi

Il compilatore indica la linea in cui è inciampato. La prossima volta dovreste evidenziare tali linee. È una rottura di palle trovare "la linea 612 e la 62a posizione del cursore".

Su questa linea.

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

Non mi piace che true e false non siano circondati da parentesi. Non so se la lingua lo permette, ma è così che dovrebbe essere scritto nel fen-shui:

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