[ARQUIVO] Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 3. - página 366

 

Boa tarde!

Você pode me dizer como encontrar 3 máximos (ou mínimos) em um gráfico para um determinado período, lembrá-los e usá-los para cálculos adicionais?

Ou me dê um link para o código.

Procurei o código no fórum, mas ele não funcionou através de uma busca.

Obrigado.

 
LOA:

Boa tarde!

Você pode me dizer como encontrar 3 máximos (ou mínimos) em um gráfico para um determinado período, lembrá-los e usá-los para cálculos adicionais?

Ou me dê um link para o código.

Procurei o código no fórum, mas ele não funcionou através da busca.

Obrigado.


Por exemplo, estabeleci um período de um dia sobre o Eurobucks. Aberto M15. Dê uma olhada na imagem abaixo. Os limites do dia são indicados por linhas verticais vermelhas. O indicador fractal mostra que há mais de três mínimos e máximos neste intervalo. Então, como o código que você está procurando deve descobrir qual desses extremos você precisa?

 
LOA:

Boa tarde!

Você pode me dizer como encontrar 3 máximos (ou mínimos) em um gráfico para um determinado período, lembrá-los e usá-los para cálculos adicionais?

Ou me dê um link para o código.

Procurei o código no fórum, mas ele não funcionou através de uma busca.

Obrigado.

https://docs.mql4.com/ru/series/iHighest

https://docs.mql4.com/ru/series/iLowest
 

Vladimir e Vadimir, muito obrigado por sua resposta!

Um máximo que eu encontro...

1.

mas_UP[]//array of upper extrema.

int index = iHighest(NULL,0,2,MODE_HIGH,20,i);
      double MAX = mas_UP[index];//первый максимум

2. ou assim (com fractais)

int size_up=ArrayRange(mas_UP,0);
      for (s=i;s<=size_up;s++);
      int index=ArrayMaximum(mas_UP);
      double MAX = UP[s];

Mas como proceder? Eu acho difícil (ainda estou aprendendo)

Posso pensar em uma maneira de zerar o elemento que foi encontrado como máximo e depois percorrer novamente a mesma matriz - ele encontrará o segundo máximo, depois o terceiro.....

if (MAX>0)
      int n=n+1; //счётчик экстремумов
      mas_UP[index]=0;

Mas não tenho certeza de que seja esse o caso.

 
LOA:

Vladimir e Vadimir, muito obrigado por sua resposta!

Um máximo que eu encontro...

1.

2. ou assim (com fractais)

Mas como proceder? Estou perdido (ainda estou aprendendo).

Posso pensar em um caminho para zerar um elemento que foi encontrado como máximo, e depois percorrer a mesma matriz novamente - encontrar o segundo máximo, depois o terceiro.....

Mas não tenho certeza de que seja esse o caso.


Então você quer os três últimos máximos em um determinado intervalo, ou alguns outros máximos?
 
drknn:

Então você quer os três últimos máximos em um determinado intervalo, ou qualquer outro máximo?


Três altos durante o período, não os mais recentes. Ou melhor, não necessariamente a mais recente.

 
LOA:


Três máximos em um período, não o último. Ou melhor, não necessariamente os últimos.


Oh. Bem, eu lhe darei o desafio completo.

Há um determinado intervalo de tempo. Três amostras máximas deste intervalo são necessárias.

Para resolver este problema, você precisará das seguintes coisas:

- Um algoritmo para reconhecer os limites de um determinado intervalo

- Um algoritmo para encontrar os máximos

- Um algoritmo para reconhecer os máximos desejados a partir dos máximos encontrados.

P.S.

Como você não sabe de antemão quais serão os máximos necessários e como exatamente os máximos serão identificados, você não encontrará o código pronto. Isto significa que a solução dos problemas acima em seqüência lhe dará exatamente o código que você precisa.

 
drknn:


Caramba! Bem, eu lhe darei todo o problema.

Há um determinado intervalo de tempo. Você precisa de três amostras máximas a partir deste intervalo.

Para resolver este problema, você precisará das seguintes coisas:

- Um algoritmo para reconhecer os limites de um determinado intervalo

- Um algoritmo para encontrar os máximos

- Um algoritmo para reconhecer os máximos adequados a partir dos máximos encontrados.


O problema formulado corretamente é quase uma solução. Obrigado.

Com o primeiro eu posso lidar, o segundo - também. Mas o último ponto - eu sinceramente não sei, mas vou pensar.

int n=0;//счётчик максимумов
      if (MAX>0)
      int n=n+1;
      mas_UP[index]=0;

Esta opção é a idéia certa, ou devo cavar em outra direção, ou seja

para zerar o elemento da matriz, que foi encontrado como máximo, e depois percorrer a mesma matriz novamente - encontraremos o segundo máximo, depois o terceiro.....

 
LOA:


Um problema formulado corretamente é quase uma solução. Obrigado.

Eu posso lidar com o primeiro, o segundo também. O último ponto - sinceramente, não sei, mas vou pensar sobre isso.

Esta é a idéia correta, ou eu cavo em uma direção diferente, ou seja

zerar o elemento da matriz, que foi encontrado como máximo, e depois percorrer a mesma matriz novamente - encontraremos o segundo máximo, depois o terceiro.....


Não esteja nada interessado no código neste momento - faça um algoritmo - como exatamente o programa deveria? Caso contrário, você vai estagnar. Qualquer programa é um idiota - ele precisa de instruções precisas. Para fazer isso, precisamos saber exatamente o que o programa deve fazer. E só então podemos escolher como colocá-lo no código do programa.
 
drknn:

Você pode não estar interessado no código agora - faça um algoritmo - exatamente como o programa deve ser feito. Caso contrário, você vai estagnar no lugar. Qualquer programa é um idiota - ele precisa de instruções precisas. Para fazer isso, precisamos saber exatamente o que o programa deve fazer. E só então podemos escolher como colocá-lo no código do programa.

Ok. Teremos o algoritmo amanhã, porque já são duas e meia da manhã em São Petersburgo e estamos sem energia.
Razão: