Errori, bug, domande - pagina 2682
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
Bug MT5 (build 2367) Le priorità di esecuzione delle funzioni template in MQL non corrispondono a quelle in C++ (online: https://onlinegdb.com/B172m1PLL).
Sembra che come parte della correzione del bug, il bug di compilazione sia risolto, ma la priorità di esecuzione delle funzioni template sovraccaricate non è ancora allineata con il comportamento del C++.
Mi sono imbattuto in uno strano problema. È impossibile passare un tipo template con diversi tipi-parametri in una macro, perché il preprocessore non sa che si tratta di un template e considera i parametri per virgole.
Ho trovato la descrizione del problema e la sua soluzione per C++ nel SO.
Ho provato in MQL, ma purtroppo non ha funzionato. Il compilatore dà un errore "identificatore non dichiarato" per una variabile descritta dal tipo passato.
Sono riuscito con una classe derivata aggiuntiva per ora, ma posso risolvere il problema in C++?
Ops. Ho trovato una soluzione. Ecco come funziona:
#define COMMA() ,
La domanda viene rimossa.Bug MT5 (build 2367) la posizione delle funzioni template sovraccaricate influenza il risultato della compilazione.
Il biglietto originale con cui è stato fatto il lavoro -https://www.mql5.com/ru/forum/1111/page2655#comment_15119627
C++ online(https://onlinegdb.com/BJzbH2DLL).
Difetti nel funzionamento della cache della funzione template/classe:
(corretto da MT5(build 2368)) ***(up) Undefined Behavior, si crea un oggetto complesso avvolto con tipo interno "C" più volte e si scopre che è un tipo di dati completamente diverso, forse "B", forse "int", quello che vuoi...
(corretto da MT5(build 2368)) * Errore di compilazione, bug sul passaggio di un puntatore di funzione come argomento const ref template.
(corretto da MT5(build 2368)) * Errore di compilazione, l'oggetto B<int> può essere creato dopo l'oggetto B<void*>, ma si verifica un errore di compilazione se viene fatto prima.
Difetti nella funzione template/classe di lavoro:
(corretto da MT5(build 2368)) ***(su) Errore di compilazione, bug all'interno della funzione template, il puntatore passato all'interno dellaconversione esplicita del tipo si comporta altrimenti come una classe.
(corretto da MT5(build 2368)) ** Erroredi compilazione, bug nel tentativo di accedere alla classe interna per un parametro template di una funzione template.
(non corretto da MT5 (build 2368)) *** Errore di compilazione, la lamentela principale è un avvertimento di output inappropriato - "comportamento deprecato, la chiamata al metodo nascosto sarà disabilitata in una futura versione del compilatore MQL". L'attuale implementazione sta sparando agli uccelli con una piuma.
(non corretto da MT5 (build 2368)) ** Errore di compilazione, il bug riguarda il valore di ritorno di una funzione template quando il valore di ritorno è una classe interna ad una classe template il cui tipo di parametro è impostato dal tipo di argomento della funzione template.
(non corretto da MT5 (build 2368)) ** Errore di compilazione, bug dello spazio dei nomi e dell'ambito nel costruttore di template quando si chiama una classe base quando lo stesso nome di classe è usato nell'ereditarietà e nella classe interna.
(non corretto da MT5 (build 2368)) * Errore di compilazione, bug sulla chiamata della funzione template con tipi di argomento espliciti quando viene chiamata da una funzione non template sovraccaricata.
(non risolto da MT5(build 2368)) Errore di compilazione, bug sulla definizione interna della classe - nessun riferimento allo spazio dei nomi globale quando si definisce una classe base.
(corretto da MT5(build 2368)) ** Errore di compilazione, bug con la generazione di codice di classe template quando si usa una classe interna.
(corretto da MT5(build 2368)) ** Errore di compilazione, bug sulla generazione del metodo/classe del template, il processo di sostituzione automatica del parametro del template è al di fuori dello scopo nel codice del programma principale.
(corretto da MT5(build 2368)) * Errore di compilazione, bug con assenza di codice di classe template autogenerante quando la classe template agisce come valore di ritorno per il metodo template.
(corretto da MT5(build 2368)) * Errore di compilazione, bug nel passare una struct interna a una funzione template, iltipo di dati risultante non può essere usato come tipo di dati di base per un'altra struct interna nella classe template.
(corretto da MT5(build 2368)) * Errore di compilazione, il controllo dei nomi dei tipi di template riutilizzati non viene eseguito quando si dichiara una funzione template all'interno di una classe template, il che porta a un comportamento inaspettato.
(corretto da MT5(build 2368)) Errore di compilazione, difetti multipli relativi al ritorno dell'oggetto "in luogo creato" quando l'oggetto è una classe/struttura modello.
(non corretto da MT5 (build 2368)) *( Non è un bug, è una caratteristica) nel costruttore della classe base è impossibile eseguire un typecast esplicito sulla conversione del puntatore all'oggetto della classe base nel puntatore alla classe madre.
Difetti legati all'incoerenza nelle priorità delle chiamate di funzioni sovraccaricate in MQL rispetto al C++:
(corretto da MT5(build 2368)) **(up) Errore di compilazione, la priorità di chiamata delle funzioni template sovraccaricate dipende in realtà dal tipo di parametro template, che teoricamente non influenza il risultato della compilazione.
(corretto da MT5(build 2368)) ** Erroredi compilazione quando la prima funzione template sovraccaricata usa una classe base template completamente specializzata e la seconda usa una classe base template non specializzata.
(non corretto da MT5 (build 2368)) ** Errore di compilazione, un errore di compilazione si verifica durante la generazione di codice per una funzione template nonostante il fatto che ci sia una funzione template sovraccaricata con una firma adatta ai parametri passati.
(non corretto da MT5 (build 2368)) * Errore di compilazione, "chiamata ambigua a funzione sovraccaricata" quando vengono chiamate funzioni template sovraccaricate con diverso numero di parametri template.
(corretto da MT5(build 2368)) *** Errore di compilazione quando si ereditano le classi A <= B <= C <= D e si implementano due funzioni di sovraccarico, per esempio, una con parametro A* e la seconda con parametro B*, quindi il passaggio di un oggetto C* o D* in tale funzione in MQL causa un errore di compilazione "ambiguous call to overloaded function".
(corretto da MT5(build 2368)) ** Runtime, mismatch di priorità per le chiamate di funzioni template sovraccaricate.
Difetti relativi all'esecuzione lenta delle funzioni, prestazioni dell'ottimizzatore di codice:
(corretto da MT5(build 2368)) ** Runtime, grande overhead quando si aggiunge un elemento alla volta in un array usando ArrayResize, nonostante il fatto che la memoria per loro sia stata riservata, per esempio, le strutture sono fino a 7 volte più lente.
Suggerimenti:
(nuovo) link - sull'implementazione del supporto intellisense per la funzionalità dello spazio dei nomi basato sul lavoro intellisense per i metodi statici nelle classi.
link- per permettere ai letterali e alle variabili temporanee di essere passati come argomenti di funzioni const ref.
link- quandosi spostano i file del progetto nella scheda Progetto, per i file spostati che sono aperti e nelle schede ME, per aggiornare automaticamente il loro percorso.
link- per introdurre la funzionalità della dichiarazione typedef in MQL.
link- circa la possibilità di forzare la generazione di costruttori di copia e operatori di assegnazione predefiniti.
Tutto funzionava prima, apparentemente qualcosa si è rotto come parte della correzione di altri bug.
Bug MT5 (build 2368) errore di compilazione quando si chiama la dichiarazione di assegnazione tramite indicazione esplicita della classe base. Il problema si verifica peruna classe template con parametro template come classe base.
Prima funzionava, apparentemente qualcosa si è rotto come parte della correzione di altri bug.
Forum sul trading, sistemi di trading automatico e test di strategie di trading
Bug, bug, domande
fxsaber, 2020.03.22 10:04
mq5 è ok. mq4 è rotto. Potete prendere TypeToBytes_ExampleScript.mq4 da qui. Si compila solo se si cambia l'estensione in mq5.
2368 - non è cambiato nulla.
Attraverso un terminale MT5 potevo sempre accedere al conto di qualsiasi broker. Se c'era un problema con il primo login, ho semplicemente usato gli strumenti del Terminale per cercare il broker appropriato, ottenendo automaticamente i dati dei suoi server di trading. Dopo di che ho potuto accedere senza problemi.
Oggi ho affrontato una situazione per la prima volta (nuovo broker), che nulla aiuta. Non posso accedere. In log scrive.
Ho scaricato il terminale nativo del broker - accede immediatamente. Il mio terminale di ricerca - non esiste. Per la prima volta tale.
Potete dirmi come fare in modo che un terminale non nativo sia in grado di connettersi al conto di trading?
Potete dirmi come fare in modo che un terminale non nativo sia in grado di connettersi a un conto di trading?
In mt4 ho dovuto copiare il file server.ini in un altro terminale, in modo da non dover cercare i server commerciali
non so in mt5