Errori, bug, domande - pagina 2621

 

Mi sono imbattuto in una confusione in un posto apparentemente ovvio. Ecco il copione:

double Sigma = 1.0;
double Smax = 5.0;
double Step = 2;


void OnStart()
{
  int scount = 1;

  double s = Sigma;

  for( ; s < Smax; scount++)
  {
    s *= Step;
    Print(scount, " ", s);
  }
  
  Print(scount);
}

per qualche motivo finisce per avere un numero pari a 4, anche se dovrebbe essere 3. Il ciclo di incremento dopo un controllo riuscito dovrebbe essere eseguito solo quando s è 1.0, 2.0, 4.0. Allora c'è 8 in s, che è più di 5.

 
Stanislav Korotky:

Mi sono imbattuto in una confusione in un posto apparentemente ovvio. Ecco il copione:

per qualche motivo finisce per avere un numero pari a 4, anche se dovrebbe essere 3. Il ciclo di incremento dopo un controllo riuscito dovrebbe essere eseguito solo quando s è 1.0, 2.0, 4.0. Allora s contiene 8, che è maggiore di 5.

nell'istruzione for l'incremento viene eseguito dopo la fine del corpo del ciclohttps://www.mql5.com/ru/docs/basis/operators/for

for(espressione1; espressione2; espressione3)operatore;

выражение1;
while(выражение2)
  {
   оператор;
   выражение3;
  };

Ho cercato su Google il primo articolo, nel caso non lo ricordassi - funziona allo stesso modo in C++ https://en.cppreference.com/w/cpp/language/for

init_statement
while ( condition ) {
statement
iteration_expression ;
}
 
Igor Makanu:

Nell'istruzione for, l'incremento viene fatto dopo la fine del corpo del ciclohttps://www.mql5.com/ru/docs/basis/operators/for

per(espressione1; espressione2; espressione3)

Esattamente. La variabile del ciclo deve passare i valori 1, 2, 3. Perché dopo la terza moltiplicazione la condizione non è soddisfatta: 8 > 5 - questo può essere visto dall'ultima stampa del ciclo.

 
Stanislav Korotky:

Esattamente. La variabile del ciclo deve passare i valori 1, 2, 3. Perché dopo la terza moltiplicazione la condizione non è soddisfatta: 8 > 5 - questo può essere visto dall'ultima stampa del ciclo.

Sì, ma il corpo del ciclo viene eseguito, giusto? quindi c'è un incremento dopo la fine del corpo "espressione3", poi c'è un controllo - "espressione2"

 
Igor Makanu:

Sì, ma il corpo del ciclo è fatto, giusto? quindi c'è un incremento dopo la fine del corpo "espressione3", poi c'è un controllo - "espressione2"

Venerdì è l'ultimo venerdì dell'anno :-/

 

1- Le corse dei risultati dei test hanno smesso di funzionare. C'è spazio sul disco. C'è tutto. Quello che correva qualche minuto prima si è improvvisamente fermato.

Premo il pulsante di avvio, o clicco sul risultato dell'ottimizzazione e non succede nulla. Questo tipo di messaggio appare e basta:

2019.12.29 11:44:51.402 Tester singolo passaggio iniziato

E una volta, appare questo messaggio:

2019.12.29 11:41:56.053 Tester versione debug di "Name.ex5" rilevata

Anche se nessun debug è abilitato e questo EA non è affatto aperto nell'editor e l'editor è disabilitato, nulla è stato compilato o cambiato.

Parametri dall'ottimizzazione alle impostazioni, si trasferisce con successo ed è lì che si ferma visivamente.


2- E il pulsante "stop" nel forwarder fallisce. In alternativa non cambia il suo colore da rosa a verde, o il terminale arriva solo allo stato intermedio, quando non fa nulla, ma non posso selezionare nulla nella scheda "impostazioni", perché tutto è disabilitato lì.

Premendo di nuovo il pulsante di arresto si avvia la corsa. E si può fermare prima di andare avanti e allora va bene.


3- E un altro "trucco" è che l'ottimizzazione inizia a funzionare un po' più lentamente. Solo nel tempo. Cura riavviando il terminale.... Qualcosa si sta accumulando da qualche parte... Cancellare il registro e la cache non sembra influire su questo rallentamento. Ma il riavvio ha un grande effetto!
Тестирование стратегий - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
Тестирование стратегий - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
  • www.metatrader5.com
Тестер стратегий позволяет тестировать и оптимизировать торговые стратегии (советники) перед началом использования их в реальной торговле. При тестировании советника происходит его однократная прогонка с начальными параметрами на исторических данных. При оптимизации торговая стратегия прогоняется несколько раз с различным набором параметров...
 
Михаил:

Le corse dei risultati dei test hanno smesso di funzionare. Lo spazio su disco c'è. C'è tutto. Quello che correva qualche minuto prima si è improvvisamente fermato.

Premo il pulsante di avvio, o clicco sul risultato dell'ottimizzazione e non succede nulla. Questo è il tipo di cose che appaiono e basta:

2019.12.29 11:44:51.402 Tester singolo passaggio iniziato

E una volta, appare questo messaggio:

2019.12.29 11:41:56.053 Rilevata la versione debug di "Name.ex5" da parte del tester

Anche se nessun debug è abilitato e questo EA non è affatto aperto nell'editor e l'editor è disabilitato, nulla è stato compilato o cambiato.

Salva con successo i parametri dall'ottimizzazione alle impostazioni e si ferma visivamente a quello.


E il pulsante "stop" nel forwarder non funziona correttamente. A volte non cambia il suo colore da rosa a verde, o il terminale arriva allo stato intermedio in cui non fa nulla ma non può selezionare nulla nella scheda delle impostazioni perché tutto è disabilitato lì.

Premendo nuovamente il pulsante di arresto si avvia la corsa. E si può fermare prima di andare avanti e poi va bene.


E un altro "trucco" è che l'ottimizzazione inizia a funzionare diverse volte più lentamente. Solo nel tempo. Rimedio riavviando il terminale.... Qualcosa si sta accumulando da qualche parte... Cancellare il registro e la cache non sembra influire su questo rallentamento. Ma il riavvio ha un grande effetto!

Dovete compilare la release-version con F7. Hai premuto F5 e compilato debug-version

 
Artyom Trishkin:

Dovete compilare la versione di rilascio con F7. Hai premuto F5 e compilato debug-version

No, compilo con il mouse e il pulsante "Compile". Ma non si applica al caso descritto, perché questo EA è stato compilato l'altro ieri. Poi è stato ottimizzato con successo ed eseguito diverse volte. E poi si è schiantato. Riavviare il terminale ha aiutato...

Quindi sembra che ci siano dei bug che si accumulano da qualche parte. Il che porta a malfunzionamenti e freni. Il reset (riavvio) cura...
 
E un'altra cosa - più lontano (per data) è la corsa in avanti, dalla data di inizio della corsa in avanti, più lento va. All'inizio è veloce, poi sempre più lento. E poi catastroficamente più lento. È una buona idea sistemare la cosa)
 
Михаил:
E un'altra cosa - più lontano (per data) è la corsa in avanti, dalla data di inizio della corsa in avanti, più lento va. All'inizio è veloce, poi sempre più lento. E poi catastroficamente più lento. Sarebbe bello sistemarlo)

Nessun codice per giocare - nessuna risposta