Errori, bug, domande - pagina 1090

 

Ciao a tutti, la domanda è più per curiosità: "Perché ai membri dell'enumerazione ENUM_TIMEFRAMES sono assegnati questi particolari valori? Da dove viene il numero16385 quando si passa dalla M30 alla H1?".

enum ENUM_TIMEFRAMES       
{                          
PERIOD_CURRENT = 0,        
PERIOD_M1 = 1,             
PERIOD_M2 = 2,             
PERIOD_M3 = 3,             
PERIOD_M4 = 4,             
PERIOD_M5 = 5,             
PERIOD_M6 = 6,             
PERIOD_M10 = 10,           
PERIOD_M12 = 12,           
PERIOD_M15 = 15,           
PERIOD_M20 = 20,           
PERIOD_M30 = 30,           
PERIOD_H1 = 16385,  //???       
PERIOD_H2 = 16386,         
PERIOD_H3 = 16387,         
PERIOD_H4 = 16388,         
PERIOD_H6 = 16390,         
PERIOD_H8 = 16392,         
PERIOD_H12 = 16396,        
PERIOD_D1 = 16408,         
PERIOD_W1 = 32769,         
PERIOD_MN1 = 49153         
}; 

Grazie in anticipo per le risposte!!!

 
MigVRN:

Ciao a tutti, la domanda è più per curiosità: "Perché ai membri dell'enumerazione ENUM_TIMEFRAMES sono assegnati questi valori particolari? Da dove viene il numero16385 quando si passa dalla M30 alla H1?".

Grazie in anticipo per le risposte!!!


PERIOD_H1 = 16385,  // = (1 << 14) + 1
PERIOD_H2 = 16386,  // = (1 << 14) + 2         
PERIOD_H3 = 16387,  // = (1 << 14) + 3
PERIOD_H4 = 16388,  // = (1 << 14) + 4
PERIOD_H6 = 16390,  // = (1 << 14) + 6
PERIOD_H8 = 16392,  // = (1 << 14) + 8
PERIOD_H12 = 16396, // = (1 << 14) + 12
 
MetaDriver:

Grazie! Ma ho sbagliato la domanda, perché ora sono ancora più confuso... Se non le dispiace, un paio di altre domande chiarificatrici:

1) Perché?

2) E perché 14?

:)

 
MigVRN:

Grazie! Ma ho sbagliato la domanda, perché ora sono ancora più confuso... Se non le dispiace, un paio di altre domande chiarificatrici:

1) Perché?

2) E perché 14?

:)

:) E questo spetta agli sviluppatori .... perché i loro modi sono imperscrutabili.... ;)
 

Penso che ci sia un errore nella ricerca del bar per tempo L'ho trovato nella funzioneCopyClose (e anche in altre).

quando si copia una barra del simbolo "alieno" con questa funzione, si verifica un errore di copia, anche se questa barra è presente nella finestra aperta accanto.

2014.01.05 14:52:00.556 tmp (,D1) USDCAD ooo 2012.12.12 00:00:00
2014.01.05 14:51:57.214 tmp (,D1) 80.55313933496228
2014.01.05 14:51:50.947 tmp (,D1) USDCAD ooo 2013.03.04 00:00:00
2014.01.05 14:51:44.828 tmp (,D1) USDCHF ooo 2011.12.26 11:00:00
2014.01.05 14:51:37.896 tmp (,D1) USDCAD ooo 2011.03.02 12:00:00
2014.01.05 14:51:30.112 tmp (,D1) USDSEK ooo 2013.09.20 22:00:00

Nello script, è comprensibile, si può chiedere finché non lo trova "miracolosamente", ma non è accettabile per l'indicatore.

A proposito, mi sono ricordato che ho dovuto scrivere io stesso la funzione poiché la funzione integrata non era in grado di usarla per l'indicatore

//--------------------------------------------------------------------------+
//=   Ищет  индекс массива MqlRates по времени
//=   Протестировано 28,12,2011
//=   для прохода по 4 000 800      баров Скопировано USDJPY
//=   ошибок = 0 GetTickCount 2 200 мс.
//=   ВОЗВРАТИТ -1 в случае ошибки + сообщение Алерт
//--------------------------------------------------------------------------+
int save_indexs=0;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int FindIndex(datetime find,MqlRates &xxxxxx[])
  {
   int size_mql=ArraySize(xxxxxx);
//проверим находится ли время в массиве, и есть ли где искать
   if(size_mql<=0){Alert("ggg");return(-1);}
   if(find>xxxxxx[0].time)return(0);
   if(find<=xxxxxx[size_mql-1].time)return(size_mql-1);
//а может лежит рядом?
//проверим по скорости с глоб. перем.
   for(int i=save_indexs+1;i>=save_indexs-1 && i>=0;i--)
      if(i<size_mql)
         if(find==xxxxxx[i].time)
            return(i);
//результат с применением  ошибок = 0 GetTickCount   843 мс.
//результат без применения ошибок = 0 GetTickCount 3 744 мс.
//начнемс
   int kolvo=size_mql,
   start_save=size_mql-1,
   end_save=0;
   while(!IsStopped())
     {
      //градация поиска +1 для плавающей запятой, учесть все не ошибиться, дойдет до - минусов
      int grad=kolvo/StringLen(IntegerToString(kolvo))+1;
      if(grad<10)grad=1;
      //
      for(int start=start_save,karetka=start-grad;          start>=end_save;          start=karetka,karetka=start-grad)
        {
         //karetka может выходить за размер масс
         if(karetka<0)karetka=0;
         if(find>=xxxxxx[start].time && find<=xxxxxx[karetka].time)
           {
            kolvo=start-karetka+1;
            start_save=start;
            end_save=karetka;
            if(start==karetka+1){save_indexs=karetka;return(karetka);}
            break;//for
           }
        }
     }
   return(-1);
  }
//+------------------------------------------------------------------+

Sono passati due anni ed è ancora lì, è strano.

File:
tmp.mq5  3 kb
myusdx.mq5  5 kb
 
Le virgolette nei link incorporati nel forum uccidono l'intero link
 
costy_:

sembra esserci un errore nella ricerca della barra in tempo nella funzione CopyClose (e anche in altre).

....

Sono passati due anni ed è ancora lì, è strano.

non è un bug, è un bug (c)

CopyXXX-i prende i dati dai buffer corrispondenti e se non ci sono dati nel buffer (carattere alieno e/o timeframe diverso da quello corrente), allora ci sarà un errore. Tuttavia in questo caso il processo di formazione dei buffer viene avviato e se dopo un po' (sic!) di tempo CopyXXX viene chiamato di nuovo il risultato può essere ottenuto. Non puoi usare Sleep negli indicatori, ecco perché devi usare il timer, perché non puoi contare sul prossimo tick (l'uscita e gli strumenti non liquidi sono da biasimare)

 

Non riesco ad accedere al caveau tramite il sito web, quando inserisco il mio nome utente e la password, appare di nuovo la casella di login e password.

Inoltre non riesco a recuperare nulla tramite MetaEditor:

Il login e la password sono corretti

Potrebbe dirmi il motivo?

 
sanyooooook:

Non riesco ad accedere al caveau tramite il sito web, quando inserisco il mio nome utente e la password, la casella di login e password si apre di nuovo.

Inoltre non riesco a recuperare nulla tramite MetaEditor:

Il login e la password sono corretti

Potrebbe dirmi il motivo?

Forse hai cambiato la password, c'era un tale bug.
 
zfs:
Forse hai cambiato la tua password, c'era un bug.
Sì, l'ho fatto, ma sto inserendo una password valida.