Erros, bugs, perguntas - página 1784
![MQL5 - Linguagem para estratégias de negociação inseridas no terminal do cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Veja aqui - Execução do programa
Para um resumo dos programas em MQL5, ver o quadro abaixo:
Programa
Execução
Nota
Roteiro
No seu próprio fio condutor, tantos guiões quantos os fios de execução para eles
Um guião em loop não pode interromper o trabalho de outros programas
Perito
No seu próprio fio, tantos especialistas - tantos fios de execução para eles
Um perito em loop não pode interromper o trabalho de outros programas
Indicador
Um fio de execução para todos os indicadores num só símbolo. Tantos símbolos indicadores - tantos fios de execução para eles
O loop infinito num único indicador irá parar todos os outros indicadores neste símbolo
Fórum sobre comércio, sistemas automatizados de comércio e testes estratégicos
Insectos, insectos, perguntas
Slawa, 2017.02.06 07:22
Mas também aqui não pode contar com o facto de que o comando Deinit em M5 será processado antes do comando Init em M15Infelizmente, não estou familiarizado com este formato.
A experiência mostrou que o número no buffer gráfico é representado pelas mesmas regras que o dobro - ou seja, não é possível passar um número tão longo através do buffer gráfico - frustrante.
Infelizmente, o buffer gráfico só pode conter um número de 10 dígitos.
A propósito, porque é que existe um limite de 4 casas decimais?
Erro de compilação (ou melhor, nenhuma mensagem de erro)
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 ); //нормально???
}
Erro de execução: o carregamento de EX5 falhou
typedef void (*f)( A*);
class A {
virtual void g( A *a ) {}
f ff;
};
void OnStart() { Print( __FUNCTION__ ); }
Erro durante a execução
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;
}
Resultado: fundição incorrecta de apontadores em (*)
E se
resultado: B::g
mas qual é a diferença fundamental entre OnStart (1) e (2)?
Além disso, o resultado de um código semelhante em C++: A::g
A100:
Para que serviria um destruidor virtual como o do seu exemplo acima? Pode ser anulado na descendência?
Para que serviria um destruidor virtual como o do seu exemplo acima? Pode ser anulado na descendência?
Na MQL é sempre virtual, mesmo que não seja explicitamente declarado
Então ainda não respondeu à pergunta - para quê?
Se todos os destruidores na MQL são virtuais, então a questão de para que serve um destruidor virtual é reduzida à questão de para que serve um destruidor? E esta é uma questão demasiado geral.