Discussion de l'article "L'Histogramme des prix (Profile du Marché) et son implémentation en MQL5" - page 10

 
Bonjour, est-ce que quelqu'un sait comment modifier le code de 'ClassExpert' pour construire un profil de marché hebdomadaire ou mensuel ? Je demande de l'aide
 
Bonjour, je ne trouve pas les fichiers attachés ! Seulement le tableau des prix.
 
Thiago Duarte:

Supprimez la commande "Delete()" et cela fonctionnera.

En fait, la fonction delete a été déclarée sans type ; en lui attribuant la valeur "void", elle fonctionnera à nouveau correctement.
 

Je n'ai pas eu le temps de faire le tour de la question, mais j'ai eu l'occasion d'en apprendre un peu plus sur les profils de marché et c'est le meilleur que j'ai trouvé.


J'ai juste fait un changement dans la méthode de calcul du profil, j'ai utilisé le volume tick au lieu de vérifier juste si le prix est passé dans le point. J'ai fait cela parce que si vous voyez, les trades et les différents moments ont des livres différents, vous pouvez le voir dans l'histogramme du volume. On ne peut donc pas se contenter de compter si le prix est là et d'ajouter un point.


Êtes-vous d'accord ?


La modification que j'ai apportée a montré les différences entre les deux méthodes.

 
Bonjour Quelqu'un sait-il s'il est possible de faire un robot qui ne trahit que ces lignes du POC ? si oui, comment faire ? car je teste toutes les variables du fichier ClassPriceHistogram et les valeurs sont toutes nulles, quelqu'un peut-il m'aider ?
 
Bonjour Luiz@Luiz Vinicius Pereira Rocha - Je suis nouveau en programmation, et je travaillais sur un EA qui ne suit que les POC, les valorisations hautes et basses, et j'ai fini par trouver cet indicateur. Cependant, je n'ai pas pu trouver l'endroit où il stocke les points Poc, lorsque j'utilise la fonction print sur certaines variables de l'auteur telles que : Poc_value, des valeurs nulles apparaissent. pouvez-vous m'aider ?
 

Bonjour Dmitry,

tout d'abord : Merci pour votre excellent article et votre travail !

Bien que cela fasse longtemps que vous l'avez publié, il fonctionne très bien.

Ce que j'ai ici pour vous et la communauté est une mise à jour, de sorte que l'histogramme utilise le tickvolume, parce qu'utiliser seulement l'action des prix dans les zones de temps, où le volume est presque nul, n'est pas très utile.

Remplacez le code correspondant dans le fichier ClassPriceHistogram.mqh


bool CPriceHistogram::calculationPOCs()
  {
   int rates_total,rates_high,rates_time,rates_tv,index;
   double iHigh[],iLow[];
   long iTV[];
   datetime iTime[];
// Ïîëó÷àåì äàííûå çà ïåðèîä ñ time_start äî time_end / Nous obtenons les données de time_start à time_end
   int err=0;
   do
     {
      rates_time=CopyTime(NULL,PERIOD_M1,time_start,time_end,iTime);
      rates_high=CopyHigh(NULL,PERIOD_M1,time_start,time_end,iHigh);
      rates_total=CopyLow(NULL,PERIOD_M1,time_start,time_end,iLow);
      
      rates_tv=CopyTickVolume(NULL,PERIOD_M1,time_start,time_end,iTV);
      
      err++;
     }
   while((rates_time<=0 || (rates_total!=rates_high || rates_total!=rates_time || rates_tv!=rates_time)) && err<AMOUNT_OF_ATTEMPTS);
   if(err>=AMOUNT_OF_ATTEMPTS)
     {
      return(false);
     }
   poc_start_time=iTime[0];
   high_day=iHigh[ArrayMaximum(iHigh,0,rates_total)];
   low_day=iLow[ArrayMinimum(iLow,0,rates_total)];
   int count=int((high_day-low_day)/_Point)+1;
// Ïîäñ÷åò äëèòåëüíîñòè íàõîæäåíèÿ öåíû íà êàæäîì óðîâíå / Compte de la durée d'une constatation du prix à chaque niveau
   int ThicknessOfLevel[];    // ñîçäàåì ìàññèâ äëÿ ïîäñ÷åòà òèêîâ / nous créons un tableau pour le nombre de tics
   ArrayResize(ThicknessOfLevel,count);
   ArrayInitialize(ThicknessOfLevel,0);
   for(int i=0;i<rates_total;i++)
     {
      double C=iLow[i];
      long CTV=iTV[i];
      // Distribue le tickvolume de la barre minute sur tous les points possibles de la barre
      // L'incrément par point sera donc le suivant ...
      int CInc=int(((iHigh[i]-iLow[i])/_Point));  
      while(C<iHigh[i])
        {
         int Index=int((C-low_day)/_Point);
         ThicknessOfLevel[Index]+=CInc;
         C+=_Point;
        }
     }


J'admets qu'il s'agit d'un hack rapide et que je n'ai pas testé chaque partie du code, mais jusqu'à présent, cela fonctionne bien.

Voici un exemple avec l'indice SP500 :


Côté gauche, code original. Côté droit avec tickvolume

 

Cher Dmitry

J'espère que vous allez bien.

Serait-il possible d'implémenter des tampons pour les lignes ?

Pour chaque POC, peut-être un Vwap et un Median ?


Je vous remercie d'avance.

 
Juste une petite mise au point... J'ai téléchargé tous les fichiers dans les répertoires appropriés, j'ai compilé et j'ai reçu des erreurs concernant ClassPriceHistogram.mqh. A la ligne 375, j'ai simplement remplacé
CPriceHistogram::Delete()

par

void CPriceHistogram::Delete()

Cela fonctionne maintenant parfaitement avec la version 5.00 Build 3661 de AMP Futures MT5.

@Oleksandr, cet "indicateur" est techniquement un Expert. Les tampons d'indicateurs ne sont pas disponibles dans les Experts. Les tampons peuvent être recréés efficacement en utilisant des tableaux dans les Experts, mais seuls les tampons d'indicateurs réels peuvent être appelés par iCustom, donc pour cela, un nouvel indicateur personnalisé devrait être codé à partir de zéro. Malheureusement, ces deux options dépassent mon niveau de compétence en matière de codage. Je vous souhaite bonne chance dans la recherche d'une aide plus efficace.

 
Existe-t-il un moyen de tracer la vision actuelle ?


MERCI