Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 690

 
Bonsoir.
 if(count==0)comment+="No symbols for trading!";
      Comment(comment);
      MqlTick tick;
      tick.ask=SymbolInfoDouble(structPairs.name,SYMBOL_ASK);
      tick.bid=SymbolInfoDouble(structPairs.name,SYMBOL_BID);
      tick.time=TimeCurrent();
      Trade(false,structPairs, tick, Orders, inputs);
Que dit ce bout de code ? Quand apparaît-il ? Toutes les paires de la liste sont là et tout l'historique est chargé.
 
Darirunu:
Bonsoir, que dit ce bout de code ? Quand apparaît-il ? Toutes les paires sont dans la liste et tout l'historique est chargé.

Mot de passe de l'investisseur ?

 
Darirunu:
Bonsoir. Que dit ce bout de code ? Quand apparaît-il ? Toutes les paires de la liste sont là et tout l'historique est chargé.
Si un compteur est à 0 (je suppose que c'est le résultat d'une exécution précédente), alors une ligne est ajoutée au commentaire
No symbols for trading!

le reste, c'est du business comme d'habitude...

 
Taras Slobodyanik:

Merci.

Vérifier qu'il n'y a pas d'objet sur la deuxième barre.

         for(int jj=i;jj<obj_total;jj++)
           {
            nameARs=ObjectName(jj);
            if(ObjectType(nameARs)!=OBJ_RECTANGLE) continue;
            if(StringFind(nameARs,"QUADRO",0)!=-1)
              {

               time_ars=ObjectGetInteger(0,nameARs,OBJPROP_TIME);//break;

              }
           }
         //===---===
         if(time_ars!=Time[i+2])
           {
           //....
           }
Comment puis-je vérifier qu'il n'y a pas d'objets sur les dix barres ?
 

Indicateur.

Pour chaque barre, calculez la somme des tailles des barres haussières et la somme des tailles des barres baissières.

Dans le tampon, écrivez la différence de ces sommes.

Qu'est-ce qui ne va pas ici ?

int counted_bars=IndicatorCounted(),
       limit;
 
   if(counted_bars>0)
      counted_bars--;
   
   limit=Bars-counted_bars;
   
   double up_sum=0, down_sum=0;
   for(int i=0;i<limit;i++)
   {
      for(int f = 0; f < Period; f++){
         if(close[f] - open[f] > 0) up_sum += close[f] - open[f];
         if(close[f] - open[f] < 0) down_sum += MathAbs(close[f] - open[f]);
      }
      PVTBuffer[i]=up_sum-down_sum;
   }
 
Roman Sharanov:

Indicateur.

Pour chaque barre, calculez la somme des tailles des barres haussières et la somme des tailles des barres baissières.

Dans le tampon, écrivez la différence de ces sommes.

Qu'est-ce qui ne va pas ici ?

Transfert

double up_sum=0, down_sum=0;

à l'intérieur du premier cycle - avant d'annoncer le deuxième cycle.

 
Roman Sharanov:

Indicateur.

Pour chaque barre, calculez la somme des tailles des barres haussières et la somme des tailles des barres baissières.

Dans le tampon, écrivez la différence de ces sommes.

Qu'est-ce qui ne va pas ici ?

Essayez de réinitialiser les variablesup_sum=0, down_sum=0;

avant la deuxième boucle interne.

int counted_bars=IndicatorCounted(),
       limit;
 
   if(counted_bars>0)
      counted_bars--;
   
   limit=Bars-counted_bars;
   
   double up_sum, down_sum;
   for(int i=0;i<limit;i++)
   {
    up_sum=0; 
    down_sum=0;
      for(int f = 0; f < Period; f++){
         if(close[f] - open[f] > 0) up_sum += close[f] - open[f];
         if(close[f] - open[f] < 0) down_sum += MathAbs(close[f] - open[f]);
      }
      PVTBuffer[i]=up_sum-down_sum;
   }

Comme ceci

 
Alekseu Fedotov:

Essayez de réinitialiserup_sum=0, down_sum=0;

avant la deuxième boucle interne.

Comme ceci

Je l'ai fait, et oui, c'est logique, mais maintenant il n'est plus affiché du tout.

 
Ghabo:

Merci.

Vérifier qu'il n'y a pas d'objet sur la deuxième barre.

Comment puis-je vérifier qu'il n'y a pas d'objets sur les dix barres ?

Si vous savez comment créer le nom exact d'un objet, il est inutile de passer en revue tous les objets du tableau.
Il suffit de passer en revue ces noms (supposés).

for(int i=0;i<10;i++)
   {
   if (ObjectFind(0,"QUADRO"+Time[i])<0)
      Print("Нет объекта на баре № ",IntegerToString(i));
   else
      Print("Найден oбъект на баре № ",IntegerToString(i));
   }
 
Roman Sharanov:

Je l'ai fait, et oui, c'est logique, mais maintenant il n'est plus affiché du tout.

Oui, aussi comme ça, réparez-le.

Dans la boucle interne

for(int f = 0+i; f < Period+i; f++)

Raison: