[ARCHIVE !] Toute question de débutant, pour ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 4. - page 331

 
drknn:

Imaginez que certains indicateurs soient si aiguisés que l'échelle de temps D1 leur fasse peur. :) En bref, vous devez examiner le code - il est fort probable que la cause s'y trouve.
Je suis confus par le fait que tout fonctionne sur d'autres terminaux. Je viens de trouver le bug - le devis pour 1970 est d'environ 14000 GBP.
 

J'ai dû me tromper à nouveau avec les tampons. Veuillez y jeter un coup d'œil.

La tâche est la suivante :

1) Le LSMA est calculé. Si [i]>[i+1] - la couleur est verte, si [i]<[i+1] - la couleur est rouge. Tout est clair avec ça.

2) Je dois trouver la longueur de la série de valeurs vertes et rouges et les stocker dans un tableau. C'est le problème que je n'ai pas encore réussi à résoudre par moi-même.

//+------------------------------------------------------------------+
//|                                                   LSMA_Stat2.mq4 |
//|                                                       silhouette |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "silhouette"
#property link      "http://www.metaquotes.net"

#property copyright "silhouette"
#property link      "http://www.metaquotes.net"

#property indicator_chart_window
#property indicator_buffers 3
#property indicator_color1 Yellow
#property indicator_color2 Green
#property indicator_color3 Red
//+------------------------------------------------------------------+
double BufferYellow[],BufferGreen[], BufferRed[];
int GreenSeries[], RedSeries[], g=0, r=0, gc=0, rc=0;
string Symb;

int init()
  {
   Symb=Symbol();
   
   SetIndexBuffer(0,BufferYellow);
   SetIndexBuffer(1,BufferGreen);
   SetIndexBuffer(2,BufferRed);
   
   SetIndexStyle(0,DRAW_LINE,EMPTY,2);
   SetIndexStyle(1,DRAW_LINE,EMPTY,2);
   SetIndexStyle(2,DRAW_LINE,EMPTY,2);  
   return(0);
  }

int deinit()
  {

   return(0);
  }

int start()
  {
   double tmp1, tmp2, LSMA;
   
   int counted_bars=IndicatorCounted();
   int limit=Bars-counted_bars-1;
   if (limit>1) 
      limit=Bars-1;
      
   for(int i=limit; i>0; i--)
    {
     tmp1=iMA(Symb,Period(),34,0,MODE_SMA,0,i);
     tmp2=iMA(Symb,Period(),34,0,MODE_LWMA,0,i);
     LSMA=3.0*tmp2-2.0*tmp1;
      
     BufferYellow[i]=LSMA;
     BufferGreen[i]=LSMA;
     BufferRed[i]=LSMA;

     if(BufferYellow[i]>BufferYellow[i+1])
      {
       BufferRed[i]=EMPTY_VALUE;
      }
     else if(BufferYellow[i]<BufferYellow[i+1])
      {
       BufferGreen[i]=EMPTY_VALUE;
      }
     else
      {
       BufferRed[i]=EMPTY_VALUE;
       BufferGreen[i]=EMPTY_VALUE;
      }                        
      
     if(BufferGreen[i]!=EMPTY_VALUE && BufferRed[i]==EMPTY_VALUE)
      {
       g++;
      }
     if(BufferGreen[i]==EMPTY_VALUE && BufferRed[i]!=EMPTY_VALUE)
      {
       r++;
      }
     if(BufferGreen[i]==EMPTY_VALUE && BufferRed[i]==EMPTY_VALUE)
      {
       if(BufferGreen[i+1]!=EMPTY_VALUE)
        {
         GreenSeries[gc]=g;
         gc++;
         g=0;
        }
       if(BufferRed[i+1]!=EMPTY_VALUE)
        {
         RedSeries[rc]=r;
         rc++;
         r=0;
        }
      }              
    }
   return(0);
  }
 
silhouette:

J'ai dû me tromper à nouveau avec les tampons. Veuillez y jeter un coup d'œil.

La tâche est la suivante :

1) Le LSMA est calculé. Si [i]>[i+1] - la couleur est verte, si [i]<[i+1] - la couleur est rouge. Tout est clair avec ça.

2) Je dois trouver la longueur de la série de valeurs vertes et rouges et les stocker dans un tableau. C'est le problème que je n'ai pas encore réussi à résoudre par moi-même.


Comment ne pas aimer cet indicateur ?
 
Vinin:

Pourquoi n'aimez-vous pas cet indicateur ?

Vinin, en fait je l'ai fait selon ton exemple, mais le point est différent : ce n'est pas la méthode de calcul en elle-même qui m'importe (que ce soit le MA le plus simple), mais la solution au problème du point 2.

J'ai besoin d'obtenir un tableau qui stocke la longueur des séries vertes ou rouges pour une analyse ultérieure.

 
Veuillez me conseiller. Il y a 2 graphiques d'équilibre virtuel (pour les ordres de vente et d'achat) ; dans la vie réelle, ils peuvent diverger fortement. Comment puis-je les traduire en unités relatives pour pouvoir chronométrer le moment du croisement de ces graphiques.
 
silhouette:

Vinin, je l'ai effectivement fait selon votre exemple, mais le point est différent : ce n'est pas la méthode de calcul en elle-même qui m'importe (qu'elle soit la plus simple MA), mais la solution au problème du point 2.

J'ai besoin d'obtenir un tableau, qui stocke la longueur des séries vertes ou rouges pour une analyse ultérieure.


Pourquoi avez-vous besoin d'un tableau ?
 
Vinin:

Pourquoi avez-vous besoin d'un tableau ?
Pour l'analyse statistique ultérieure. Dans Excel, par exemple.
 

Il existe une bibliothèque pour le commerce de la souris https://www.mql5.com/ru/code/9671

Je n'arrive absolument pas à le connecter, aidez-moi s'il vous plaît.

Je télécharge tous les fichiers dont j'ai besoin dans le dossier expert puis je compile, mais les indicateurs ont toujours des fenêtres noires sans données.

Il s'agit manifestement d'une erreur enfantine, mais je n'arrive pas à la trouver pendant 24 heures.


 
TheXpert:

Il n'y a pas besoin de plier quoi que ce soit. L'archive contient déjà tous les fichiers, tout ce que vous devez faire est de décompresser l'archive dans le dossier du terminal et de compiler.

Seuls les fichiers indicateurs sont compilés, les bibliothèques (mqh) n'ont pas besoin d'être compilées. Essayez de mettre un nouveau terminal et entraînez-vous dessus.

 

Pouvez-vous me donner un indice ? Il y a un bouton "MQL4.community" dans le terminal et en cliquant dessus, Word s'ouvre avec la page correspondante, mais lorsque j'essaie de cliquer sur n'importe quel lien, une fenêtre s'ouvre et me dit qu'il y a une restriction sur mon ordinateur ! ? ??

Comment y faire face ? Merci.