[ARQUIVO]Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por ela. Não posso ir a lugar nenhum sem você - 5. - página 235
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
Para entender o que está acontecendo, é necessário efetuar os cálculos para a impressora:
e analisar os resultados.PERCEBI QUE DEVO TER ENTENDIDO MAL ALGUMA COISA.
Como eu imaginei a execução da condição no cabeçalho do if
-programa recebe valor da variável Bid (0,86084)
-drota o valor da variável Bid (0,86084) para a variável massiv[S] (0,85375)
-mapa a diferença obtida 0,00709 para a constante 0
-se a diferença for > 0, o controle no corpo da declaração não é dado e a ordem não é aberta
-Se a diferença <= 0, o controle é entregue ao corpo de declaração e o pedido é aberto
Como imaginei a execução da função ArrayBsearch( massiv, valor,WHOLE_ARRAY, 0, MODE_ASCEND)
DICA: Retorna o índice do primeiro elemento encontrado na primeira dimensão da matriz.
Se não houver nenhum elemento com o valor especificado na matriz, a função retornará o índice do elemento mais próximo por valor, entre o qual se encontra o valor procurado.
- a função recebe o valor igual ao preço do último tick (Bid-0,86084)
-a função passa pelos valores da matriz de menor para maior - não encontra a correspondência completa entre qualquer valor da matriz e o valor
- como não há valor 0,86084 no array, a função retorna o valor menor mais próximo doarray, ou seja, 0 ,820864(primeiro),0,81074,0,85375,0,80084,0,81084,0,86088(último), ou seja, 0,85375 é o valor mais próximo de 0,86084 o valor menor. Entre 0,85375 e 0,86088 é o valor que você está procurando=0,86084
=====================================================================================================
Osparâmetros em sua função imprimir além do valor do elemento massiv[S] são: massiv[S-1] e massiv[S+1]. A partir do valor doelemento massiv[S]( 0,85375) você primeiro subtrai 1, e depois adiciona 1.
Não li sobre se no cabeçalho (ou no ArrayBsearch()) do arrayiv[S] o valor 1 é subtraído primeiro, e então 1 é adicionado.
Gostaria que você me explicasse este ponto ou me desse um link.
Obrigado.
Afunção imprimir tem outrosparâmetros - massiv[S-1] e massiv[S+1]. Você deseja subtrair 1 do valor massiv[S]( 0,85375) e adicionar 1 depois dele.
Eu não li sobre se cabeçalho (ou ArrayBsearch() ) primeiro subtrai 1 do valor massiv[S] e depois adiciona 1 a ele em qualquer livro didático MQL.
Gostaria que você me explicasse este ponto ou me desse um link.
Obrigado.
Imprima neste link.
http://clip2net.com/s/4MRjJe
Notei que
- o valor de massiv[0](provavelmente [S]) é o primeiro valor da matriz a começar com
- valor de massa[1](provavelmente [S+1] ) é o segundo valor do array, ou seja, segue o valor a partir do qual o array começa
-Estes valores são repetidos toda vez que PRINT é encontrado.
=============================================
- no ano 2000, o valor do preço era de 4 dígitos a mais após o ponto.
- no testador no gráfico - 5 dígitos
- no resultado do teste - 5 sinais
- no testador no log na impressora - 4 caracteres
E eu tenho 5 dígitos na matriz.
PERGUNTA - Quantos dígitos o software lê?
Imprima neste link.
https://www.mql5.com/go?link=http://clip2net.com/s/4MRjJe
Você não vê nada lá????
Vejo que o ArrayBsearch() retorna 0 (como um índice de elementos) em TODO LADO. Na 0ª célula de sua matriz está o número 1.0408. Voltemos ao código:
Agora substitua os valores variáveis obtidos nesta condição (na proposta da carita Bid está na faixa de 0,8-0,9, vamos tomar o máximo desta faixa - 0,9): se (0,9000 - 1,0408 <= 0) OrderSend(). A condição é cumprida CORRETO!!! Procure por erros ao completar sua matriz. Você presumivelmente não prestou atenção a esta cláusula na função ArrayBsearch():
Nota: A pesquisa binária trata apenas de matrizes classificadas. A função ArraySort() é usada para ordenar uma matriz numérica.
P.S. Print deve ser fornecido de preferência não como imagem, mas por seleção simultânea de várias linhas (usando SHIFT - se você não souber como fazê-lo) desta mesma impressão (10-20 linhas é suficiente) na janela do terminal, então copie e cole as linhas selecionadas em seu posto como código usando o botão SRC.
P.P.S. Acabei de notar o erro de sintaxe óbvio - esta linha deve ser colocada fora (antes) da função start():
#include <MASSIV.mqh>
Notei que
- no testador no log na impressora - 4 caracteres
Leia a documentação https://docs.mql4.com/ru/common/print
As matrizes não podem ser passadas para impressão(). As arrays devem ser impressas elemento por elemento.
Os dados do tipo duplo são impressos com 4 dígitos decimais após o ponto. Para obter mais precisão, a função DoubleToStr() deve ser usada.
Você não viu nada lá????
Vejo que o ArrayBsearch() retorna 0 (como um índice de elementos) em TODO LADO. Na 0ª célula de sua matriz está o número 1.0408. Voltar para o código:
Agora vamos substituir os valores variáveis obtidos nesta condição (A oferta está dentro de 0,8-0,9 no desenho animado, vamos tomar o máximo desta faixa - 0,9): se (0,9000 - 1,0408 <= 0) OrderSend(). A condição é cumprida CORRETO!!! Procure por erros ao completar sua matriz. Você presumivelmente não prestou atenção a esta cláusula na função ArrayBsearch():
Nota: A pesquisa binária trata apenas de matrizes classificadas. A função ArraySort() é usada para ordenar uma matriz numérica.