Errori, bug, domande - pagina 2940

 
Slava Botalov:

Peccato, dovremo passare a un altro. qualche suggerimento?

Tutti i suggerimenti sono su Google. Qualsiasi discussione su terze parti è vietata qui.

 
Vladimir Karputov:

Tutti i suggerimenti sono su Google. Qualsiasi discussione su terze parti è vietata qui.

Capito. GRAZIE per avermi aiutato con la mia domanda

 
x572intraday:

Non è questo il punto. La domanda è: dove può essere utile, specialmente per i commercianti, non per i programmatori? Non ho visto tali numeri nel terminale, né nella scala dei prezzi, né nella finestra di collocamento degli ordini, tutto è uguale ovunque (da qualche parte cinque cifre, da qualche altra parte).

Non è una questione di dove può essere utile. Si tratta di sapere come vengono rappresentati i numeri nei computer, sapendo che non esiste un numero 0,72352 per i computer, ma solo 0,7235200000000001 che può essere stampato a 5 cifre e per questo, c'è una funzione DoubleToString.
 

Impossibile copiare i dati:

MqlRates mql_rates[];
bar_kol = Bars("EURUSD", _Period);
copy_rates = CopyRates("EURUSD", _Period, bar_kol, 100, mql_rates);

bar_kol diventa 6105 e copy_rates -1 (errore) quando si cerca di copiare i dati da 6105 bar a +100 bar.

Il registro mostra quanto segue:

EURUSD: storia sincronizzata dal 2007.01.02 al 2020.06.30

EURUSD,H1: la cache della storia è allocata per 74955 barre e contiene 6105 barre dal 2008.01.02 10:00 al 2008.12.31 17:00

EURUSD,H1: la storia inizia dal 2008.01.02 10:00

La cronologia è in cache a 74955 barre, ma il 2008 contiene le stesse 6105 barre. Cioè massimo copie bar per un anno. Non è possibile copiare più di 6105 barre. Le barre massime nella finestra sono 100000, tutta la storia è visibile nel grafico, si può scorrere, tutte le barre sono presenti e tutto viene caricato. Letteralmente, l'array mql_rates non viene copiato.

 

Debugging non dati reali. Sospeso su una linea, premendo F11 o F10 ripetutamente non fa sì che il debug continui. il puntatore rimane su una linea e fa solo lampeggiare lo schermo.

Costruire 2715. Win10, 20H2 build 19042.746.


questo è lo stato della memoria

 
Ilyas:

Ditemi, qual è il potenziale pericolo di ZeroMemory che si verifichi un errore in questa situazione?

struct A
{
private:
  int i;
};

void OnStart()
{
  A a[1];
  
  ZeroMemory(a); // not allowed for objects with protected members or inheritance
}
 
Aleksey Mavrin:

Debugging non dati reali. Sospeso su una linea, premendo F11 o F10 ripetutamente non fa sì che il debug continui. il puntatore rimane su una linea e fa solo lampeggiare lo schermo.

Costruire 2715. Win10, 20H2 build 19042.746.


questo è lo stato della memoria

Aggiornare all'ultima beta 2747 per favore.

Stiamo cambiando molte cose nel debugger.

 
fxsaber:

Ditemi, qual è il potenziale pericolo di ZeroMemory, che si verifichi un errore in questa situazione?

privato/protetto e const (nella maggior parte) sono puramente per i programmatori, il compilatore aiuta solo ad aderire alle restrizioni imposte al codice

Un esempio classico:
Si usa la libreria di qualcun altro, sotto il cofano c'è codice pesante con collegamenti che modifiche non autorizzate causerebbero un fallimento, così il creatore della libreria nasconde parte dell'oggetto in privato per proibire modifiche non pianificate.

 
Ilyas:

private/protette e const (per la maggior parte) sono solo per i programmatori, il compilatore aiuta solo ad aderire alle restrizioni imposte al codice.

Un esempio classico:
Si usa la libreria di qualcun altro, sotto il cofano c'è codice pesante con collegamenti che modifiche non autorizzate causerebbero un fallimento, così il creatore della libreria nasconde parte dell'oggetto in privato per proibire modifiche non pianificate.

Capito, grazie per la spiegazione dettagliata!

 

Sembra che il campo real_volume nella struttura MqlRates, sebbene abbia un tipo lungo, non sia in grado di memorizzare valori nell'intervallo di tutti i valori lunghi (secondo la documentazione - 0x7FFFFFFFFFFFFFFFFFFF). Per esempio, 0x4000000000000000A8 sarà scritto nel campo 0xA8. Sto parlando di personaggi personalizzati.

L'intervallo effettivo dei valori validi è specificato da qualche parte? Fondamentalmente, non c'è motivo per cui non dovrebbe funzionare come un normale lungo - sembra un bug.

PS. per tick_volume probabilmente lo stesso problema