Errori, bug, domande - pagina 1667

 
Ho trovato un vecchio numero di telefono nel mio profilo che è scomparso da tempo, volevo cambiarlo, ma ha bisogno di una conferma via sms al vecchio numero, cosa devo fare?
 
BlackTomcat:
Certo, non ci capisco molto, ma penso, per qualche motivo, che le copie dell'indicatore create da diversi "maestri", anche con gli stessi parametri e applicate a uno stesso grafico, avranno maniglie diverse. In linea di principio, non sanno della copia già esistente dell'indicatore, e non dovrebbero saperlo. Quando si disegna, si sovrappongono semplicemente l'uno all'altro.
Potrei sbagliarmi. Ma la logica suggerisce che deve essere così, come scritto nel paragrafo precedente.

Non sono certo uno sviluppatore di MQ, ma per quanto mi è stato spiegato questo processo, Five ha fatto un efficace caching degli indici, quindi ci sarà sempre un solo "stesso" rientro, e diversi "maestri" avranno un collegamento ad esso. Forse le maniglie saranno diverse - non ho controllato - ma all'interno sarà la stessa entità. Nessuno ha detto nulla sul fatto che "dovrebbero sapere della copia che già esiste" - per favore non speculare. Assolutamente, nessuno tranne l'"host" conosce i suoi indicatori, e per un indicatore viene mantenuto un conteggio di riferimento da diversi "host", ma non conosce gli host.

Come dimostra la pratica, la logica varia da persona a persona. Per esempio, molto spesso la mia logica non coincide con quella di MQ, ma qui sto solo dicendo quello che ho sentito da loro.

 
Stanislav Korotky:

Non sono certo uno sviluppatore di MQ, ma per quanto mi è stato spiegato questo processo, Five ha fatto un efficace caching degli indici, quindi ci sarà sempre un solo "stesso" rientro, e diversi "maestri" avranno un collegamento ad esso. Forse le maniglie saranno diverse - non ho controllato - ma all'interno sarà la stessa entità. Nessuno ha detto nulla sul fatto che "dovrebbero sapere della copia che già esiste" - per favore non speculare. Assolutamente, nessuno tranne l'"host" conosce i suoi indicatori, e per un indicatore viene mantenuto un contatore di riferimento ad esso da diversi "host", ma non conosce gli host.

Come dimostra la pratica, la logica varia da persona a persona. Per esempio, molto spesso la mia logica non coincide con quella di MQ, ma qui sto solo dicendo quello che ho sentito da loro.

Infatti, quello che avete scritto è scritto direttamente nella Documentazione:

Tutte le funzioni come iMA, iAC, iMACD, iIchimoku, ecc., creano una copia dell'indicatore tecnico appropriato nella cache globale del terminale client. Se esiste già una copia dell'indicatore con questi parametri, non viene creata una nuova copia, ma viene aumentato il contatore dei riferimenti a questa copia.
Solo mi chiedo se "la cache globale dei terminali client" include ad esempio il Tester? Perché posso eseguire uno stesso Expert Advisor con gli stessi indicatori nel terminale (su un conto) e nello Strategy Tester (sulla cronologia) allo stesso tempo, e non sono sicuro che i loro buffer di calcolo siano identici. Anche se, se si calcola la profondità della storia memorizzata nel terminale client, possono farlo.
 
A100:

Sono riuscito a fare uno script di prova vicino al programma sorgente con un errore durante l'esecuzione

Risultato: chiamata di puntatore a funzione non valida in 'Script2.mq5'.

costruire 1405. L'errore stesso rimane - spostato in un'altra parte del programma - me ne occuperò più tardi

Ma ne sono apparsi di nuovi che prima non c'erano

typedef int (*fn)();
class A {
public:
        A() { a = &this; ::ArrayResize( f, 1 ); f[ 0 ] = f0; }
        virtual int g0() { return 0; }
        static  int f0() { return a.g0(); }
        static A* a;
        fn f[];
};
A* A::a;
void OnStart() { A b; }
Risultato: file EX5 non valido (8)
 
Come faccio a rendere visibili gli elementi dell'array Shift+F9 nel debug?
 
fxsaber:
Come posso rendere visibili gli elementi dell'array Shift+F9 nel debug?
Mostrare gli elementi dell'array non è ancora supportato
 
Renat Fatkhullin:

Infatti, il 99% delle volte, chiamare IndicatorRelease è un errore logico del programmatore.

La creazione di indicatori è una delle operazioni più costose che avviano meccanismi molto profondi del loro calcolo. Cercare di chiudere la maniglia di un indicatore è anche un'operazione molto costosa, se si pensa ai reali processi sottostanti alla sua implementazione. La frequente creazione e chiusura di indicatori mostra che lo sviluppatore non capisce affatto l'essenza delle operazioni.

È molto facile da capire.

Ho capito bene che quando si usa iCustom invece di IndicatorCreate, l'utente sposta la responsabilità di IndicatorRelease alla soluzione universale (quindi non ottimale) degli sviluppatori?

In cui gli indicatori creati vengono memorizzati per un certo tempo, mentre vengono chiamati con una certa frequenza. Se non vengono chiamati per un certo tempo, allora c'è un IndicatorRelease forzato. Giusto?

Cioè, iCustom dovrebbe essere usato in modo ottimale, tenendo conto della media aurea tra la complessità dell'implementazione e le prestazioni. Ma se si desidera la massima velocità, è meglio cercare di fare tutto attraverso IndicatorCreate, creando il proprio algoritmo più veloce (non universale) di indicatori, conoscendo le specifiche del proprio uso di indicatori.

Ho capito bene?

 
fxsaber:

Ho capito bene, che quando si usa iCustom invece di IndicatorCreate, l'utente sposta la responsabilità per IndicatorRelease alla soluzione universale (quindi, non ottimale) degli sviluppatori?

In cui gli indicatori creati vengono memorizzati per un certo tempo, mentre vengono chiamati con una certa frequenza. Se non vengono chiamati per un certo tempo, allora c'è un IndicatorRelease forzato. Giusto?

Cioè, iCustom dovrebbe essere usato in modo ottimale, tenendo conto della media aurea tra la complessità dell'implementazione e le prestazioni. Ma se si desidera la massima velocità, è meglio cercare di fare tutto attraverso IndicatorCreate, creando il proprio algoritmo più veloce (non universale) di indicatori, conoscendo le peculiarità del loro utilizzo.

Ho capito bene?

No, non lo sei.

Le due funzioni sono assolutamente uguali. Entrambe le funzioni restituiscono il manico dell'indicatore

 
Slawa:

No, sbagliato.

Entrambe le funzioni sono assolutamente uguali. Entrambe le funzioni restituiscono il manico dell'indicatore

IndicatorRelease dovrebbe essere fatto dopo iCustom?

Fondamentalmente si scopre che è abbastanza possibile eseguire EA MT4 in MT5. Per coloro che non usano altri indicatori internamente - molto facile. Chi li usa - crea un analogo del deposito MT4-iCustom. La questione dell'impreparazione dei dati è anche possibile.

Scrivi un tale adattatore e qualsiasi indicatore MT4 funzionerà con successo in MT5. Ma in questo caso Nikolay Kositsyn perderà il suo lavoro... No, meglio di no.

 
fxsaber:

IndicatorRelease dovrebbe essere fatto dopo iCustom?

Fondamentalmente si scopre che è abbastanza possibile eseguire EA MT4 in MT5. Per coloro che non usano altri indicatori internamente - molto facile. Chi li usa - crea un analogo del deposito MT4-iCustom. La questione dell'impreparazione dei dati è anche possibile.

Scrivi un tale adattatore e qualsiasi indicatore MT4 funzionerà con successo in MT5. Ma in questo caso Nikolay Kositsyn perderà il suo lavoro... No, preferisco di no.

Ricordo che la documentazione dice che il modo più corretto per inizializzare (creare) le maniglie degli indicatori nella funzione OnInit, ed eseguire IndicatorRelease nella funzione OnDeinit. Questo significa che per tutto il tempo in cui l'Expert Advisor è in esecuzione, le maniglie degli indicatori rimangono rilevanti.