Errori, bug, domande - pagina 1623

 
Dmitri Custurov:
Grazie mille per la soluzione fornita. Tutto funziona.
Fantastico. Quindi la libreria e il caso d'uso di esempio che sto postando in KodoBase.
 
-Aleks-:
Sarebbe molto più veloce leggere l'intero file array in memoria, e poi lavorarci.
Non credo che l'ottimizzatore dovrà aprire-leggere-chiudere il file decine di migliaia di volte.
 
Aliaksandr Yemialyanau:

Come faccio a collegare un file array al mio EA?

Per prima cosa, lo script scrive un array:

Collego il file nell'EA:

Durante la compilazione, errori:

'??????????????????????????t????...' - l'identificatore è troppo lungo mas.dat 1 1

'' - simbolo sconosciuto mas.dat 1 3015

Qual è il file mas, che tipo di file? A giudicare da questi errori, è solo un flusso di byte, giusto?
 

Gravi bug con le variabili statiche. Considerate questo codice:

class A  { public:
            int m;
            A() { Alert("A");  m=1; }
         };

class B  { public:
            B() { Alert("B");  static A a;  Alert("a.m==",a.m);  Alert("&a==",&a);}
         };
B b;

void OnStart()
{
};

Quando lo si esegue, si ottiene il seguente ordine di avvisi:

B
a.m==0
&a==0
A

Cioè, la variabile statica non è stata ancora inizializzata nel momento in cui si accede ad essa. Anche il puntatore è nullo. È stato appena saltato e si può tranquillamente andare avanti.

O inizializzi la variabile e vai avanti o interrompi la compilazione con un errore.

Ma quando si verifica la ricorsione di classi referenziate reciprocamente, la compilazione dovrebbe essere interrotta.

 
Aliaksandr Yemialyanau:

Come faccio a collegare un file array al mio EA?

Per prima cosa, lo script scrive un array:

Collego il file nell'EA:

Durante la compilazione, errori:

'??????????????????????????t????...' - l'identificatore è troppo lungo mas.dat 1 1

'' - simbolo sconosciuto mas.dat 1 3015

Il tuo script dovrebbe generare un file mas.mqh, che conterrà un array di uchar-type contenente i byte dei tuoi dati. Per esempio, se il file è di tre byte, il contenuto del file mas.mqh dovrebbe essere il seguente:

uchar mass[3] = {25, 127, 89};

La massa dell'array generato è quello che dovreste usare nel vostro programma.

 
Aliaksandr Yemialyanau:
Non credo che l'ottimizzatore dovrà aprire-leggere-chiudere il file decine di migliaia di volte.
Oh, quindi vuoi compilare con un array?
 
Non è necessario leggere un file dal disco decine di migliaia di volte, è a questo che serve la cache del disco, anche se non so se viene usata in questo caso particolare, ma si dovrebbe controllare e misurare prima di inventare stampelle.
 
Se interrompo una singola corsa in MT5, solo il grafico della variazione del saldo è visibile. Ma gli scambi e gli ordini non sono disponibili.
L'uso della modalità di visualizzazione non è sempre adatto a causa dei possibili calcoli aggiuntivi lenti di MQLInfoInteger(MQL_VISUAL_MODE).
È possibile aggiungere la disponibilità di tutte le informazioni durante il backtest (senza visualizzazione), come è in MT4?
 
In modalità debug sui dati storici, MQLInfoInteger(MQL_VISUAL_MODE) restituisce sempre true.
 
fxsaber:
In modalità debug su dati storici, MQLInfoInteger(MQL_VISUAL_MODE) restituisce sempre true.
Cosa dovrebbe restituire?