Errori, bug, domande - pagina 2986

 
Andrey Dik:

e, di conseguenza, sorge un'altra domanda: dovrei controllare la struttura MqlTick per i valori corretti dopo averla riempita con la funzione SymbolInfoTick ()? - Perché i valori di Ask e Bid possono essere qualsiasi, anche negativi. O è sufficiente ottenere true da SymbolInfoTick ()?

Forum sul trading, sistemi di trading automatico e test di strategia

Nuova build 2755 di MetaTrader 5: miglioramenti nella finestra delle quotazioni e nel debugger

fxsaber, 2021.02.15 03:02

Prezzo zero COPY_TICKS_INFO-tic è un errore?

void OnStart()
{
  MqlTick Ticks[];
  
  CopyTicksRange("GBPUSD", Ticks, COPY_TICKS_INFO, D'2020.10.02 23:54:54' * 1000, D'2020.10.05 00:07:01' * 1000);
    
  ArrayPrint(Ticks);
  Print(AccountInfoString(ACCOUNT_SERVER));
}


Risultato.

                         [time]   [bid]   [ask] [last] [volume]    [time_msc] [flags] [volume_real]
        [0] 2020.10.02 23:54:54 1.29378 1.29385 0.0000        0 1601682894091       4       0.00000
        [1] 2020.10.02 23:54:54 1.29377 1.29383 0.0000        0 1601682894404     134       0.00000
        [2] 2020.10.02 23:54:54 1.29375 1.29379 0.0000        0 1601682894471     134       0.00000
        [3] 2020.10.02 23:54:55 1.29375 1.29381 0.0000        0 1601682895248       4       0.00000
        [4] 2020.10.05 00:06:14 0.00000 1.29313 0.0000        0 1601856374091       6       0.00000
        [5] 2020.10.05 00:07:00 1.29271 1.29332 0.0000        0 1601856420497     134       0.00000
        [6] 2020.10.05 00:07:00 1.29271 1.29331 0.0000        0 1601856420497       4       0.00000
        RannForex-Server
 
inwinterborn:

Potete dirmi perché i punti di interruzione si spostano alla funzione successiva durante il debug, sia sulla storia che online (Ctrl+F5, F5)?

L'ho controllato diverse volte. Tutte le spiegazioni sono negli screenshot allegati.

È un bug?


Spiegazione:

1. Ho impostato manualmente 2 punti di rottura: 1) Serie.mqh linea 81; 2) TimeSeries.mqh linea 48
2. Passo al file ExpertMACD.mq5
3. Avviare il debug sui dati storici o reali
4. Ottengo l'arresto del debugger nel file Series.mqh alla linea 94, che non ha alcun breakpoint. La linea è l'inizio della prossima funzione dopo il mio breakpoint manuale, che dalla linea 81 è scomparso o si è spostato.
5. Controllo il mio secondo breakpoint manuale in TimeSeries.mqh, e vedo che anch'esso si è spostato dalla linea 48 alla linea 63, di nuovo la funzione successiva al mio precedente breakpoint.


Potete dirmi per favore quale potrebbe essere il problema?

 
inwinterborn:


Spiegazione:

1. Ho impostato manualmente 2 punti di rottura: 1) Serie.mqh linea 81; 2) TimeSeries.mqh linea 48
2. Passo al file ExpertMACD.mq5
3. Avviare il debug sui dati storici o reali
4. Ottengo l'arresto del debugger nel file Series.mqh alla linea 94, che non ha alcun breakpoint. La linea è l'inizio della prossima funzione dopo il mio breakpoint manuale, che dalla linea 81 è scomparso o si è spostato.
5. Controllo il mio secondo breakpoint manuale in TimeSeries.mqh, e vedo che anch'esso si è spostato dalla linea 48 alla linea 63, di nuovo la funzione successiva al mio precedente breakpoint.


Potete dirmi per favore quale potrebbe essere il problema?

Controllate le impostazioni nell'editor - disattivate l'ottimizzazione:

 
Vladimir Karputov:

Controlla le impostazioni nell'editor - disabilita l'ottimizzazione:

Grazie per la risposta, ma non aiuta.

L'opzione era effettivamente abilitata.

Disabilitato. Ripetuto. Il risultato è lo stesso descritto sopra.

Terminale ed editorchiusi con una nuova impostazione.

L'ho riaperto di nuovo. Ripetuto. Il risultato è lo stesso.

Cos'altro potrebbe essere il problema?


 
inwinterborn:

Grazie per la risposta, ma non aiuta.

L'opzione era effettivamente abilitata.

Disattivato. Ripetuto. Il risultato è lo stesso descritto sopra.

Terminale ed editorchiusi con una nuova impostazione.

L'ho riaperto di nuovo. Ripetuto. Il risultato è lo stesso.

Cos'altro potrebbe essere il problema?


Prova la versione 2833 - forse qualcosa è cambiato...

 
Vladimir Karputov:

Prova la versione 2833 - forse qualcosa è cambiato ...

C'è stato un aggiornamento automatico al 2834.

Il risultato è invariato. I punti di rottura si spostano.

 
fxsaber:

Il tuo codice non controlla il valore di ritorno della funzione, quindi è impossibile giudicare la correttezza del contenuto della struttura Ticks.

E se non ci sono errori quando si chiamaCopyTicksRange, allora dovremmo considerare i valori zero della struttura come normali, altrimenti di chi possiamo fidarci? Quali prezzi possono essere considerati normali in assoluto (intendiamo anche non i prezzi 0.0, ma qualsiasi prezzo)? Chi lamentarsi in caso di prezzi sbagliati, lo Sportlotto? Il broker incolperà MQ e MQ incolperà il broker. Il problema è più serio di quanto possa sembrare.

 
Andrey Dik:

Il tuo codice non controlla il valore di ritorno della funzione, quindi è impossibile giudicare la correttezza del contenuto della struttura Ticks.

E se non ci sono errori quando si chiamaCopyTicksRange, allora dovremmo considerare i valori zero della struttura come normali, altrimenti di chi possiamo fidarci? Quali prezzi possono essere considerati normali in assoluto (intendiamo anche non i prezzi 0.0, ma qualsiasi prezzo)? Chi lamentarsi in caso di prezzi sbagliati, lo Sportlotto? Il broker incolperà MQ e MQ incolperà il broker. Il problema è più serio di quanto possa sembrare.

Il codice mostra quali possono essere i prezzi. Ho guardato i miei codici. Non fare questi e altri stupidi controlli. Hanno sicuramente fatto più di un milione di scambi in vari posti solo su MT5. La questione è molto lontana dalla pratica.

 
fxsaber:

Il codice mostra quali possono essere i prezzi. Ho guardato i miei codici. Non fare questi e altri stupidi controlli. Hanno sicuramente fatto più di un milione di scambi in vari posti solo su MT5. La questione è molto lontana dalla pratica.

E allora? Questo è il punto, i prezzi possono essere qualsiasi cosa, quindi quali sono quelli giusti secondo te? Non fate questi e altri controlli stupidi, ma fate controlli altrettanto stupidi, ma molto più costosi a valore 0.0?

 
inwinterborn:

Puoi dirmi perché i punti di interruzione si spostano alla funzione successiva durante il debug, sia sulla cronologia che online (Ctrl+F5, F5)?

L'ho controllato diverse volte. Tutte le spiegazioni sono negli screenshot allegati.

È un bug?

Ilpunto di interruzione è spostato - come in CSeries::BufferResize expert non entra mai del tutto.