Erros, bugs, perguntas - página 2753

 
Alexey Navoykov:
Em C# o especificador const é utilizado apenas para expressões constantes calculadas na fase de compilação, enquanto C++ tem um análogo para ele: constexpr,e MQL não o tem.

sim

é geralmente uma questão de construções sintácticas de línguas

numa linguagem natural (em matemática) uma constante é... bem, é uma espécie de constante! ))

Em C++ uma constante é uma máquina que verifica se existe uma constante no âmbito (ou vida útil) de uma variável

Em C# uma constante tem um significado sintáctico que está mais próximo das regras de uma língua natural


e é disso que se trata nesta discussão:

const MqlTick _Tick; // Текущий _Symbol-тик.

Imho, esta construção obedece totalmente à sintaxe C++, ou pelo menos a MQL4 tinha Bid and Ask, e ninguém questionou se isto se justificava




Sem demagogia precisamos da possibilidade de aceder aos preços actuais o mais rapidamente possível. O profiler mostra que o acesso permanente a SymbolInfoDouble() e SymbolInfoTick() diminui a velocidade de optimização

 
Mihail Matkovskij:

Como posso mudar o compilador?

Descobri que o compilador está integrado no MetaEditor a partir da construção 900:https://www.mql5.com/ru/forum/21374

Então porque existe uma janela com uma linha que conduz ao directório onde o VS está instalado?

Compiladores

Обратите внимание, что компилятор переехал внутрь MetaEditor, начиная с 900 билда
Обратите внимание, что компилятор переехал внутрь MetaEditor, начиная с 900 билда
  • 2014.03.01
  • www.mql5.com
Консольный компилятор MQL4/MQL5 остался, обновляется вместе с платформами МетаТрейдер 4/5 и всегда доступен по ссылкам:.
 
Igor Makanu:

Sem demagogia, precisamos de ser capazes de aceder aos preços actuais o mais rapidamente possível. O profiler mostra que as chamadas constantes para SymbolInfoDouble() e SymbolInfoTick() reduzem a velocidade de optimização

Bem, aqui foi sugerido anteriormente acrescentar a capacidade de passar NULL em vez do nome do símbolo actual. Isto poderia acelerar o trabalho em casos especiais. Em geral, precisamos de acesso através de pegas e não de valores de texto de símbolos. Mas penso que é pouco provável que os programadores se vejam obrigados a tal complicação. O problema parece ser rebuscado.

Nas medidas acima mencionadas, o custo foi apenas 6% do funcionamento inactivo do testador (sem carga). E em código de trabalho será uma ordem de magnitude inferior. Não vale a pena prestar atenção a tais insignificâncias, e chamar estas funções mais do que uma vez num manipulador é uma decisão incorrecta em si mesma.

 
Alexey Navoykov:

Bem aqui anteriormente foi sugerido acrescentar a possibilidade de passar NULL em vez do nome do símbolo actual. Isto poderia acelerar o trabalho em casos especiais. Mas em geral precisamos de acesso através de pegas, não de valores de texto de caracteres. Mas penso que é pouco provável que os programadores se vejam obrigados a recorrer a tal complicação. E não vale a pena, parece-me. O problema é bastante rebuscado.

Já funciona, mas não há aceleração (verifiquei) - aparentemente tudo já está maximamente acelerado ou vice-versa - pois a aceleração ainda está muito longe (por favor peça aos programadores para sublinharem)

 
A100:

Portanto, por uma questão de rigor, devemos utilizar Dígitos() em vez de _Dígitos. Então formalmente e nenhuma contradição lógica ocorre - Dígitos() não está vinculado por modificador constante.

Tanto quanto percebi _Dígitos eram necessários para a compatibilidade com o MT4 - nada mais.

Fórum sobre comércio, sistemas de comércio automatizados e testes estratégicos

Insectos, insectos, perguntas

Ilyas, 2020.05.20 15:39

chamada de Símbolo() SEMPRE acesso à variável global _Símbolo, assim como Dígitos(), Ponto(), Período(), GetLastError(), IsStopped(), UninitializeReason()

 
Mihail Matkovskij:

Durante a depuração e quando o próprio indicador está a funcionar, no registo, escreve subitamente o Stack overflow. Ao depurar-se, surge a mensagem "O erro crítico ocorreu, a depuração parou". Aqui está o meu tópico semelhante:https://www.mql5.com/ru/forum/338301. Mas durante a compilação o compilador não repreende e tudo corre bem. Quando se depura, é impossível determinar em que ponto o programa falha.

Talvez seja o compilador? Não estou realmente interessado no compilador que estou a utilizar, mas nas minhas definições parece que é assim:

Tenho o VS instalado, por isso tenho esta ligação nas definições. Então o compilador também é apropriado...? Mas que compilador estava lá quando não tinha VS, sinceramente não entrei nele. Talvez eu deva tentar voltar àquele compilador e tentar compilar o projecto com ele?

Enquanto procurava formas de resolver o problema, com a chegada de outra depuração de actualização do terminal funcionou correctamente. Consegui encontrar erros. Alguns métodos estavam a fazer looping e a chamar-se a si próprios. Foi por isso que o programa falhou com a mensagem "Stack overflow". Mas com a ajuda de um depurador funcional consegui encontrar todas as linhas problemáticas e consertá-las. Expresso a minha gratidão aos Desenvolvedores pela rápida correcção do bug com a depuração!

 

в естественном языке (в математике) константа это... ну как бы константа! ))

Em C++, uma constante é uma verificação da máquina pelo compilador para uma constante no âmbito (ou vida útil) de uma variável.

Tanto em C++ como em MQL, uma constante pode ser definida uma vez na criação e nunca mais ser alterada. Os âmbitos não têm nada a ver com isto.

Não é muito diferente do que na matemática.


 
Mihail Matkovskij:

Descobri que o compilador está integrado no MetaEditor a partir da construção 900:https://www.mql5.com/ru/forum/21374

Então porquê esta janela com uma linha que conduz ao directório onde o VS está instalado?


O compilador VS é utilizado se se escrever uma DLL.

 
fxsaber:

O que mais uma vez confirma que não faz sentidoutilizar directamente _Dígitos,_Ponto , _Período, _LastError, etc. (e até _Símbolo pode ser substituído por NULL). De facto, devem ser declarados como constantes e voláteis

E você, pelo contrário, está a sugerir que se acrescente

 
A100:

O que mais uma vez confirma que não vale a penautilizar directamente _Dígitos,_Ponto , _Período, _LastError, etc. E mesmo _Símbolo pode ser substituído por NULL.

E você, pelo contrário, está a oferecer-se para complementar esta série.

O que interessa é a possibilidade de passar por referência.

Razão: