Erros, bugs, perguntas - página 2755
![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
Erro de compilação. Funciona bem em construções mais antigas.
Tenho um Expert Advisor tão simples (ver imagem do ecrã).
Há objectos do mapa sobrepostos no mapa.
Antes da actualização terminal de ontem os níveis comerciais eram mostrados nos gráficos, mas agora desapareceram.
Criei gráficos como mostra o exemplo no manual. Não encontrei quaisquer propriedades de gráficos para exibir níveis de comércio (só os gráficos básicos têm tais propriedades).
Por favor, ajudem.
Capturas de ecrã da plataforma MetaTrader
GBPUSD, M5, 2020.05.25
Forex Club International Limited, MetaTrader 5, Real
Hi. Por favor, ajude-me a compreender o que está escrito.
mqlrate rt [2] ;
Estou correcto ao assumir que se trata de um conjunto de duas estruturas que receberam automaticamente os mesmos dados estruturais?
Além disso, não há atribuição de dados à matriz e depois os dados da matriz são utilizados de uma só vez.Hi. Por favor, ajude-me a compreender o que está escrito.
mqlrate rt [2] ;
Estou correcto ao assumir que se trata de um conjunto de duas estruturas que receberam automaticamente os mesmos dados?
Escrito em MQL5:
significa: é declarado um conjunto estático de duas estruturasMqlRates. Após a declaração, estas estruturas podem armazenar algaraviadas, pelo que estas estruturas têm de ser explicitamente preenchidas com dados.
Escrita em MQL5:
significa: é declarado um conjunto estático de duas estruturasMqlRates. Uma vez declaradas, estas estruturas podem armazenar algaraviadas, pelo que estas estruturas precisam de ser explicitamente preenchidas com dados.
Erro de compilação. Funciona bem em construções mais antigas.
Sim, existe tal coisa, reportado já em 2020.03.25, já dia após dia durante 2 meses...
(não corrigido pelo MT5(build 2390)) (novo) Erro de Compilação, quando se usa o modificador de acesso padrão ao herdar na classe do modelo, quando o parâmetro do modelo actua como classe base.
Outro insecto:
Culpa C::operator=, embora D::operator= seja executado aqui. Para evitar o bug, temos de sobrecarregar o operador para todas as classes de base na hierarquia.
p.s. Em geral, os programadores prometeram corrigir o comportamento incorrecto do operador de atribuição há muito tempo, mas ainda lá está. Isto é um ultraje. Por exemplo, o seguinte código compila sem erros, embora esteja a atribuir o que quer que seja:
Mais um bug:
1) Queixa-se de C::operator=, embora D::operator= seja executado aqui. Para evitar o bug, temos de sobrecarregar o operador para todas as classes de base na hierarquia.
2) Em geral, os programadores prometeram corrigir o comportamento incorrecto do operador de atribuição há muito tempo mas ele ainda lá está - é um ultraje. Por exemplo, o seguinte código compila sem erros embora atribua o que quer que seja:
1) Isto não é muito provavelmente um bug mas sim um comportamento natural, considerando as especificidades do MQL, nomeadamente:
Em MQL, os métodos e campos da classe base estão "directamente disponíveis" a partir das classes derivadas.
Em essência, o comportamento da herança em MQL é semelhante à utilização da declaração para cada campo e método básico em C++.
C++ online:https://onlinegdb.com/rJkckvFsU
Assim, a operaçãod = c;
também envolve todas as funções operador= das classes base quando se procura a função apropriada.
Como resultado, a assinatura ideal para uma chamada de função sobrecarregada é o operador predefinido e apagado =(const C&).
1) Muito provavelmente, não é um bug, mas um comportamento natural considerando as peculiaridades do MQL, nomeadamente:
Em MQL, os métodos e campos de uma classe base estão "directamente disponíveis" a partir de classes descendentes.
Em essência, o comportamento da herança em MQL é semelhante ao de C++ usando declaração para cada campo e método básico.
C++ online:https://onlinegdb.com/rJkckvFsU
Assim, a operaçãod = c;
também envolve todas as funções operador= das classes base quando se procura a função apropriada.
Como resultado, a assinatura óptima para uma chamada de função sobrecarregada é o operador predefinido e remoto nulo=(const C&).
Não é preciso procurar um significado sagrado numa falha óbvia da linguagem. Já levantei aqui este problema e Ilyas garantiu que será corrigido. Mas já passaram quase 10 meses. (
Na essência, o comportamento da herança no MQL é semelhante ao do C++ usando declaração
Sim, bem, se em MQL por exemplo 2 x 2 = 5, pode-se dizer que é o mesmo que em C++ adicionando uma operação de incremento ao resultado)
Não é necessário procurar um significado sagrado numa falha óbvia da língua.
Foi-lhe explicado como e porquê funciona, se é difícil para si - felizmente não posso ajudar...
Não é um significado sagrado, mas uma abordagem comum para baixar o nível de entrada do utilizador, para que este possa aceder aos campos e métodos da classe base sem utilizar "isto", e também em casos de sobrecarga - uma função de classe base.