Errori, bug, domande - pagina 311

 

Bug nella nuova build, possibile solo su sistemi x64 (in particolare windows 7, processore core i7). Non c'era questo bug nella build precedente. Questo bug ha il seguente significato.

Se non cambio il codice sorgente di Expert Advisor in modo significativo (per esempio, cambio solo il valore di qualche variabile) e ricompilo dopo, il risultato del test rimane lo stesso.

Sono anche arrivato a quanto segue:

Nella funzione void OnTick() inserisco return; :) compilo, eseguo e il risultato è lo stesso !!!! Anche se in generale, la linea dovrebbe essere.

La via d'uscita era o cancellare il file *.ex5 e compilare di nuovo, o scrivere qualche schifezza per far calciare il compilatore, e poi compilare.

Domani verificherò se la stessa cosa accade sul sistema operativo x32 bit.

Ho anche notato che ci vuole troppo tempo per aprire nuove finestre con i grafici su x64 e ci vuole troppo tempo per rimuoverli!

E il terminale si blocca con la scritta "no response" per circa 5 secondi.

 
bobsley:

Bug nella nuova build, possibile solo su sistemi x64 (in particolare windows 7, processore core i7). Non c'era questo bug nella build precedente. Questo bug ha il seguente significato.

Se non cambio il codice sorgente di Expert Advisor in modo significativo (per esempio, cambio solo il valore di qualche variabile) e ricompilo dopo, il risultato del test rimane lo stesso.

Sono anche arrivato a quanto segue:

Nella funzione void OnTick() inserisco return; :) compilo, eseguo e il risultato è lo stesso!!!! Anche se in generale, la linea dovrebbe essere.

La via d'uscita era o cancellare il file *.ex5 e compilare di nuovo, o scrivere qualche schifezza per far calciare il compilatore, e poi compilare.

Domani verificherò se la stessa cosa accade sul sistema operativo x32 bit.

Ho anche notato che ci vuole troppo tempo per aprire nuove finestre con i grafici su x64 e ci vuole troppo tempo per rimuoverli!

E il terminale si blocca con la scritta "no response" per circa 5 secondi.

Controlla questa cartella (nome utenteAppData\Roaming\MetaQuotes\Terminal\72CEBD0F7A5518983A10360D0E46A5B6\MQL5) forse il tuo EA compilerà lì
 
bobsley:

Bug nella nuova build, possibile solo su sistemi x64 (in particolare windows 7, processore core i7). Non c'era questo bug nella build precedente. Questo bug ha il seguente significato.

Se non cambio il codice sorgente di Expert Advisor in modo significativo (per esempio, cambio solo il valore di qualche variabile) e ricompilo dopo, il risultato del test rimane lo stesso.

Sono anche arrivato a quanto segue:

Nella funzione void OnTick() inserisco return; :) compilo, eseguo e il risultato è lo stesso!!!! Anche se in generale, la linea dovrebbe essere.

La via d'uscita era o cancellare il file *.ex5 e compilare di nuovo, o scrivere qualche schifezza per far calciare il compilatore, e poi compilare.

Domani verificherò se la stessa cosa accade sul sistema operativo x32 bit.

...

Non ho catturato questo bug appositamente, ma ho notato un comportamento simile su 32-bit. È l'errore che si verifica se compilate un'espressione che non avete finito, come un punto e virgola.
 
Im_hungry:
Certo che c'è una storia, ma non tutti i vermi hanno una storia diffusa!

1. Non parleremo di tutto, solo di questo, il server dello sviluppatore - access.metatrader5.com:443 (beh, non ho incontrato nessuno con una storia migliore in MT5 al momento).

Prendiamo la mia sceneggiatura, non è molto buona, ma tuttavia non è finita. Eseguiamolo su TF "1 settimana" e il numero di barre 930.

Otteniamo il seguente risultato

2011.02.22 11:38:50     -   1:1993.05.09 00:00 open = 1.2368, high = 1.2368, low = 1.2084, close = 1.219, volume = 252, spread = 50
2011.02.22 11:38:50     -   0:1993.05.02 00:00 open = 1.2334, high = 1.2466, low = 1.2267, close = 1.2332, volume = 0, spread = 0
2011.02.22 11:38:50     -   Скопировано баров: 930

A quanto pare, gli spread sulle barre settimanali sono dal 1993.05.02 e la storia delle barre è ancora più profonda. Ma questi dati potrebbero non essere così profondi se l'Euro esiste ufficialmente dal 1999 (anche se, Dio sia con lui, è una questione diversa).

2. ora cerchiamo di specificare la profondità delle informazioni di spread sui grafici giornalieri.

Prendiamo come base il fatto che ci sono 5 giorni di trading in una settimana e cerchiamo di trovare l'inizio della storia dei dati di spread sui grafici giornalieri (dirò dall'inizio che il numero approssimativo è 4630).

2011.02.22 11:56:06     -   2:1993.05.13 00:00 open = 1.2148, high = 1.2158, low = 1.2084, close = 1.2099, volume = 100, spread = 50
2011.02.22 11:56:06     -   1:1993.05.12 00:00 open = 1.2138, high = 1.2171, low = 1.2105, close = 1.2152, volume = 0, spread = 0
2011.02.22 11:56:06     -   0:1993.05.11 00:00 open = 1.2167, high = 1.2202, low = 1.2121, close = 1.2141, volume = 0, spread = 0
2011.02.22 11:56:06     -   Скопировано баров: 4630

Così possiamo vedere che la storia dello spread sulle barre giornaliere inizia dal 1993.05.13.

PS

Penso che un ulteriore smistamento per analogia (la data più antica sul più piccolo lasso di tempo come ho capito e sarà quel posto che stiamo cercando)...

Farò solo notare che si diffonde su:

H12 disponibile dal 1993.05.13 (ma le barre ci sono come ho capito quotidianamente) - la profondità è circa 7790 barre

H6 sono disponibili dal 1993.05.13 (barre giornaliere) - la profondità è di circa 14100 barre

 
sergey1294:
Controlla questa cartella (Username\AppData\Roaming\MetaQuotes\Terminal\72CEBD0F7A5518983A10360D0E46A5B6\MQL5) forse il tuo EA compilerà lì

Ho controllato, ovviamente, è tutto vuoto. E perché dovrebbe esserlo, ho gli esperti in ...

Ecco dove appaiono le loro compilation.

Oggi l'ho controllato sul sistema operativo x32 al lavoro. Prima dell'aggiornamento andava bene, ho aggiornato il terminale e subito lo stesso problema!

 
 double op, sp;
     
     if ( ObjectGetDouble ( 0,"Open", OBJPROP_PRICE,0,op) &&  ObjectGetDouble ( 0,"Stop", OBJPROP_PRICE,0,sp ) ){
     
        if ( is40x_b0[0] > 0 && Tick.bid > op && Tick.bid < sp ){ <--------------- Дает предупреждение possible use of uninitialized variable 'sp'
         Sell(); 
        }
        
        if ( is40x_b1[0] > 0 && Tick.ask < op && Tick.ask > sp ){
         Buy(); 
        }

     }
 
Academic:


deve essere così
 double op=0, sp=0;
 
sergey1294:
Deve essere così.
Perché?
 
Academic:
Perché?

Non c'è davvero nulla di sbagliato in questo.

Le variabili sono azzerate durante l'inizializzazione.

Qui potete controllare.

int i;

printf("i=%d",i);

 
bobsley:

Non c'è davvero nulla di sbagliato in questo.

Le variabili sono azzerate durante l'inizializzazione.

Qui potete controllare.

int i;

printf("i=%d",i);

Questo avvertimento non dovrebbe essere dato, perché un riferimento è passato alla funzione ObjectGetDouble e l'istruzione if controlla la verità restituita da entrambe le chiamate, e quindi solo se entrambe le funzioni restituiscono true allora queste variabili sono gestite, il che significa che entrambe queste variabili non possono essere impostate al valore corretto.

Документация по MQL5: Графические объекты / ObjectGetDouble
Документация по MQL5: Графические объекты / ObjectGetDouble
  • www.mql5.com
Графические объекты / ObjectGetDouble - Документация по MQL5