[AVISO FECHADO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Não posso ir a lugar algum sem você. - página 720

 
artmedia70:
Vejo que você mesmo já está chegando a uma decisão.
Estou chegando à decisão... Mas é como um cão: eu entendo o que entendo, mas não posso dizer, isto é, não posso representá-lo no código).
Talvez seja o calor que faz meu cérebro derreter).
 
Shuba:
Estou me aproximando da solução... É como um cão: eu entendo o que entendo, mas não posso dizê-lo, ou seja, não posso representá-lo no código).
Talvez seja o calor que faz meu cérebro derreter).
Como você procura os fractais?
 
artmedia70:
Como pesquisar fractals?

Procuro fractais usando o indicador ZIGZAG-FRACTALS com esta função:

void GetSignal()
  {
  int UpCount = 0, DnCount = 0;                                        // счетчик пиков ЗЗ
  int i = 0;                                                              // счетчик баров
  double ZZFirst = 0;                            // Значение первого найденного экстремума
  ArrayInitialize(ZZVUp, 0);                       // Значения верхних экстремумов зигзага
  ArrayInitialize(ZZVDn, 0);                         //Значения нижних экстремумов зигзага
  
  while(i < Bars && (UpCount < 2 || DnCount < 2))
    {
    double ZZCur = iCustom(NULL,0,"BW ZIGZAG-FRACTALS_2",0,i);
    if(ZZCur != 0)                                                   // найден экстремум
      {
      if(ZZFirst != 0)                             // Это не первый найденный экстремум
        {
        if(ZZCur == High[i] && UpCount < 2)
          {
          ZZVUp[UpCount] = ZZCur;
          ZZNUp[UpCount] = i;
          UpCount++;
          }         
          if(ZZCur == Low[i] && DnCount < 2)
            {
            ZZVDn[DnCount] = ZZCur;
            ZZNDn[DnCount] = i;
            DnCount++;
            }         
        }
      else
        ZZFirst = ZZCur; 
      }
    i++;
    } 
  if(i == Bars) return;                           // Последний посчитанный бар запоминаем
  
  }
 

Agora eu adicionei às linhas: if(ZZCur == Alto[i] && UpCount < 2) e if(ZZCur == Baixo[i] && DnCount < 2) verificando para o próximo fractal mais alto ou mais baixo do que o primeiro encontrado.

Temos as seguintes linhas

if(ZZCur == Alto[i] && ZZCur > ZZFirst && UpCount < 2) e

if(ZZCur == Baixa[i] && ZZCur < ZZFirst && DnCount < 2)

Mas, no final, a busca é de alguma forma inadequada :(

Na foto uma linha branca grossa mostra como deve ser e uma linha verde fina mostra como se faz...


 
Shuba:

Eu procuro fratais usando o indicador ZIGZAG-FRACTALS com esta função:

Tente pesquisar com esta função:

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 13.08.2008                                                     |
//|  Описание : Возвращает номер бара фрактала по его номеру.                  |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента        ("" или NULL - текущий символ)     |
//|    tf - таймфрейм                       (    0       - текущий ТФ)         |
//|    nf - номер фрактала                  (    0       - последний)          |
//+----------------------------------------------------------------------------+
int GetFractalBar(string sy="0", int tf=0, int nf=0) {
  if (sy=="" || sy=="0") sy=Symbol();
  double f=0;
  int    i, k=iBars(sy, tf), kf;

  for (i=2; i<k; i++) {
    f=iFractals(sy, tf, MODE_LOWER, i);
    if (f!=0) {
      kf++;
      if (kf>nf) return(i);
    }
    f=iFractals(sy, tf, MODE_UPPER, i);
    if (f!=0) {
      kf++;
      if (kf>nf) return(i);
    }
  }
  Print("GetFractalBar(): Фрактал не найден");
  return(-1);
}

Esta função retorna o número de barra do fractal. Primeiro você a chama com o parâmetro nf = 0 - o último fractal será encontrado, e então você chama esta função no laço, onde nf = o contador de ciclos de 1 a ... o tempo que for necessário. No corpo do laço, verifique se o próximo fractal encontrado corresponde aos critérios necessários e, se corresponder, saia do laço. Após a análise, você terá os números de barra de dois fractais de que precisa e fará com eles o que quiser.

 
artmedia70:

Tente pesquisar com esta função:

A função retorna o número de barra do fractal. Primeiro você a chama com o parâmetro nf = 0 - o último fractal será encontrado, e depois você chama esta função no laço, onde nf = contador de ciclos de 1 a ... o tempo que for necessário. No corpo do laço, verifique se o próximo fractal encontrado corresponde aos critérios necessários e, se corresponder, saia do laço. Após a análise, você terá os números de barra de dois fractais de que precisa e fará com eles o que quiser.


Obrigado) Vou tentar agora.
 
Vinin:


No testador ou na demonstração?

No testador, o ponto sobre os outros instrumentos será 0


Estava no testador,... Não tenho nenhuma informação sobre isso, mas tenho certeza de que será útil para mim. Então, como resultado, tive muitos problemas com meu código de arrasto e assumi a função de monitoramento de pares de arrasto do KimIV. Agora tudo funciona em demonstração ))

Obrigado a todos por sua ajuda, suas explicações são muito úteis.

 

Parece ter resolvido o problema, mas a questão permanece...

Como desinicializar uma variável para reutilização?

 

Você não pode, quando você inicializa uma variável, ela apenas aloca uma área de RAM, então por que reatribuí-la? Basta reiniciar a variável para zero e usá-la quantas vezes quiser. De fato, qual é o problema? Por que deinicializar uma variável? Isso simplesmente não faz sentido.

 
ToLik_SRGV:

Por que deinicializar uma variável?



A condição se

for(int a=0;a<8;a++)

aqui nós fazemos algo

caso contrário, se outra condição

for(int a=0;a<8;a++)

fazer algo mais.

O objetivo não é multiplicar variáveis, muitas condições e contadores.

Razão: