Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 329
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
Não há necessidade de ordenar a matriz após cada adição de um elemento da matriz. É melhor mover a triagem
A partir da referência
Mas[Blizko2] é o valor menor mais próximo na matriz
Obrigado por sua resposta! Poderia me dizer, por favor, para determinar o próximo elemento do conjunto que usei o elemento já encontrado +1, mas o testador dá um erro neste lugar.
Preciso encontrar o próximo elemento. Obviamente é +1, mas o programa me dá um erro! Talvez haja outra maneira ou talvez eu faça isso errado? Por favor, me dê uma dica)
Blizko1 = Mas[Blizko2]+1;
ou como este?
mas depois, na compilação, um aviso sobre possível perda de dados
Com esta construção
Blizko1 = Mas[Blizko2]+1;
você adiciona 1 ao valor obtido da célula de índice Blizko2, e é lá que o preço é armazenado - um valor duplo. Você está adicionando um número inteiro 1. Você precisa escrever +1,0 para evitar o aviso.
Mas isto também não vai salvar o "pai da democracia russa", porque você está adicionando 1 não ao índice, mas ao valor armazenado na matriz Mas[] pelo índice Blizko2.
Portanto, naturalmente, para obter um valor de uma célula próxima da matriz, você precisa adicionar ou subtrair 1 ao índice. Mas aqui temos um erro no qual você tropeçou: se o índice apontar para a célula mais externa de um array - seja 0 ou a última, então subtraindo 1 (em 0) ou adicionando 1 (na última) você cairá fora do array - nenhuma célula desse tipo está lá. Assim, você precisa controlar que o Blizko2+1 não é mais que o ArraySize(Mas)-1, ou que o Blizko2-1 não é menos que zero.
E... foi-lhe dito que você não precisa ordenar a matriz a cada iteração do loop - você precisa de freios?
Deve ser classificado após verificar se o tamanho da matriz é maior que 1.
E este projeto não é nada claro:
Veja: em Blizko2 você tem o índice da célula da matriz com o preço.
Então você escreve na matriz - em sua célula Blizko2+1 o valor contido na variável Blizko1 (por quê????) - você deveria ter preços lá, mas você os está enchendo com valores incompreensíveis.
Você precisa descobrir o que está fazendo em geral - basta comentar cada linha de sua função. Pensando bem.
Com esta construção
você adiciona 1 ao valor obtido da célula de índice Blizko2, e é lá que o preço é armazenado - um valor duplo. Você está adicionando um número inteiro 1. Para evitar um aviso, você precisa escrever +1,0
Mas isto também não vai salvar o "pai da democracia russa", porque você está adicionando 1 não ao índice, mas ao valor armazenado na matriz Mas[] pelo índice Blizko2.
Portanto, naturalmente, para obter um valor de uma célula próxima da matriz, você precisa adicionar ou subtrair 1 ao índice. Mas aqui temos um erro em que você tropeçou: se o índice apontar para a célula mais externa de um array - seja 0 ou a última, então subtraindo 1 (em 0) ou adicionando 1 (na última), você cairá fora do array - nenhuma célula desse tipo está lá. Assim, você precisa controlar que o Blizko2+1 não é mais que o ArraySize(Mas)-1, ou que o Blizko2-1 não é menos que zero.
E... foi-lhe dito que você não precisa ordenar a matriz a cada iteração do loop - você precisa de freios?
Para classificá-la, temos que verificar se o tamanho da matriz é superior a 1.
E esta construção não é nada clara:
Veja: em Blizko2 você tem o índice da célula da matriz com o preço.
Então você escreve na matriz - em sua célula Blizko2+1 o valor contido na variável Blizko1 (por quê????) - você deveria ter preços lá, mas você os está enchendo com valores incompreensíveis.
Você precisa descobrir o que está fazendo em geral - basta comentar cada linha de sua função. Pensando bem.
Obrigado pela resposta informativa! O objetivo para o qual quero criar a matriz é determinar os preços dos pedidos mais próximos abaixo do preço e acima do preço, se houver algum. Se eles estiverem disponíveis e a distância entre eles e o preço exceder a distância que eu defini, então abra as ordens correspondentes. Pensei que seria assim (descrevi a lógica de minhas ações aqui o máximo que pude)
Eu ficaria algo parecido com isto
Eu ficaria algo parecido com isto
Obrigado, o que significaDBL_MAX no nível superior?
Obrigado! O que significaDBL_MAX?
Você tem até mesmo um link inserido pelo inteligente motor do fórum. É mais fácil clicar sobre ele do que esperar por uma resposta.
Você tem até mesmo um link inserido pelo inteligente motor do fórum. É mais fácil clicar sobre ele do que esperar por uma resposta.
Obrigado! Eu gostaria de ter um motor assim)))
Obrigado pela resposta informativa! O objetivo para o qual pretendo criar a matriz é determinar os preços dos pedidos mais próximos abaixo do preço e acima do preço, se houver algum. Se elas estiverem disponíveis e a distância entre elas e o preço exceder uma certa distância, então abra as ordens correspondentes. Pensei que seria assim (descrevi a lógica de minhas ações aqui o máximo que pude)
Há um erro neste comentário de linha.
Fórum sobre comércio, sistemas automatizados de comércio e teste de estratégias comerciais.
Qualquer pergunta, ajuda e discussão sobre algoritmos e códigos para iniciantes da MQL4
Alexey Viktorov, 2017.10.04 09:32
A partir da ajuda
Valor retornado
Índice de retorno do primeiro elemento encontrado. Se o valor procurado não for encontrado, ele retorna o índice do elemento menor mais próximo entre o qual o valor procurado está localizado.
Mas[Blizko2] é o valor menor mais próximo na matriz.
Resta apenas acrescentar que a referência não diz nada sobre a dependência da direção de classificação da matriz. Portanto, nenhuma manipulação é necessária após a ArrayBsearch. A tarefa já está feita.
Artyom já explicou tudo mais detalhadamente. Verificar a igualdade de um índice a zero e o tamanho de uma matriz para não saltar fora dos limites...
Como posso fazer o mouse começar a ser rastreado somente depois que o botão é clicado? Mas a situação acontece (na idéia de transferir uma parada em todos os pedidos para um ponto por clique do mouse da EA) quando clico no botão, uma parada em todos os pedidos ao preço em que o botão foi clicado começa a ser transferida de uma só vez. Como pode esta propriedade se(id==CHARTEVENT_CLICK)
if(ObjectGetInteger(0, "cm STOP ALL",OBJPROP_STATE))
Como posso fazer o mouse começar a ser rastreado somente depois que o botão é clicado? Mas a situação acontece (na idéia de transferir uma parada em todos os pedidos para um ponto por clique do mouse da EA) quando clico no botão, uma parada em todos os pedidos ao preço em que o botão foi clicado começa a ser transferida de uma só vez. Como pode esta propriedade se(id==CHARTEVENT_CLICK)
if(ObjectGetInteger(0, "cm STOP ALL",OBJPROP_STATE))