Questions des débutants MQL5 MT5 MetaTrader 5 - page 744

 
Marat Sultanov:
Il y a une section du code là-dedans que je n'ai pas comprise. Vous devez le corriger vous-même.


Pouvez-vous me montrer ce qu'exactement ....

 
Rafael Sahibgareev:


Pouvez-vous me montrer ce qu'exactement ....


Télécharger le code -Marat Sultano y a écrit ce qui n'est pas clair.
 

Marat, merci pour votre aide avec le code .......

Une autre question, s'il vous plaît montrez-moi comment arranger correctement une boucle pour la section de code suivante .......

//--- цикл расчета 
      
        {
        
         //--- если предыдущая свеча имеет параметры больше MSC
         if(IsLossCandle)
            if(ASSHighBuf[i-1]>=max_size_candel)
               BufferLossCanle[i]=low[i-1];
                 {
                  if(IsTopShadow)
                     if((ASSOpenBuf[i-1]==ASSCloseBuf[i-1]) && IMaDifBuff[i]-IMaDifBuff[i-1]>0 || (ASSLowBuf[i-1]==0 && IMaDifBuff[i]-IMaDifBuff[i-1]>0))
                        BufferTop[i]=low[i-1];
                  if(IsLowerShadow)
                     if((ASSOpenBuf[i-1]==ASSCloseBuf[i-1]) && IMaDifBuff[i]-IMaDifBuff[i-1]<0 || (ASSLowBuf[i-1]==0 && IMaDifBuff[i]-IMaDifBuff[i-1]<0))
                        BufferLower[i]=high[i-1];
                 }
        }


//--- return value of prev_calculated for next call 
   return(rates_total);
  }
 
Rafael Sahibgareev:

Marat, merci pour votre aide avec le code .......

Autre question, montrez-moi comment organiser correctement une boucle pour le fragment de code suivant .......

C'est comme ça :

//--- цикл расчета
   const int Limit = fmax(prev_calculated, 1);

   for(int i=Limit; i<rates_total; ++i)
   {
      //--- если предыдущая свеча имеет параметры больше MSC
      if(IsLossCandle)
      {
         if(ASSHighBuf[i-1]>=max_size_candel) BufferLossCanle[i]=low[i-1];

         if(IsTopShadow)
         {
            if((ASSOpenBuf[i-1]==ASSCloseBuf[i-1] && IMaDifBuff[i]-IMaDifBuff[i-1]>0) || (ASSLowBuf[i-1]==0 && IMaDifBuff[i]-IMaDifBuff[i-1]>0))
            {
               BufferTop[i]=low[i-1];
            }
         }

         if(IsLowerShadow)
         {
            if((ASSOpenBuf[i-1]==ASSCloseBuf[i-1] && IMaDifBuff[i]-IMaDifBuff[i-1]<0) || (ASSLowBuf[i-1]==0 && IMaDifBuff[i]-IMaDifBuff[i-1]<0))
            {
               BufferLower[i]=high[i-1];
            }
         }
      }
   }

//--- return value of prev_calculated for next call 
   return(rates_total);
}

Je suis juste confus par un fragment de votre code :

if(ASSHighBuf[i-1]>=max_size_candel)
   BufferLossCanle[i]=low[i-1];
     {

Pourquoi le crochet doit-il rester là ? Y avait-il une intention que vous n'avez pas mise en œuvre ? (Je fais allusion à l'opérateur conditionnelelse)

 

Marat, merci encore une fois, j'ai écrit mon dernier code à l'école il y a 22 ans.

J'étais assis aux frais d'un autre opérateur, où le mettre en tant que briseur de quatre opérateurs suivants......

Je pense que je peux m'en occuper moi-même ........

Marat, veuillez me dire ou m'indiquer le lien si ce calcul peut être effectué sans utiliser une "boucle" ......

 
Rafael Sahibgareev:

Marat, merci encore une fois, j'ai écrit mon dernier code à l'école il y a 22 ans.

J'étais assis aux frais d'un autre opérateur, où le mettre en tant que briseur de quatre opérateurs suivants......

Je pense que je peux m'en occuper moi-même ........

Marat, veuillez me dire ou m'indiquer le lien si ce calcul peut être effectué sans utiliser une "boucle" ......

Excusez-moi, puis-je vous demander quel est votre objectif, quel résultat voulez-vous obtenir avec le morceau de code discuté ? Une fois que j'aurai compris votre intention, il sera beaucoup plus facile pour moi de vous aider :)
 

A propos du cycle demandé par curiosité...... Est-ce possible ? ......

Il est lui-même sans délicatesse, le premier opérateur "si" si fonctionne interdit alors, ne fonctionne pas direction classification opérateurs .......

De plus, à l'avenir, je prévois de modifier le code, pour le faire cocher avec le travail sur une barre de zéro,

de sorte que ce même classificateur d'interdiction apparaisse sur le tick lorsque le spread dépasse....indicateur sans filtres de clustering supplémentaires scalper....

En fait, je comprends que tous les modèles vivent dans les tics.......

 

Il faut un cycle pour passer les barres. Si vous avez besoin de lectures pour les 1 ou 2 dernières mesures seulement, vous pouvez vous passer de la boucle, mais si vous devez analyser une douzaine de mesures ou plus, il vaut mieux utiliser la boucle, non ?

Si vous refusez d'utiliser les boucles, vous vous condamnez au code chinois :)

 

Raphael, je te recommande de lire dans cet ordre :

  1. Déclaration conditionnelle if-else
  2. Opérateur pour
  3. Opérateur de boucle While
  4. Continuer opérateur continuer
  5. continuer opérateur briser

Et si tu te fais aspirer, alors va plus loin :

  1. Opérateurs
  2. Les bases de la langue
Je les ai divisés en fonction de leur fréquence d'utilisation dans la pratique. Rien de compliqué, juste de quoi comprendre l'essentiel.


 

Merci pour les conseils et les recommandations, il est trop tard aujourd'hui et demain je vais étudier l'aide et les articles.....

Je n'étais intéressé que par les trois dernières barres, y compris l'option[0]......

Plus tard, j'aurai probablement besoin de plus de 15-20 ...... Je ne peux pas me passer des cycles .....

Merci encore sincèrement pour votre aide et votre soutien......

Raison: