Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 1936

 
Non riesco a capire cosa c'è che non va. C'è un ciclo while nell'indicatore, ma sembra funzionare bene. All'inizio durante i test tutto funziona, ma in uno stesso posto il programma si blocca, anche il terminale, devo cancellare il codice sorgente dal terminale. Anche su altre valute si blocca. Ho messo dei commenti intorno al programma e finalmente arriva aComment(rates_total+"\n "+prev_calculated); prima del ritorno e si ferma. E il commento mostra che abbiamo ottenuto numeri come 3247 e 3247, il che significa che la condizione per lavorare (rates_total>prev_calculated) non è soddisfatta e il programma non deve fare nulla. Perché si blocca?
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   if(rates_total>prev_calculated)
     { 
         Comment("0");
          if(Count==0)
             total = rates_total-4;
          else
             total = rates_total - prev_calculated+2;

          if(total>10000)
             total=10000;

          for(int i=total; i>2; i--)
            {
            }
       
          while(begin<size-2)
            {
            }
      Count++;
     }  
     Comment(rates_total+"\n"+prev_calculated);          //виснет здесь(коммент 3247 и 3247)
   return(rates_total);
  }
 
Aleksandr Kononov Comment(rates_total+"\n "+prev_calculated); prima del ritorno e si ferma. E il commento mostra che abbiamo ottenuto numeri come 3247 e 3247, il che significa che la condizione per lavorare (rates_total>prev_calculated) non è soddisfatta e il programma non deve fare nulla. Perché si blocca?

Leggete attentamente la documentazione.

Se l'espressione è vera, l'operatore viene eseguito finché l'espressione non diventa falsa.
Quali sono le variabili nella condizione del ciclo? E se la condizione iniziale è vera, quando diventa falsa per uscire dal ciclo?
Оператор цикла while - Операторы - Основы языка - Справочник MQL4
Оператор цикла while - Операторы - Основы языка - Справочник MQL4
  • docs.mql4.com
Оператор цикла while - Операторы - Основы языка - Справочник MQL4
 
Alexey Viktorov #:

Leggete attentamente la documentazione.

Cosa sono queste variabili nella condizione di loop? E se la condizione iniziale è vera, quando diventa falsa per uscire dal ciclo?

I cicli servono solo per capire cosa sono. Se li scrivete, otterrete un sacco di codice. La domanda è perché il lavoro si ferma prima del ritorno, anche se non succede niente neanche in questo tick. Nei tassi di commento il totale è uguale al prev calcolato, quindi non facciamo assolutamente nulla.

 
L'indicatore funziona semmai, ma si blocca in alcune condizioni
 
Potrebbe essere una sorta di errore ritardato? Il programma arriva alla fine e poi si blocca, è possibile?
 
Il problema è nel loop, dopo tutto. Il commento è in ritardo. La stampa è l'ultima nel ciclo
 
Potete dirmi come trovare una freccia tra altri oggetti in mql4? Ho bisogno di eliminare tutte le frecce e lasciare le linee
 
Aleksandr Kononov #:
Potete dirmi come trovare una freccia tra altri oggetti in mql4? Rimuovere tutte le frecce e lasciare le linee

Beh, leggete la documentazione

int  ObjectsDeleteAll(
   int    sub_window=EMPTY,   // индекс окна
   int    object_type=EMPTY   // тип объекта для удаления
   );
ObjectsDeleteAll - Графические объекты - Справочник MQL4
ObjectsDeleteAll - Графические объекты - Справочник MQL4
  • docs.mql4.com
ObjectsDeleteAll - Графические объекты - Справочник MQL4
 
Grazie!
 
Buon momento per conoscere mql4. C'è una funzione che chiude la parte percentuale dell'ordine perdente più lontano nella serie a causa di posizioni redditizie di qualsiasi direzione. Abbiamo bisogno di aiuto per migliorare questa funzione! Vale a dire, abbiamo bisogno di chiudere parzialmente tutti gli ordini rimanenti nella serie (a causa di posizioni redditizie di qualsiasi direzione) invece di quello più lungo. Grazie in anticipo!
File:
KJH.mq4  8 kb