[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate. Non posso andare da nessuna parte senza di te. - pagina 720

 
artmedia70:
Vedo che stai già prendendo una decisione da solo
Sto arrivando alla decisione... Ma è come un cane: capisco quello che capisco, ma non posso dirlo, cioè non posso rappresentarlo nel codice).
Forse è il caldo che mi fa sciogliere il cervello).
 
Shuba:
Mi sto avvicinando alla soluzione... È come un cane: capisco quello che capisco, ma non posso dirlo, cioè non posso rappresentarlo nel codice).
Forse è il caldo che mi fa sciogliere il cervello).
Come si cercano i frattali?
 
artmedia70:
Come si cercano i frattali?

Cerco i frattali usando l'indicatore ZIGZAG-FRACTALS con questa funzione:

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;                           // Последний посчитанный бар запоминаем
  
  }
 

Ora ho aggiunto alle linee: if(ZZCur == High[i] && UpCount < 2) e if(ZZCur == Low[i] && DnCount < 2) controllando il prossimo frattale superiore o inferiore al primo trovato.

Abbiamo le seguenti linee

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

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

Ma alla fine la ricerca è in qualche modo inadeguata :(

Nell'immagine una spessa linea bianca mostra come dovrebbe essere e una sottile linea verde mostra come è fatto...


 
Shuba:

Cerco i frattali usando l'indicatore ZIGZAG-FRACTALS con questa funzione:

Prova a cercare con questa funzione:

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. 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);
}

Questa funzione restituisce il numero di barra del frattale. Prima la chiamate con il parametro nf = 0 - l'ultimo frattale sarà trovato, e poi chiamate questa funzione nel ciclo, dove nf = contatore di cicli da 1 a ... per tutto il tempo necessario. Nel corpo del ciclo, controlla se il prossimo frattale trovato corrisponde ai criteri di cui hai bisogno e se lo fa, esci dal ciclo. Dopo l'analisi avrete i numeri delle barre di due frattali di cui avete bisogno e fate con loro quello che volete.

 
artmedia70:

Prova a cercare con questa funzione:

La funzione restituisce il numero di barra del frattale. Prima la chiamate con il parametro nf = 0 - l'ultimo frattale sarà trovato, e poi chiamate questa funzione nel ciclo, dove nf = contatore di cicli da 1 a ... per tutto il tempo necessario. Nel corpo del ciclo, controlla se il prossimo frattale trovato corrisponde ai criteri di cui hai bisogno e se lo fa, esci dal ciclo. Dopo l'analisi avrete i numeri delle barre di due frattali di cui avete bisogno e fate con loro quello che volete.


Grazie) Lo proverò ora.
 
Vinin:


Nel tester o nella demo?

Nel tester il punto sugli altri strumenti sarà 0


Era nel tester,... Non ho avuto la possibilità di usarlo, ma ho un sacco di problemi con esso. Così, come risultato, ho fatto un sacco di problemi con il mio codice di trawl e ho preso la funzione di monitoraggio delle coppie di trawl di KimIV. Ora tutto funziona su demo ))

Grazie a tutti per il vostro aiuto, le vostre spiegazioni sono molto utili.

 

Sembra aver risolto il problema, ma la domanda rimane...

Come faccio a deinizializzare una variabile per riutilizzarla?

 

Non puoi, quando inizializzi una variabile, alloca solo un'area di RAM, quindi perché riassegnarla? Basta azzerare la variabile e usarla tutte le volte che si vuole. In effetti, qual è il problema? Perché deinizializzare una variabile? Non ha senso.

 
ToLik_SRGV:

Perché deinizializzare una variabile?



Condizione se

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

qui facciamo qualcosa

altrimenti se un'altra condizione

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

fare qualcos'altro.

Il punto non è moltiplicare le variabili, molte condizioni e contatori.

Motivazione: