[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ê pode informar se é possível abrir uma posição manualmente no Metatrader4 Strategy Tester, em vez de usar um Expert Advisor? Para não calcular pips em uma calculadora, mas para apertar o botão, aparecerá uma janela de abertura de ordem, preencher os dados e pressionar F12 e o próprio testador calculará como ao abrir por um EA. Provavelmente, existe um programa pronto para este fim, não o encontrei em minha busca.
 
Bom dia a todos. Tenho uma pergunta aqui, várias perguntas para ser exato, me ajude.
1: Se eu tiver um nível, e se o preço for igual a este nível, então abra um pedido. A questão é se o preço pode saltar este nível, voar rapidamente e não ser igual ao nível que eu tenho ou se eu tenho um GAP, uma ordem será aberta onde deveria estar, ou seja, no nível?
2: Eu tenho erros no registro, quero saber o que significam. [B]1-Sinal de falha de sinais parciais, [/B] [B]2-Centro de dados de conexão falhou [2] e [6][/B] 3-(Não me lembro exatamente, mas diz completo desativado ao modificar a ordem)? Por favor, informe o que fazer nesses ou em outros casos, muito obrigado novamente!
 
TarasBY:

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 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.


 
solnce600:

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.

Você aplicará seu raciocínio depois de ter feito a impressão. Você já fez a impressão (você não precisa mudar nada nela)? - Mostre-me o que há nele.
 

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ê?

 

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:

if( (NormalizeDouble (Bid-massiv[S],Digits) <=0))

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> 
 
solnce600:

Notei que

- no testador no log na impressora - 4 caracteres

Leia a documentação https://docs.mql4.com/ru/common/print

impressão nula( ...)
Imprime alguma mensagem para o diário de bordo do Expert. Os parâmetros podem ser de qualquer tipo. O número de parâmetros não pode exceder 64.

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.
 
TarasBY:

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.

Não tenho bem a certeza do que significa a busca binária. É uma busca em uma matriz bidimensional? Mas eu tenho uma unidimensional.
 
como ajustar o período Fibonacci no mt 4 200 144 144 89 55 34