Errori, bug, domande - pagina 858

 
A proposito, i secondi bisestili hanno qualche effetto sul tempo nelle date?
 

Ecco la situazione: abbiamo una struttura di date e a un certo punto vi aggiungiamo giorni o ore o minuti o mesi e ci ritroviamo con valori negativi come -335.05.2012 00:-615:00 (o nel caso di gennaio 650, 360 ore e 250 minuti). Devono essere convertiti in una data normale. Finora sono arrivato a questo.

void ReconstructTimeStruct(MqlDateTime &sTime)
  {
   while(sTime.min<0)
     {
      sTime.min=59-fabs(sTime.min);
      sTime.hour--;
     }
   while(sTime.min>=60)
     {
      sTime.min=sTime.min-60;
      sTime.hour++;
     }

   while(sTime.hour<0)
     {
      sTime.hour=23-fabs(sTime.hour);
      sTime.day--;
     }
   while(sTime.hour>=24)
     {
      sTime.hour=sTime.hour-24;
      sTime.day++;
     }

   while(sTime.day<1)
     {
      if(sTime.mon>1)
        {
         sTime.mon--;
         sTime.day=GetDaysInMonthByMonthAndYear(sTime.mon,sTime.year)-fabs(sTime.day); //GetDaysInMonthByMonthAndYear получает количество дней в месяце с учетом  месяца и високосный ли год
        }
      else
        {
         sTime.mon=12;
         sTime.year--;
         sTime.day=GetDaysInMonthByMonthAndYear(sTime.mon,sTime.year)-fabs(sTime.day);
        }
     }
   while(sTime.day>GetDaysInMonthByMonthAndYear(sTime.mon,sTime.year))
     {
      if(sTime.mon<12)
        {
         sTime.mon++;
         sTime.day=sTime.day-GetDaysInMonthByMonthAndYear(sTime.mon,sTime.year);
        }
      else
        {
         sTime.mon=1;
         sTime.year++;
         sTime.day=sTime.day-GetDaysInMonthByMonthAndYear(sTime.mon,sTime.year);
        }
     }
   while(sTime.mon<1)
     {
      sTime.year--;
      sTime.mon=12-fabs(sTime.mon);
     }
   while(sTime.mon>12)
     {
      sTime.year++;
      sTime.mon=sTime.mon-12;
     }
  }

Non so o sono un pazzo o gli sci non volano. a volte si blocca e sul mese non funziona correttamente.

qualcuno può dirmi qual è il problema?

O chi può dirmi l'algoritmo per trovare il tempo di apertura di una candela per data, comprese le candele non formate, con la possibilità di spostamento (0-candela corrente, -1 - candela a sinistra, 1 - candela a destra)?

 
leksiq: Non so come comunicare l'errore agli sviluppatori, proverò qui...
Hai una sezione ServiceDesk nel tuo profilo.
 
Urain:

Esattamente, ma io lo farei in modo diverso... Quindi, se la condizione ha funzionato, non c'è bisogno di fare un altro controllo.

La maggior parte degli anni passerà attraverso il primo controllo come falso,

In realtà, un compilatore normale non controllerà il resto della && se la prima condizione è falsa.

Non lo so in ME5.

 
papaklass:

È prevista la creazione del servizio Warehouse per il quartetto?

Mi unisco alla domanda - è possibile che il 4 sopravviva anche al 5 - è come XP e VISTA
 
A100:

In generale, il compilatore normale se la prima condizione è falsa - il resto di && non controlla

ma non so come sia in ME5.

Allo stesso modo. brevi controlli delle condizioni.

// In quattro lunghi (pieno)

 
MetaDriver:

// In un quartetto lungo (completo)

Allora è chiaro da dove vengono le gambe
 

Terminale client MetaTrader 5 build 712

[...]

8. Terminale: Segnali. Corretta la visualizzazione delle informazioni dei segnali e la navigazione sospesa tra i segnali quando si lavora sotto Wine.

[...]

Hanno rotto qualcosa nel terminale nell'ultima build. Ora si blocca da solo dopo diversi secondi dopo l'avvio ( pipe wait ) e viene ucciso solo attraverso il monitor di sistema. Le build 695 e 705 hanno funzionato perfettamente, ma nel complesso sono andate bene. Ho Linux mint 12 ( lisa ), wine-1.4. Ecco il log del terminale OS allegato. Può aiutare. Terminal MT in sé non lascia alcun registro - dopo la cancellazione tramite monitor le cartelle dei registri sono vuote.

Mi piacerebbe vedere l'aggiornamento con la possibilità di spegnere, per esempio tramite un interruttore della linea di comando come '/noupdate'. Allora almeno sarebbe possibile lavorare in qualche modo prima del prossimo crash.

File:
crash9log.zip  2 kb
 

OnTesterInit

La funzione OnTesterInit() è il gestore dell'evento TesterInit che viene generato automaticamente prima dell'inizio dell'ottimizzazione dell'Expert Advisor nel tester della strategia.

Quindi, questa funzione viene chiamata solo quando Optimization=CustomMax ?

All'inizio pensavo dalla descrizione che fosse sempre chiamato dallo Strategy Tester... Peccato che non sia...

 
Roffild:

OnTesterInit

La funzione OnTesterInit() è il gestore dell'evento TesterInit che viene generato automaticamente prima dell'inizio dell'ottimizzazione dell'Expert Advisor nel tester della strategia.

Quindi, questa funzione viene chiamata solo quando Optimization=CustomMax ?

Dalla descrizione ho pensato inizialmente che è sempre chiamato dal tester... Peccato che non sia il caso...

Cosa significa Optimize=CustomMax?

Descrivi ciò che ti manca. Cosa vorresti ottenere?