Comment algorithmez-vous la détection des clusters d'alimentation MA ? - page 15

 

Question résolue, l'erreur était d'ajouter plus de paramètres de contrôle à la classe lors du déchargement dans l'EA !

Bonjour, veuillez me conseiller - qu'est-ce que je n'ai pas attrapé ?

J'ai téléchargé les données en .bat, puis je les charge, mais seule la première entrée est correcte, ensuite les données ne coïncident pas.


La signification de ce code est la suivante

indicateur

- Remplissez les nouvelles données si elles sont dans le fichier.

le conseiller

- Transfert de données vers une classe.


Dans l'indicateur, il est téléchargé en tant que -

//+------------------------------------------------------------------+
//| Выгружаю данные с файла если он есть                             |
//+------------------------------------------------------------------+
void TextCsv0(int size)
  {
   ArrayFree(cand_buff);
   ArrayResize(cand_buff,0);
   long count=FileLoad("test.bin",cand_buff);
   if(count!=-1)
     {
      for(int i=0; i<count; i++)
         PrintFormat("%s\t%G\t%G\t%G\t%G\t%G\t%G\t%G\t%G\t%G\t%I64u",
                     TimeToString(cand_buff[i].time,TIME_DATE|TIME_SECONDS),
                     cand_buff[i].bar,cand_buff[i].period,cand_buff[i].praceMA);
     }
   TextCsv1(size,(int)count);
  }
//+------------------------------------------------------------------+
//| Загружаю новые данные                                            |
//+------------------------------------------------------------------+
void TextCsv1(int size,int count)
  {
   int _count=0;
   if(count==-1) count=0;
   for(int i=0; i<size; i++)
      if(TextCsv2(count,i)==true)
        {
         ArrayResize(cand_buff,count+(int)_count+1);
         cand_buff[count+_count].period=Alt[i].period;
         cand_buff[count+_count].bar=Alt[i].bar;
         cand_buff[count+_count].praceMA=Alt[i].praceMA;
         cand_buff[count+_count].time=Alt[i].time;
         cand_buff[count+_count].High=Alt[i].High;
         cand_buff[count+_count].Low=Alt[i].Low;
         cand_buff[count+_count].type=Alt[i].type;
         _count++;
        }
   TextCsv(size,_count,count);
  }
//+------------------------------------------------------------------+
//| Проверка на новые данные                                         |
//+------------------------------------------------------------------+
bool  TextCsv2(long count,int i)
  {
   bool fl=true;
   for(int j=(int)count-1; j>=0; j--)
      if(cand_buff[j].period==Alt[i].period)
         if(cand_buff[j].time==Alt[i].time)
            return(false);
   return(true);
  }
//+------------------------------------------------------------------+
//| Загрузка                                                         |
//+------------------------------------------------------------------+
void TextCsv(int size,int _count, int count)
  {
//--- откроем файл для записи массива структуры в файл (если его нет, то создастся автоматически)
   ResetLastError();
   int file_handle=FileOpen("test.bin",FILE_READ|FILE_WRITE|FILE_BIN);//FileOpen("test "+"//"+_symbol(),FILE_READ|FILE_WRITE|FILE_BIN|FILE_COMMON);
   if(file_handle!=INVALID_HANDLE)
     {
      FileSeek(file_handle,0,SEEK_END);
      //--- подготовим счетчик количества байт
      uint counter=0;
      //--- в цикле запишем значения массива
      for(int i=0; i<_count; i++)
         counter+=FileWriteStruct(file_handle,cand_buff[count+i]);
      //  PrintFormat("В файл %s записано %d байт информации",_symbol(),counter);
      PrintFormat("Всего байтов: %d * %d * %d = %d, %s",size,4,7,size*4*7,size*4*7==counter ? "Верно" : "Ошибка");
      //--- закрываем файл
      FileClose(file_handle);
      // PrintFormat("Данные записаны, файл %s закрыт",_symbol());
     }
   else
      PrintFormat("Не удалось открыть файл %s, Код ошибки = %d",_symbol(),GetLastError());
  }

Dans le Conseiller Expert, téléchargez-le comme suit -

//+------------------------------------------------------------------+
//| Выгрузка                                                         |
//+------------------------------------------------------------------+
void LoadFail(datetime InpTimeDrawTo)
  {
   ArrayFree(buf0);
   long count=FileLoad("test.bin",buf0);
   if(count!=-1)
     {
      for(int i=0; i<count; i++)
        {
         PrintFormat("%s\t%G\t%G\t%G\t%G\t%G\t%G\t%G\t%G\t%I64u\t%d\t%I64u",
                     TimeToString(buf0[i].time,TIME_DATE|TIME_SECONDS),
                     buf0[i].bar,buf0[i].period,buf0[i].praceMA,buf0[i].High,buf0[i].Low,buf0[i].type);
        }
     }
  }
 
Vous devriez au moins avoir un peu de code pour pouvoir l'exécuter par vous-même, le tordre, fouiner...
 

Bonjour, continuant à maîtriser un moyen de reconnaître les harnais MA

A pris un tableau de 400 MAs d'une barre avec des valeurs de période : - sm.d[per-1].m[bar]

Je l'ai tracé sur le graphique XY pour voir comment identifier les paquets. La plage va de la 4ème à la 400ème MA d'une barre.

Axe X - période 4-400



Différencié, j'ai obtenu ce tableau

Je comprends que les courbes formées sont un flagelle.


La différenciation se fait à l'aide d'un programme spécial, mais je ne peux pas utiliser mql. Peut-être, qui sait comment le faire dans mql5 ?

Bien qu'il ne soit pas non plus facile de déterminer la portée de cet arrondi ! !! Quelqu'un a-t-il des suggestions à faire ?

Comment déterminer cette fourchette ?

Ou celui-là ?


 
Mikhail Toptunov:

Bonjour, continuant à maîtriser un moyen de reconnaître les harnais MA

A pris un tableau de 400 MAs d'une barre avec des valeurs de période : - sm.d[per-1].m[bar]

Je l'ai tracé sur le graphique XY pour voir comment identifier les paquets. La plage va de la 4ème à la 400ème MA d'une barre.

Axe X - période 4-400



Différencié, j'ai obtenu ce tableau

Je comprends que les courbes formées sont un flagelle.


La différenciation se fait à l'aide d'un programme spécial, mais je ne peux pas utiliser mql. Peut-être, qui sait comment le faire dans mql5 ?

Bien qu'il ne soit pas non plus facile de déterminer la portée de cet arrondi ! !! Quelqu'un a-t-il des suggestions à faire ?

Comment déterminer cette fourchette ?

Ou celui-là ?


"Prodifférencié" - pouvez-vous préciser comment cela se fait ?
 

Je pense - équation différentielle ordinaire (différenciation et intégration)

Dérivée:1(X),2(Y)

 
Mikhail Toptunov:

Je pense - équation différentielle ordinaire (différenciation et intégration)

Dérivée:1(X),2(Y)

par exemple, il y a un devis

comment faire la différence ?

sans paquet, par code ?

 
Renat Akhtyamov:

par exemple, il y a une citation

comment faire la différence ?

sans paquets, par code ?

Désolé, c'est à moi que vous demandez ça ?

- Je ne suis pas au courant. Je me suis un peu demandé, COMMENT ?

 
Mikhail Toptunov:

Je suis désolé, vous me le demandez ?

- Je ne suis pas au courant. Je me suis un peu demandé, COMMENT ?

Oui. Intéressant.

ici, sur Google.

Différenciation des séries temporelles - passage d'une série X(t) à une série de différences X(t) - X(t-1)

 
Renat Akhtyamov:

Oui. Intéressant.

ici, j'ai cherché sur Google

Différenciation d'une série temporelle - passer d'une série X(t) à une série de différences X(t) - X(t-1)

Je ne comprends pas !

 

Chers professionnels, comment choisissez-vous cette gamme ?