Errori, bug, domande - pagina 1784
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
Guarda qui - Programma di esecuzione
Per un riassunto dei programmi in MQL5, vedere la tabella qui sotto:
Programma
Esecuzione
Nota
Script
Nel proprio thread, tanti script quanti sono i thread di esecuzione per essi
Uno script in loop non può interrompere il lavoro di altri programmi
Esperto
Nel proprio thread, altrettanti esperti - altrettanti thread di esecuzione per loro
Un esperto in loop non può interrompere il lavoro di altri programmi
Indicatore
Un thread di esecuzione per tutti gli indicatori su un simbolo. Tanti simboli indicatori - tanti thread di esecuzione per loro
Un loop infinito in un indicatore fermerà tutti gli altri indicatori su questo simbolo
Forum sul trading, sistemi di trading automatico e test di strategia
Bug, bug, domande
Slawa, 2017.02.06 07:22
Ma anche qui, non potete contare sul fatto che il comando Deinit su M5 sarà processato prima del comando Init su M15Ahimè, non ho familiarità con questo formato.
L'esperimento ha mostrato che il numero nel buffer grafico è rappresentato dalle stesse regole del doppio - cioè non è possibile passare un numero così lungo attraverso il buffer grafico - frustrante.
Ahimè, il buffer grafico può contenere solo un numero di 10 cifre.
A proposito, perché c'è un limite di 4 decimali?
Errore di compilazione (o piuttosto nessun messaggio di errore)
public:
int i;
};
class B : public A {};
class C : protected A {};
class D : protected B {};
void OnStart()
{
C c;
Print( c.i ); //Error: 'i' - protected member access error
D d;
Print( d.i ); //нормально???
}
Errore di esecuzione: caricamento EX5 fallito
typedef void (*f)( A*);
class A {
virtual void g( A *a ) {}
f ff;
};
void OnStart() { Print( __FUNCTION__ ); }
Errore durante l'esecuzione
void f( B* );
class A { public:
virtual ~A() { f((B *)&this ); } //(*)
virtual void g( A* ) { Print( __FUNCTION__ ); }
};
class B : public A { public:
virtual void g( A* ) { Print( __FUNCTION__ ); }
};
void f( B *b ) { b.g( b ); }
void OnStart() //(1)
{
B *b = new B;
delete b;
}
Risultato: casting errato dei puntatori in (*)
E se
risultato: B::g
ma qual è la differenza fondamentale tra OnStart (1) e (2)?
Inoltre, il risultato di un codice simile in C++: A::g
A100:
A cosa servirebbe un distruttore virtuale come quello del tuo esempio sopra? Può essere sovrascritto nel discendente?
A cosa servirebbe un distruttore virtuale come quello del tuo esempio sopra? Può essere sovrascritto nel discendente?
In MQL è sempre virtuale, anche se non esplicitamente dichiarato
Quindi non hai risposto alla domanda - per cosa?
Se tutti i distruttori in MQL sono virtuali, allora la domanda su cosa sia un distruttore virtuale si riduce alla domanda su cosa sia un distruttore? E questa è una domanda troppo generale.