Errori, bug, domande - pagina 2747
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Buon pomeriggio, il log di MT5 mostra questo messaggio: 2020.05.21 05:49:44.364 Virtual Hosting failed to get list of virtual hosts (www.mql5.com:443 send request failed [12002])
Potete dirmi per favore cosa significa e cosa devo fare?
Grazie!
Il mio debugger si rifiuta di funzionare in uno dei miei progetti. Inoltre, il suo comportamento è difficile da prevedere. A volte si rifiuta semplicemente di inserire i breakpoint. Si rifiuta anche di inserire alcune funzioni. All'inizio ho pensato che la ragione fossero gli aggiornamenti (forse qualcosa è andato storto con il debug). Ma in altri programmi più semplici tutto sembra funzionare. Non l'ho controllato molto, però, perché sto lavorando al mio progetto principale. È abbastanza complesso e comprende 15 moduli solo di mia progettazione (non ho contato il numero di moduli standard). Il modulo principale contiene fino a 2000 linee. Ho pensato che forse è tutta una questione di complessità del progetto... Inoltre, in alcuni posti uso macro per frammenti di codice ripetitivi. Inoltre uso elementi standard di UI, come CAppDialog, CCheckGroup, CComboBox, CButton ecc. che ho riscritto per la funzionalità del mio programma. Forse il debug non funziona a causa loro... Per esempio, il metodo CCheckGroup::itemCheckState(const string item) che ho scritto appositamente non fa debug. Il metodo trova l'elemento della casella di controllo e controlla se è selezionato (il suo stato):
Questo è il tipo di UI che ho finito per ottenere:
Alcuni elementi dell'UI sono temporaneamente classificati. Ed ecco un ramo dove ho descritto come ho scavalcato i metodi Show() e Hide() dell'elemento CAppDialog:https://www.mql5.com/ru/forum/338301 Il compilatore si è lamentato in quel momento e si è verificato un errore critico.
Alla fine il progetto si compila normalmente, il compilatore non genera alcun errore. Ma il debug fallisce e non mostra l'esecuzione di alcuni frammenti di codice, funzioni, metodi e così via.
Per quanto ho capito, ci possono essere diverse ragioni per questo.
Informazioni sulla costruzione e sul sistema:
https://www.mql5.com/ru/forum/1111/page2746#comment_16481481
Nel metodo CCheckGroup::itemCheckState (in cui il debugger non può entrare) ho messo qualcosa come questo:
E ho ricevuto il seguente messaggio:
2020.05.21 13:20:44.229 CCheckGroup::itemCheckState item: 39 state: 32
https://www.mql5.com/ru/forum/1111/page2746#comment_16481481
Senza il debugger che funziona correttamente, il progetto può essere ritardato per molto tempo. Vorrei che gli sviluppatori prestassero attenzione a questo bug molto probabilmente legato al debugger.
È un sacco di testo, non l'ho letto tutto.
Ma se qualcosa funziona nella versione di debug e non funziona nella release, o viceversa, controllate se tutte le variabili e i campi, specialmente nella classe/struttura, sono stati inizializzati.
#define GETCURRENTTICK GetCurrentTick1(Tick)
#define GETCURRENTTICK GetCurrentTick2(Tick, !i)
#define GETCURRENTTICK GetCurrentTick3(Tick)
A proposito delle funzioni di SymbolInfo che sono libere.
forse il metodo è in linea, allora non è un problema del debugger, ma del compilatore per la modalità debug
Esattamente, il progetto si è rivelato traboccante di macro, sia le mie che quelle dei moduli standard. Forse è per questo che il debugger non sempre riesce a far corrispondere i comandi nel file di debug *.ex5 con le linee nel file sorgente *.mq5 e altri moduli...
Le funzioni SymbolInfo sono libere.
quindi è il costo della funzione stessa, non il costo di passare la stringa per valore, non per riferimento!
La tua versione con la cache è una bella soluzione, se l'esecuzione di questa funzione prende una percentuale significativa del tempo di esecuzione dell'EA (cosa che non credo proprio)
Esattamente, il progetto si è rivelato traboccante di macro, sia le mie che quelle dei moduli standard. Forse è per questo che il debugger non sempre riesce a far corrispondere i comandi nel file di debug *.ex5 con le linee nel file sorgente *.mq5 e altri moduli...
è il costo della funzione stessa, non il costo di passare la stringa per valore, non per riferimento!
Questo è quello a cui sono stato portato inizialmente.
Forum sul trading, sistemi di trading automatico e test di strategia
Errori, bug, domande
fxsaber, 2020.05.20 13:24
È meglio avere
Nell'ottimizzatore queste funzioni sono chiamate decine di miliardi di volte.
Inoltre, la tua variante con la cache è una bella soluzione, se l'esecuzione di questa funzione prende una percentuale significativa del tempo di esecuzione di un EA (cosa che non credo proprio)
Ad un certo punto, non solo la parte relativa del tempo impiegato diventa importante, ma anche la parte assoluta.