Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 1689

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
Se você não gosta de "-1", você pode fazer isso.
Não, você não pode - o programa irá falhar se você acessar sua matriz dessa forma.
Na melhor das hipóteses, se você acessar suas arrays internas, perderá os dados necessários ou simplesmente não os alcançará no loop.
Basicamente é simples, seu exclusivo resume todas as ordens desencontradas entre diferentes mágicos...
Por exemplo, existem 3 pedidos
A primeira iteração de magic=1 unique=0, no final da iteração unique será=2.
A segunda iteração magik=2unique=2, no final da iteraçãounique será=3
Desde 3>=número de todos os pedidos, o loop while irá quebrar... E magia =3 nunca foi verificada... Tão mágico =2 novamente e assim por diante com todos...
A primeira ordem é dada como mágica =1 por padrão. Então o laço entra em ação:
Início da mágica de iteração = 1 único = 0, no final (quando já existe uma ordem com mágica = 1) mágica = 1 ainda é 1 e único = 0
Segunda mágica de iteração = 2 único = 0, no final mágica = 2 e único = 1 (não há correspondência) e o retorno é dado à mágica de segunda ordem = 2.
A terceira deve ser a mesma...
Eu queria imprimir todo o processo, mas algo deu errado:
A primeira ordem é dada magia = 1 por padrão. Então um loop é iniciado:
Início da mágica de iteração = 1 único = 0, no final (quando já existe uma ordem com mágica = 1 ) mágica ainda é 1 e único = 0
Segunda mágica de iteração = 2 único = 0, no final, mágica = 2 e único = 1 (não há correspondência) e o retorno é atribuído à mágica de segunda ordem = 2.
A terceira deve ser a mesma...
Eu queria imprimir todo o processo, mas algo deu errado:
Aponte paramais- TODAS as linguagens de programação.
É simples - em linguagens de programação, a contagem começa em zero. A primeira célula de um array terá um índice de 0. Portanto, você tem que fazer um loop inverso ANTES de zero, INCLUINDO-o. Isto é, >=0
EncomendasTotal() sai, por exemplo, 10. E você inicia um loop a partir de 10, enquanto o último índice da matriz é 9 (lembre-se, estamos começando de zero?). E o que acontecerá quando você acessar uma célula de array inexistente? Isso mesmo - o programa se chocará com um erro crítico, porque você entrou em uma área de memória não alocada, além dos limites da matriz.
Estas são muletas sólidas, com certeza. Leia, aprenda e tudo virá até você.
Há toneladas de cursos gratuitos e bons em C/C++.
Mql está próximo a eles e você pode aprender livremente. Felizmente, não é necessário um conhecimento profundo. Mas pelo menos a sintaxe da linguagem e os fundamentos básicos dos algoritmos.
De outra forma, obtemos disparates no tópico, ao invés de consultas sobre a plataforma e algoritmos, diálogos de nível de escolas primárias - onde colocar; o que é um loop e por que os índices são 0.
Por exemplo, há um site intuit.ru - há cursos sobre C e algoritmos, leve seu tempo, algumas semanas no máximo. Ao mesmo tempo, você pode obter um papel :-)
De outra forma, obtemos disparates no tópico, ao invés de consultas sobre a plataforma e algoritmos, diálogos de nível de escolas primárias - onde colocar; o que é um loop e por que os índices são 0.
Por exemplo, há um site intuit.ru - há cursos sobre C e algoritmos, leve seu tempo, algumas semanas no máximo. Ao mesmo tempo, você pode receber um papel:-)
Assim?
OrderTotal() dá por exemplo 10. E você começa o loop a partir de 10. Mas o último índice da matriz é 9 (lembre-se, estamos contando a partir de zero?). E o que acontecerá quando você acessar uma célula de array inexistente? Isso mesmo - o programa se chocará com um erro crítico, porque você entrou em uma área de memória não alocada, além dos limites da matriz.
Eu estou corrigido... Não haverá um erro crítico, apenas a OrderSelect boolean retornará falsa... e isso é tudo... Mas, claro, é melhor evitar... Pois se você usar recursos de código incorretos, é difícil prever possíveis erros...
A primeira ordem é dada magia = 1 por padrão. Então um loop é iniciado:
Iniciar mágica de iteração = 1 único = 0, no final (quando já existe uma ordem com mágica = 1 ) mágica = 1 e único = 0
Segunda mágica de iteração = 2 único = 0, no final mágica = 2 e único = 1 (não há correspondência) e o retorno é atribuído à mágica de segunda ordem = 2.
A terceira deve ser a mesma...
Vejo apenas que o enchimento do único vai muito rápido e atinge o limite, e a magia mal cresce... Geralmente, era errado usar a mesma variável tanto para o controle do loop como para a lógica dentro do loop onde esta variável inflaciona...
Imprimir para encontrar uma solução neste contexto, mas sugiro apenas reformular o problema... Por exemplo, encontrar o magik máximo em pedidos pelo laço e devolvê-lo com +1, essa seria a solução simples correta.
Você pode fazer isso desta forma, o código é chamado conforme necessário, portanto seu peso não é um problema.
Para o teste que eu usei Comprar/Vender
Fórum sobre comércio, sistemas automatizados de comércio e testes estratégicos
Qualquer pergunta de novatos sobre MQL4 e MQL5, dicas e discussão sobre algoritmos e códigos
Vitaly Muzichenko, 2021.10.19 23:08
Vou corrigi-lo um pouco. Não haverá erro crítico, apenas a Ordem booleanaSelect retornará falsa ... e isso é tudo... Mas é claro que é melhor evitar... Pois se os recursos do código não forem usados corretamente, é difícil prever as possíveis armadilhas...
Vejo um enchimento único a um ritmo muito rápido e alcançando seu limite, enquanto a magia mal cresce... Geralmente era errado usar a mesma variável tanto para o controle do loop como para a lógica dentro do loop, onde esta variável inflaciona...
Imprimir para encontrar uma solução neste contexto, mas sugiro apenas reformular o problema... Por exemplo, encontrar o magik máximo em pedidos pelo laço e devolvê-lo com +1, essa seria a solução simples correta.
Você pode fazer isso desta forma, o código é chamado conforme necessário, portanto seu peso não é um problema.
Para o teste que eu usei Comprar/Vender