Errori, bug, domande - pagina 2654
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
Qualcuno può illuminarci sulla seguente domanda:
Avere una dll scritta in C# ma compilata:
- Per MT5 solito progetto C# - Net Framework dll - 64 bit
- MT4 - Net Framework dll - 32 bit, ma avvolto in chiamate C gestite
Le fonti dll sono identiche al 100%, tranne il wrapper MT4, ovviamente,
OS Win10-64
Bene, la domanda è perché MT4 chiama le funzioni esattamente 4 volte più velocemente, le cifre sono circa 100 000 chiamate dll su MT4 per 7,5 secondi, MT5 per 30 secondi
Qualcuno può illuminarci sulla seguente domanda:
Avere una dll scritta in C# ma compilata:
- Per MT5 solito progetto C# - Net Framework dll - 64 bit
- MT4 - Net Framework dll - 32 bit, ma avvolto in chiamate C gestite
Le fonti dll sono identiche al 100%, tranne il wrapper MT4, ovviamente,
OS Win10-64
Bene, la domanda è perché MT4 chiama le funzioni esattamente 4 volte più velocemente, le cifre sono circa 100 000 chiamate dll su MT4 per 7,5 secondi, MT5 per 30 secondi
IMHO. C-runtime in un caso e una macchina virtuale nell'altro.
Un'interfaccia grafica è implementata nell'Expert Advisor. Sono anche implementati gli eventi dell'utente (ad esempio, eventi di cambiamento della GUI). Eseguo il debug su dati reali (F5). Non appena metto un breakpoint su un evento utente - il debugger si ferma, ma la successiva pressione di F5 (continuazione del debug) non porta ad alcun cambiamento nella GUI stessa. Domanda: dovrebbe essere così o è un bug del debugger?
Se rimuovo il breakpoint (il debug continua) - i cambiamenti nella GUI sono normali.
MT5, build 2340.
IMHO. C-runtime in un caso e una macchina virtuale nell'altro.
c'è un .Net virtuale in entrambe le dll
Ho trovato la differenza nel codice, ho anche gettato la classe base a 32 bit in un thread separato, perché non ha altro modo di lavorare
Ho fatto le stesse manipolazioni per MT5, i risultati sono più o meno gli stessi (tre test ciascuno):
MT5: ciclo 100000 , tempo 8.482981 sec , ciclo 100000 , tempo 8.638789 sec , ciclo 100000 , tempo 8.390046 sec
MT4: ciclo 100000, tempo 7.128857 sec, ciclo 100000, tempo 7.176361 sec, ciclo 100000, tempo 7.205439 sec
Saluti! Buone vacanze a tutti gli uomini !!!!
Non capisco quale sia lo strano bug con la visualizzazione a zig zag dell'equità nel tester. Non capisco lo strano bug con la visualizzazione a zig zag dell'equità nel tester. Se cambio l'impostazione "Settlement method" da "Exchanging Stoks" a "Forex", il capitale viene visualizzato normalmente. Ho avuto la stessa esperienza qualche anno fa, volevo provare a collegare MT5 a un fondo, l'ho provato, mi sono spaventato e ho rinunciato. Ora ho provato di nuovo e la stessa cosa. È strano?
Il problema è risolvibile per i metodi delle classi contenitore "tipizzate", ma non lo è per le funzioni normali.
La contraddizione principale è che per trasferire strutture è necessario usare il trasferimento per riferimento, e per letterali e variabili temporanee - trasferimento per valore.
Come risultato, otteniamo un errore di compilazione per i tipi lvalue normali perché entrambe le funzioni sovraccaricate sono adatte alla chiamata.
Come soluzione parziale e solo per i tipi "primitivi", si possono costruire 12 funzioni sovraccaricate:
Ma se una funzione deve accettare due argomenti "universali", allora solo 144 funzioni sovraccaricate sono necessarie per implementarla, mentre nel caso di tre tali argomenti, sono necessarie tutte le 1728 funzioni sovraccaricate.
Suggerimento:
Infine, permette agli utenti di passare letterali e variabili temporanee come argomenti di funzioni const ref.
Che sia una direttiva separata # - qualunque cosa...
Difetti nel funzionamento della cache della funzione template/classe:
(non corretto da MT5 (build 2340)) ** Comportamento indefinito, si crea un oggetto complesso avvolto con tipo interno "C" diverse volte e si scopre che è un tipo di dati completamente diverso, forse "B", forse "int", qualunque cosa si voglia...
(non corretto da MT5 (build 2340)) * Errore di compilazione, bug sul passaggio di un puntatore di funzione come argomento const ref template.
(non corretto da MT5(build 2340)) * Errore di compilazione, l'oggetto B<int> può essere creato dopo l'oggetto di classe B<void*>, ma se fatto prima, si verifica un errore di compilazione.
Difetti nella funzione template/classe di lavoro:
(non corretto da MT5 (build 2340)) ** Errore di compilazione, bug all'interno della funzione template, il puntatore passato all'interno dell'operazione diconversione esplicita del tipo si comporta come una classe altrimenti come un puntatore.
(non corretto da MT5 (build 2340)) ** Errore di compilazione, bug con la generazione del codice della classe template mentre si usa la classe interna.
(non corretto da MT5 (build 2340)) ** Errore di compilazione, bug nel tentativo di accedere alla classe interna per il parametro template della funzione template.
(non corretto da MT5 (build 2340)) ** Errore di compilazione, bug nella generazione di un metodo/classe di template, il processo di "auto-sostituzione" del parametro del template sfugge all'ambito nel codice principale del programma.
(non corretto da MT5 (build 2340)) * Errore di compilazione, il bug con la classe template non genera automaticamente il codice quando la classe template agisce come valore di ritorno per il metodo template.
(non corretto da MT5 (build 2340)) * Errore di compilazione, bug nella definizione della classe interna - non c'è la possibilità di fare riferimento allo spazio dei nomi globale esplicitamente quando si specifica la classe base.
Difetti nelle chiamate di funzione sovraccaricate disadattamento della priorità in MQL rispetto al C++:
(non corretto da MT5 (build 2340)) *** Errore di compilazione quando c'è un'eredità di classe A <= B <= C <= D e sono implementate due funzioni di sovraccarico, per esempio, una con parametro A* e una con parametro B*, allora passare in tale funzione un oggetto C* o D* in MQL causa un errore di compilazione "ambiguous call to overloaded function".
(non corretto da MT5 (build 2340)) ** Runtime, errore di priorità per le chiamate a funzioni template sovraccaricate.
Suggerimenti:
link- sul 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 si trovano nelle schede ME, per aggiornare automaticamente il loro percorso di localizzazione.
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.
Sto chiedendo aiuto, sono completamente fuori dal giro.
In OnChartEvent, premendo `C` cancello/ripristino il grafico dei prezzi.
E tutto andrebbe bene, ma se il layout della tastiera non è selezionato inglese - non funziona.
Come rendere il rilevamento della pressione di `C` indipendente dal layout selezionato?
Sto chiedendo aiuto, sono completamente fuori dal giro.
In OnChartEvent, premendo `C` cancello/ripristino il grafico dei prezzi.
E tutto andrebbe bene, ma se il layout della tastiera non è selezionato inglese - non funziona.
Come fare in modo che il rilevamento della pressione di `C` sia indipendente dal layout selezionato?
Necessità di controllarelparam
Per entrambi i layout di tastiera ru e en (sia minuscolo che maiuscolo) lparam sarà 67: