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

 
Igor Zakharov:

Será que ele faz subir a história?

Provavelmente sim. Mas não tenho 100% de certeza. Como você verifica isso, as impressoras mudam o número de barras?

Igor Zakharov:

Você não tem um recálculo para este caso.

Obrigado, parece que sim.

Igor Zakharov:

E os novos itensde proteção indicadores que aparecem são preenchidos com lixo.

Parece não só com os novos, mas também com os antigos. Tenho a sensação de que não só as setas são desenhadas aleatoriamente, mas a linha indicadora quebra enquanto não deveria. Favor aconselhar como organizar um recálculo em caso de troca de histórico ou onde procurar, por exemplo.

 
Alexey Viktorov:

Eu cometi um erro ao inserir este suplemento separadamente. Você só deve colocar as setas quando o buffer mudar. Ao mesmo tempo, não se esqueça de colocar um valor vazio no buffer em todos os outros casos.

Seria até melhor colocar um valor vazio de uma vez, e preencher um dos amortecedores com uma seta quando a tendência mudar.

Obrigado por sua resposta.

Verifiquei o indicador original e afinal não fui eu quem fez asneira, mas originalmente ele estava escrito de forma errada. Isto é, mesmo sem minhas modificações, ela também se desmancha ao trocar o histórico.

 
Esta é a primeira vez que eu faço uma pergunta e não ouço nada de volta. Algum tipo de ajuda seletiva para os recém-chegados.
 
novichok2018:
Esta é a terceira vez que eu faço uma pergunta e obtenho silêncio em resposta. Esta é uma espécie de ajuda seletiva para iniciantes.

a primeira coisa que chama a atenção é que você cria um objeto gráfico de linha de tendência com o nome LowLine e não o apague mais tarde ou crie objetos similares com nomes diferentes...

Não é possível executar ObjectCreate() com o mesmo nome várias vezes - ele só funcionará na primeira vez, depois haverá um erro.


Há também um problema com a determinação dos fractais, você tenta encontrar o fractal na barra nº 2 após a abertura da barra, geralmente executa um ciclo nas barras com uma chamada do indicador fractal e quebra o ciclo quando o primeiro fractal é encontrado, e obtém o número da barra, na qual o fractal estava

 
Igor Makanu:

Há também um problema com a definição de fractais, você tenta encontrar um fractal na abertura #2 da barra, geralmente faz um ciclo nas barras com a chamada do indicador fractal e quebra o ciclo quando o primeiro fractal é encontrado, e obtém o número da barra em que o fractal estava

Obrigado!

Na verdade, não entendo como obter os números das barras onde o fractal apareceu, porque aparecem duas barras mais tarde. É por isso que eu o pego no segundo bar. O alerta exibe o número de fractais em um período específico, mas como posso definir o ponto do segundo fractal para traçar a linha de tendência? Não está claro como fazê-lo de acordo com sua recomendação.

O chamado indicador fractal desenha fractal em todo o histórico disponível. Estou tentando resolver a tarefa de traçar a linha de tendência por um fractal que cai dentro de um certo período do dia, levando em conta os fractais do dia anterior e reconstruindo automaticamente a linha de acordo com o último fractal. E há uma falta de conhecimento.

 
novichok2018:

Obrigado!

Realmente, eu não entendo como obter os números das barras onde o fractal apareceu, pois parece duas barras atrasadas. É por isso que eu o pego no segundo bar. O alerta exibe o número de fractais em um período específico, mas como posso definir o ponto do segundo fractal para traçar a linha de tendência? Não está claro como fazê-lo de acordo com sua recomendação.

O chamado indicador fractal desenha fractal em todo o histórico disponível. Estou tentando resolver a tarefa de traçar a linha de tendência por um fractal que cai dentro de um certo período do dia, levando em conta os fractais do dia anterior e reconstruindo automaticamente a linha de acordo com o último fractal. E há uma falta de conhecimento.

Você tem certeza de que precisa pegar no SEGUNDO bar?

Aqui estão os testes:

Fórum sobre comércio, sistemas comerciais automatizados e estratégias comerciais de teste

MQL5: Exemplos.

Vladimir Karputov, 2018.03.19 05:54

  • 2.3. iFractals. Dois fatores importantes a considerar

Há dois fatores a serem considerados quando se trabalha com fractais:

Fator um

Fractal nas barras de "rates_total-5" a"rates_total-3" não pode ser redesenhado - segue o desenho do indicador"Fractals.mq5" (o código aberto do indicador está localizado em [pasta de dados]MQL5\Indicadores\Exemplos\Fractals.mq5) - como as barrasentre "rates_total-5" e"rates_total-3" já estão formadas

//---
   if(prev_calculated<7)
     {
      limit=2;
      //--- clean up arrays
      ArrayInitialize(ExtUpperBuffer,EMPTY_VALUE);
      ArrayInitialize(ExtLowerBuffer,EMPTY_VALUE);
     }
   else limit=rates_total-5;

   for(i=limit;i<rates_total-3 && !IsStopped();i++)
     {
      //---- Upper Fractal
      if(high[i]>high[i+1] && high[i]>high[i+2] && high[i]>=high[i-1] && high[i]>=high[i-2])
         ExtUpperBuffer[i]=high[i];
      else ExtUpperBuffer[i]=EMPTY_VALUE;

      //---- Lower Fractal
      if(low[i]<low[i+1] && low[i]<low[i+2] && low[i]<=low[i-1] && low[i]<=low[i-2])
         ExtLowerBuffer[i]=low[i];
      else ExtLowerBuffer[i]=EMPTY_VALUE;
     }
//--- OnCalculate done. Return new prev_calculated.
   return(rates_total);
  }

Fractais

Fig. 1. É assim que funciona o indicador "Fractais". Numeração dos arquivos a partir da posição do indicador "Fractals.mq5".

Isso significa que quando recebemos dados no Expert Advisor do indicador iFractals, nas barras "rates_total-5" e "rates_total-4" (numeração das barras da posição do indicador "Fractals.mq5"), haverá um fractal, que é garantido não ser reenviado.


E aqui é o momento, quando o fractal é formado na barra "rates_total-5" - no momento, quando há uma nova barra à direita, 2 de janeiro, 03:00 (numeração dos arquivos a partir da posição do indicador "Fractals.mq5") :

Fractais, 5 bar

Fig. 2. O momento em que o fractal é formado na barra "tarifas_total-5".

O segundo fator

O indicador fractal usa EMPTY_VALUE em vez de "0,0" como um valor vazio. A exceção é a primeira inicialização, quando os buffers indicadores são inicializados com zero (isto é feito não pelo indicador "Fractals.mq5", mas pela MQL5 ao criar um array e ligá-lo com um buffer indicador).


 
novichok2018:

Também não está claro como fazer isso por sua recomendação.

Aqui está uma função para encontrar um fractal, apenas para um Expert Advisor, que funcionou para mim

https://www.mql5.com/ru/forum/160683/page968#comment_13214633

 
Vladimir Karputov:

Você tem certeza de que deveria estar pegando no SEGUNDO bar?

Aqui estão os testes:


Sim, obrigado. Não há redesenho na terceira barra. Só que isso não muda a essência do problema.

 
Igor Makanu:

Aqui está uma função para encontrar um fractal, apenas para um EA, funcionou para mim

https://www.mql5.com/ru/forum/160683/page968#comment_13214633

Obrigado, funciona.

Só não entendo como refletir a aparência de um novo fractal no código. Porque barfrup_1 é sempre menor que barfrup_2, por isso o salto na numeração barfrup_1 quando um novo fractal aparece não dá nada, porque permanece menor que barfrup_2.

Mais uma coisa: não entendo como extrair os altos valores para barfrup_1 e barfrup_2.

 
novichok2018:

Mais uma coisa: não entendo como extrair valores altos para barfrup_1 e barfrup_2.

Lançar um indicador fractal no gráfico e um EA de teste com esta função

e reimprimir os valores encontrados, passando para minha funçãoMODE_UPPER e MODE_LOWER

novichok2018:

Obrigado, funciona.

Eu só não entendo como tornar a ocorrência de um novo fractal no código.

É preciso lembrar o tempo do bar; quando um novo bar aparece, a numeração muda, enquanto o tempo de abertura do bar é sempre constante.

Isto é, quando você abrir meu código, lembre-se da hora da barra onde o fractal foi detectado, depois abra-o novamente - encontre a barra e compare a hora da barra com a hora lembrada - a hora é diferente, isso significa um novo fractal