Errori, bug, domande - pagina 2611

 
RickD:

Non ci sono nemmeno cartelle nel tester per gli Expert Advisors. Ma MQLInfoString(MQL_PROGRAM_NAME) restituisce lo stesso valore quando si testa un Expert Advisor.

E ho bisogno dello stesso valore per associare la versione sotto test con la versione sul grafico usando i canali nominati.

Fissato da
 
I commenti non relativi a questo argomento sono stati spostati in "Tutte le domande dei neofiti su MQL4 e MQL5, aiuto e discussione su algoritmi e codici".
 

Eseguo l'EA in modalità debug. Ho bisogno di fare un breakpoint nel momento esatto in cui non faccio partire manualmente l'EA. Come si fa?


Il problema è che il terminale si blocca permanentemente quando rimuovo l'EA. Ho bisogno di capire dove succede.

 
fxsaber:

Eseguo l'EA in modalità debug. Ho bisogno di fare un breakpoint nel momento esatto in cui non faccio partire manualmente l'EA. Come si fa?

Ho scritto il seguente codice:

int OnInit()
  {
     if(IsStopped()) DeInitEA(1);
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   if(IsStopped()) DeInitEA(2);

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(IsStopped()) DeInitEA(3);
  }
//+------------------------------------------------------------------+

void DeInitEA(const int callfunc)
{
   string s = "";
   switch (callfunc)
   {
      case 1: s = "OnInit"; break;
      case 2: s = "OnDeinit"; break;
      case 3: s = "OnTick"; break;
   }
   Print(s + " , остановка работы советника");
   
}

impostare il punto di interruzione sulla stringa s = ""; - è tornato a ME senza problemi, le finestre di debug sono apparse, bene, tutto è come al solito

 

Prima hanno tagliato le statistiche e ora le hanno uccise del tutto?


 
Igor Makanu:

ha scritto il seguente codice:

impostare il punto di interruzione sulla stringa s = ""; - è tornato a ME senza problemi, le finestre di debug sono apparse, bene, tutto come al solito

Con questo approccio dobbiamo controllare un breakpoint dopo ogni operatore. Non si adatta.

 
TheXpert:

Prima hanno tagliato le statistiche e ora le hanno uccise del tutto?

sta funzionando

 
fxsaber:

Con questo approccio, bisogna mettere un controllo di stop dopo ogni operatore. Non adatto.

Non c'è bisogno di farlo dopo ogni dichiarazione, usa il controllo della divisione a metà - all'inizio, alla fine e nel mezzo del codice, poi quando trovi la metà giusta, ripetilo di nuovo e dividi il codice in due parti, penso sia veloce

 
Igor Makanu:

dopo ogni dichiarazione non è necessario, mettere un mezzo controllo di divisione - all'inizio, alla fine e nel mezzo del codice, poi trovare la metà giusta del codice ripetere la divisione del codice in due parti, a mio parere è veloce

È un grande programma. Ci vogliono circa 30 secondi ogni volta per riprodurre il blocco.

 
fxsaber:

Eseguo l'EA in modalità debug. Ho bisogno di fare un breakpoint nel momento esatto in cui non faccio partire manualmente l'EA. Come si fa?


Il problema è che il terminale si blocca permanentemente quando rimuovo l'EA. Ho bisogno di capire dove succede.

È completamente risolto o ci vuole un po' perché l'EA si scarichi? In quest'ultimo caso, cercate un loop.
Motivazione: