Errori, bug, domande - pagina 2012

 
A100:

Un altro bug è che la versione a 32 bit (la mia è quella esatta) non ha errori di esecuzione. puntatore non valido - solo se la classe è aumentata con un membro, per esempio int i

Devi aver testato su MT4, ma la build è più bassa anche lì.

 
Kirill Belousov:

Bug.

L'errore 4200 non viene generato quando si crea un oggetto duplicato sul grafico NON CORRENTE (che dà su quello corrente - [vedi "CURRENT CHART" nel log]),

così come ha scoperto che trovare un oggetto nel GRAFICO RECENTE richiede fino a 500 volte più tempo che trovare quello attuale.

а :) perché si scopre che non sono l'unico ad avere questo

L'oggetto non viene creato immediatamente alla chiamata della funzione. Un comando asincrono viene inviato al grafico. Per il nostro grafico abbiamo l'opportunità di eseguire un controllo preliminare. Per il grafico di qualcun altro non c'è questa possibilità - o meglio, c'è, ma è molto costoso.

Pertanto, il codice di ritorno "nessun errore" indica che questo grafico molto alieno è stato trovato e il comando di creazione dell'oggetto è stato messo con successo nella sua coda di esecuzione.

 
fxsaber:

Devi averlo testato su MT4, ma la build è più bassa anche lì.

MT5\1653\32\Win10 - il mio codice raggiunge la linea //Risultato: falso

Se avete anche 32-bit e un puntatore non valido - allora è un errore casuale

ServiceDesk scrive che: La funzione f è vuota e la chiamata viene eliminata dall'ottimizzatore, così come la chiamata dell'operatore di copia.

Ma se

        void f() { Print( __FUNCTION__ ); }

poi Risultato:

2017.09.26 14:03:55.853 Demo (GBPUSD,M15) A::f
2017.09.26 14:03:55.853 Demo (GBPUSD,M15) false
essenzialmente nessun cambiamento

 
A100:

Se avete anche 32 bit - allora qualche errore casuale a tutti

No, stavo eseguendo Win7x64.

ServiceDesk dice che: La funzione f è vuota e la chiamata viene eliminata dall'ottimizzatore, proprio come la chiamata all'operatore di copia del passo 1.

Ma se

allora non cambia nulla

Ho incontrato dove gli SD rispondono rapidamente senza controllare. E per il 90% delle applicazioni questo è probabilmente corretto, poiché la maggior parte delle applicazioni non sono probabilmente dovute a bug, ma all'ignoranza. Per favore, date un'occhiata più da vicino - funziona.

 

Un bug del sito con dei link.

Se un post del forum è stato spostato da un moderatore in un altro thread, allora nella ricerca del profilo "Tutti i post" questo post è collegato alla vecchia posizione. Di conseguenza, non si può navigare verso di esso.

 
A100:

MT5\1653\32\Win10 - arrivo alla linea //Risultato: falso

Se avete anche 32-bit e un puntatore non valido - allora è un errore casuale.

ServiceDesk scrive che: La funzione f è vuota e la chiamata viene eliminata dall'ottimizzatore, così come la chiamata dell'operatore di copia.

Ma se

poi Risultato:

2017.09.26 14:03:55.853 Demo (GBPUSD,M15) A::f
2017.09.26 14:03:55.853 Demo (GBPUSD,M15) false
essenzialmente nessun cambiamento

Aggiungo che la funzione f non indirizza i campi dell'oggetto, quindi un puntatore all'oggetto (questo) non è necessario per la funzione f.
L'ottimizzatore rimuove la dereferenziazione non necessaria dell'handle (ricordate, in MQL l'handle è un puntatore) al puntatore dell'oggetto poiché esso (il puntatore) non viene utilizzato all'interno di f

 
Ilyas:

Lasciatemi aggiungere, la funzione f non contiene l'indirizzamento ai campi dell'oggetto, quindi non ha bisogno del puntatore all'oggetto (questo) per la funzione f.
L'ottimizzatore rimuove la dereferenziazione non necessaria dell'handle (ricordiamo che in MQL il puntatore è un handle) al puntatore dell'oggetto, poiché esso (il puntatore) non viene utilizzato all'interno di f

Chiaramente, lavorando con f come con la statica. Ma come spiegare che uno ha l'esecuzione e l'altro è interrotto?

 
In effetti, almeno questo sarebbe conveniente.
input string Value = _MarketWatch; // Выпадающий список (а-ля enum) символов из Обзора рынка

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

Elenco di simboli ENUM come INPUT

Martin Nohejl, 2017.09.26 13:01

Ciao, ho intenzione di fare quanto segue:

Voglio avere un simbolo come parametro di input, quindi voglio una variabile di input (enum) da cui sceglierò il simbolo giusto, come questo:

L'ho fatto con questo codice:

enum ENUM_SYMBOL
   { 
    EURUSD=0, 
    GPBUSD=1, 
    USDCHF=2
   };

Questo funziona perfettamente per me. Ma vorrei riempire dinamicamente l'enum con l'intera lista di simboli (SymbolsTotal(0);).

In qualche modo probabilmente per codice:

int a = SymbolsTotal(0);
for(int i=0; i!=a;i++){
....
}
 
fxsaber:

Chiaramente, lavorando con f come con la statica. Ma come si spiega che uno viene eseguito e l'altro viene interrotto?

Molto probabilmente, si avvia il debug (F5) e A100 compila (F7) prima e poi i grafici.

Quando si compila per il debug, l'ottimizzatore rimuove solo il codice esplicitamente inutilizzato, tutte le altre ottimizzazioni non vengono eseguite.
 
Ilyas:
Molto probabilmente si avvia il debug (F5) e A100 compila prima (F7) e poi lo lancia sul grafico.

Quando si compila per il debug, l'ottimizzatore rimuove solo il codice esplicitamente inutilizzato, tutte le altre ottimizzazioni non vengono eseguite.

Ho preso subito in considerazione questa caratteristica. Ora ho ricontrollato io stesso.

Versione di rilascio:

Test (EURUSD,H1)        invalid pointer access in 'Test.mq5' (9,11)