Errori, bug, domande - pagina 1174

 

Ieri ho cambiato computer al lavoro da Windows XP/32 a Win7/64. Prima di questo ho fatto trading normalmente su MT4 al lavoro, aggiornando i codici dal deposito e tornando al deposito. Ora posso usare il mio mt4 su 7, il mio account proxy è nuovo, anche il login e la password della comunità sono nuovi. Il problema è che non posso sincronizzare i codici con MetaEditor 4. Nel mio profilo ho spuntato"Connect storage".

Oggi ho cambiato la password nella comunità, installato il secondo MT4 in una cartella diversa, aggiunto il proxy, nuovo login e password, il commercio sta andando, vedo tutti i servizi MQ, ma nessuna sincronizzazione con lo stoccaggio, non può connettersi. Si prega di consigliare dove altro potrebbe essere il problema.


 
paladin800:

Ieri ho cambiato computer al lavoro da Windows XP/32 a Win7/64. Prima di questo ho fatto trading normalmente su MT4 al lavoro, aggiornando i codici dal deposito e tornando al deposito. Ora posso usare il mio mt4 su 7, il mio account proxy è nuovo, anche il login e la password della comunità sono nuovi. Il problema è che non posso sincronizzare i codici con MetaEditor 4. Nel mio profilo ho spuntato"Connect storage".

Oggi ho cambiato la password nella comunità, installato il secondo MT4 in una cartella diversa, aggiunto il proxy, nuovo login e password, il commercio sta andando, vedo tutti i servizi MQ, ma nessuna sincronizzazione con lo stoccaggio, non può connettersi. Si prega di consigliare dove altro potrebbe essere il problema.


Reinstallare il mio terminale MT4 con diritti di amministratore ed eseguire il terminale MT4 con diritti di amministratore. MT4 in Vista/8/8.1 in questo modo vede sia il magazzino che la cartella con i vostri codici e salva tutte le impostazioni dei grafici.
 
barabashkakvn:
Reinstallare il terminale MT4 con diritti di amministratore ed eseguire il terminale MT4 con diritti di amministratore. MT4 in Vista/8/8.1 con questo metodo vede sia il deposito che la cartella con i vostri codici e salva tutte le impostazioni dei grafici.
Capisco. Sto lavorando su forex qui tranquillamente al lavoro, admin (si spera) non sa, quindi con i diritti di amministratore non durerà. Il problema non è critico, lavorerò via flash drive. Grazie per il chiarimento.
 
paladin800:
Capisco. Sto lavorando su forex qui di nascosto, l'amministratore (si spera) non lo sa, quindi non sarà in grado di mantenere i diritti di amministratore. Il problema non è critico, lavorerò via flash drive. Grazie per il chiarimento.
Potete anche affittare un VPS. Poi si può accedere attraverso una connessione desktop remoto e nessun problema con i diritti di amministratore.
 
errore di compilazione, build 969
template<typename T>
T plus( T a, T b )      { return ( a + b ); }

template<typename T>
int f( T& array[], int i )
{
        return ( plus( ::ArraySize( array ), i ) );
}

void OnStart()
{
        int a[ 2 ];
        int b = 1;
        Print( f( a, b ));
}

Sorge perché nella nuova costruzione

template<typename T>
void g( T& array[] ) { Print( typename( ::ArraySize( array ))); }
void OnStart()
{
        int a[ 2 ];
        g( a ); //Результат: uint
}
uint ArraySize(...);
в то время как раньше было
 int ArraySize(...);
Chi sto interrompendo?
int ArraySize(...);

Perché cambiarlo se l'aiuto è silenzioso e tali cambiamenti potrebbero influenzare i calcoli?! E nessuno se ne accorgerebbe

 
A100:
Errore di compilazione, build 969Perché nella nuova build e chi è interrotto?

Perché cambiarlo quando l'aiuto è silenzioso e tali cambiamenti potrebbero influenzare i calcoli?! e nessuno se ne accorgerebbe

L'aiuto è sempre un po' in ritardo. naturalmente uint per la dimensione dell'array è più ragionevole, perché la dimensione non può essere comunque negativa // e ulong sarebbe ancora meglio :)
 
Un'altra cosa illogica è che
template<typename T>
void g( T& array[] )
{
        Print( typename( ::ArrayResize( array, 3 )));
}

void OnStart()
{
        int a[ 2 ];
        g( a ); //Результат: int
}

Risulta che ArraySize è stato cambiato, ma ArrayResize no - cambiato? Qual è la differenza fondamentale?

La differenza è questa

Возвращаемое значение

При успешном выполнении функция возвращает количество всех элементов, содержащихся в массиве после изменения размера;
в противном случае возвращает -1 и массив не меняет размеры.

Si scopre che non si può cambiare il tipo di ritorno in ArrayResize (a causa di '-1'). Beh, se non potete cambiare il tipo ArrayResize, perché dovreste cambiare il tipo ArraySize?

 

Questa è la situazione. Ho bisogno di eseguire Expert Advisor su EURNZD per un paio di anni. Ho già cancellato l'intera cronologia del simbolo, l'ho caricato di nuovo e il risultato è lo stesso:

HistoryCenter: 5240 bars imported in 'EURNZD60'

Siamo solo a settembre 2013. Il terminale non permette di riavvolgere la carta. Quando apro il centro storico e clicco su Scarica ottengo il messaggio "Non ci sono nuovi dati per un simbolo EURNZD". Non mi importa se è scritto male, ma come posso ottenere delle citazioni? Davvero il mio broker non ha storia? Non so, non ho mai incontrato problemi con altri simboli.

P.S. Questo è tutto, la domanda è stata rimossa. Dopo aver abbandonato EURNZD e scaricato GBPAUD, improvvisamente questo miracolo della tecnologia ha visto nuovi dati per EURNZD. Chi può trovarsi in una situazione simile - allora non dimenticate di "ballare con il tamburello" e la necessità di stuzzicare persistentemente il terminale in modi diversi. ;-)

P.P.S. Ora la stessa cosa è successa di nuovo a AUDNZD. Ho dovuto stupidamente cliccare su Download un mucchio di volte di seguito finché improvvisamente ha visto i dati.

 
MetaDriver:
L'aiuto è sempre un po' in ritardo. naturalmente uint per la dimensione dell'array è più intelligente, dato che la dimensione non può essere comunque negativa // e ulong sarebbe ancora meglio :)

template<typename T>
void g( T& str ) { Print( typename( ::StringLen( str ))); }
void OnStart()
{
        string str = "ABC";
        g( str ); //Результат: int
}

Anche lalunghezza delle stringhe non può essere negativa, ma ha più senso usare int per indicare lunghezza/dimensione - per una semplice ragione che le funzioni (ricerca, calcolo, ecc.) generalmente restituiscono lunghezza/dimensione, o -1 in caso di fallimento, il che rende la gestione degli errori molto più facile.

 
A100:
Errore di compilazione, build 969
...
Perché cambiarlo quando l'aiuto è silenzioso e tali cambiamenti possono influenzare i calcoli?! E nessuno lo noterà nemmeno

Per quanto riguarda ArraySize, ho sollevato un problema simile su MQL4 l'altro giorno: https://www.mql5.com/ru/forum/152471. Per quanto ho capito, tutto dovrebbe essere lo stesso in MQL5.

Forse, il mio messaggio è stato considerato lì :) Riguardo a questo problema, il Service Desk ha risposto che la ragione era il funzionamento errato dell'ottimizzatore e cambieranno il tipo a uint nelle nuove build. In realtà è uint ora, solo non documentato :) E a proposito, lo cambieranno in uint anche per ArrayResize. Ho consigliato loro di cambiarlo in ulong, altrimenti dovranno tornare su questo problema nel prossimo futuro a causa della mancanza di valori a 32 bit quando si memorizzano grandi volumi.

Per quanto riguarda il valore -1 su errore, non ci dovrebbero essere problemi perché: (int)-1 = (uint)-1 = 0xFFFFFFFFFFFF = UINT_MAX, cioè la rappresentazione in bit è la stessa. Anche se l'operazione di confronto darà un risultato diverso. cioè se fosse così nel codice

if (ArrayResize(...) < 0) ...

diventerà errato.