Errori, bug, domande - pagina 2045
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
Ma ho impostato la dimensione sbagliata dell'array lì, forse l'ha influenzato in qualche modo (anche se non dovrebbe influenzarlo affatto).
Prova questo con dimensione = 3
Scoperta la causa della discrepanza. Con OPTIMIZE=0 c'è un errore, ma non con OPTIMIZE=1. Di solito uso solo OPTIMIZE=0
Se trovo una spiegazione logica (non contraddittoria) per il risultato, non vedo il bug. Non credo che sia accettabile provare un bug se il risultato non corrisponde al C++. È in C++ che qualcuno l'ha pensato e l'ha fatto. Ma forse non l'hanno pensato e quindi non l'hanno fatto. Ecco perché è meglio non fare riferimento a qualcosa là fuori, ma affidarsi al proprio concetto interiore di ciò che deve essere. Ed è auspicabile che questo "proprio" sia davvero il proprio. Non il risultato dell'impercettibile imposizione di stereotipi "come dovrebbe essere" man mano che si acquisisce esperienza di programmazione.
Se non avete la vostra spiegazione, significa che non c'è nessun errore. E se questa spiegazione appare un anno dopo ed è piuttosto convincente, tutti dovranno rifare tutto? In C++ hanno già pensato cento volte perché si fa così e non così. E la spiegazione è necessaria se qualcosa è impostato diversamente in MQL che in C++ e non viceversa.
Ma non una funzione.
Allora le istanze di classe statiche dovrebbero essere vietate - perché sono inizializzate da una funzione costruttrice
E qui c'è di più sull'argomento dell'inizializzazione delle variabili. Se seguite ciò che è stato detto nella documentazione, allora non potete neanche fare riferimento ad altre variabili globali/statiche. Poiché non è un'espressione costante:
Tuttavia, per ora funziona. E suppongo che molte persone abbiano sempre usato questi costrutti senza rendersene conto. Ma si scopre che gli sviluppatori possono disabilitarlo in qualsiasi momento. E, come nel caso dell'inizializzazione delle funzioni, questi codici saranno ancora compilati con successo, ma non funzioneranno correttamente. Tutto sommato, l'intero MQL è una bomba a orologeria.
Ed ecco un'altra cosa sull'inizializzazione delle variabili. Se seguite ciò che è stato detto nella documentazione, allora non potete nemmeno fare riferimento ad altre variabili globali/statiche. Perché non è un'espressione costante:
è inizializzato da una funzione costruttore - vietato!
Questo se si riassumono logicamente gli ultimi post
Ho scoperto la ragione della discrepanza. Con OPTIMIZE=0 c'è un errore, ma non con OPTIMIZE=1. Io uso sempre e solo OPTIMIZE=0.
Nel terminale a 32 bit si verifica un errore in qualsiasi OPTIMIZE
è inizializzato da una funzione costruttore - vietato!
Questo se si riassumono logicamente gli ultimi post
Beh, la persona si è espressa male lì. Naturalmente, stiamo parlando di un valore di inizializzazione, non di una funzione di inizializzazione.
E che diavolo - divieti. Non causano problemi da soli. Ma quando questo divieto non è controllato dal compilatore in alcun modo, ma genera un algoritmo che aggira le regole del linguaggio, non si adatta affatto. Ora dovrete scavare in tutto il codice alla ricerca di queste cose ed essere costantemente in guardia. Beh, fanculo questo tipo di programmazione, preferisco rimanere sulla vecchia build.
Capisco, mi scuso allora, non me ne sono accorto subito. Sono sorpreso, ovviamente, di come siano riusciti a cambiarlo in silenzio e non l'abbiano detto a nessuno. Quello che non capisco è perché il compilatore non reagisce all'esecuzione di un'operazione non valida. Cioè, il bug è presente in ogni caso.
E qui c'è di più sull'argomento dell'inizializzazione delle variabili. Se seguite ciò che è stato detto nella documentazione, allora non potete nemmeno fare riferimento ad altre variabili globali/statiche. Poiché non è un'espressione costante:
Tuttavia, per ora funziona. E suppongo che molte persone abbiano sempre usato questi costrutti senza rendersene conto. Ma si scopre che gli sviluppatori possono disabilitarlo in qualsiasi momento. E, come nel caso dell'inizializzazione delle funzioni, questi codici saranno ancora compilati con successo, ma non funzioneranno correttamente. Tutto sommato, l'intero MQL è una miniera che lavora al rallentatore.
Bene... non c'è alcuna discrepanza con la descrizione nella documentazione in questo esempio... Guardate bene la citazione della documentazione
o da un' espressionecostante
Questa inizializzazione è possibile. Perché la variabile 'a' è inizializzata da una costante e la variabile 'b' è inizializzata da un'espressione costante.
Allora dovete proibire le istanze statiche delle classi - perché sono inizializzate dalla funzione costruttore
Prestare attenzione a
Forum sul trading, sistemi di trading automatico e test di strategie di trading
Bug, bug, domande
Alexey Viktorov, 2017.10.18 09:19
Perché pensa di essere cambiato, perché è inaccettabile? Si prega di utilizzare a propria discrezione. Il problema è che quando una variabile statica viene inizializzata da una funzione, l'inizializzazione viene "messa in pausa" e quella funzione viene eseguita. E nell'esempio precedente, c'è ancora una variabile statica in quella funzione che non è stata ancora inizializzata. Quindi, una variabile inizializzata da una funzione prende un valore diverso.