Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 128

 

Bonjour, je compare les prix d'ouverture de 3 barres (3,2,1). Comment puis-je ne pas compter les barres où les prix sont égaux ?

for( x=<3;x--)
{
 if( Open[x]==Open[x] )
  {
    x+1;
   }
  if( Open[x]<Open[x] )
   {
   ,,,
   }
 
skyjet:

Bonjour, je compare les prix d'ouverture de 3 barres (3,2,1). Comment puis-je ne pas compter les barres où les prix sont égaux ?

for (int x=1; x<3; x++)
{
 if(Open[x]==Open[x+1]) continue;
 if(Open[x]<Open[x+1])
   {
   //--- action
   }
}
 
Bonjour, aidez-moi. Je joue sur H1, j'ai un indicateur H4. Il s'affiche correctement. Mais si je l'exécute dans le testeur, avec la visualisation, par exemple au début de l'année, il montre les informations actuelles qui sont maintenant sur le marché. En général, cela ne fonctionne pas dans le testeur de stratégie. Comment le faire fonctionner. Ou donnez un lien vers le sujet où le problème est résolu.
 
artmedia70:
Comment est-il vide ? Est-ce que ça donne quelque chose, ou y a-t-il des zéros dans les cellules du tableau ?


Rien du tout.

Même si vous allez dans Objets il n'y a rien du tout, à part les flèches et les lignes de tendance...

artmedia70:

Pourquoi augmentez-vous le i dans le corps de la boucle ?

et ceci : i<=p, pourquoi "ou égal à" ?


J'ai fait une erreur par fatigue. Je l'ai réparé de cette façon :

for(i=0; i<p; i++)
      {
          pr("a[i][1] = " + a[i][1]);
      }

Ce morceau de code se trouve dans la fonction elle-même :

//+-------------------------------------------------------------------------------------+
//| Закрытие ордеров, отсортированных по размеру лотов                                  |
//+-------------------------------------------------------------------------------------+
void ClosePosBySortLots()
{
   double a[][2];
   int p = 0;
   
   for (int i=OrdersTotal()-1; i>=0; i--)
   {
      if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue;
      if (OrderMagicNumber() != i_magic) continue;
      if (OrderSymbol() != Symbol()) continue;
      if (OrderType() < 2)
      {
         p++;
         ArrayResize(a, p);
         a[p-1][0] = OrderLots();
         a[p-1][1] = OrderTicket();
      }
   }
//   pr ("ClosePosBySortLots(): " + "p = " + p);
   if (p > 0)
   {
      ArraySort(a, WHOLE_ARRAY, 0, MODE_DESCEND);
      
      for(i=0; i<p; i++)
      {
          pr("a[i][1] = " + a[i][1]);
      }
      
      for(i=0; i<p; i++)
      {
         if (OrderSelect(a[i][1], SELECT_BY_TICKET, MODE_TRADES))
         {
             if (OrderCloseTime() == 0) ClosePosBySelect();
         }
      }
   }
}
 
hoz:


Rien du tout.

Même si vous allez dans Objets il n'y a aucun objet, à l'exception des flèches et des lignes de tendance...


C'est moi qui ai fait une erreur par fatigue. Je l'ai réparé de cette façon :

Ce morceau de code se trouve dans la fonction elle-même :

Avant et après

if (p > 0)

désimprimer la valeur p.

Dois-je écrire la séquence de recherche de fautes pour vous ?

 
artmedia70:

Avant et après.

Ne pas imprimer la valeur p.

Dois-je écrire la séquence d'erreurs pour vous ?



En fait, oui. Bref, voici la situation :

void ClosePosBySortLots()
{
   double a[][2];
   int p = 0;
   
   for (int i=OrdersTotal()-1; i>=0; i--)
   {
      if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue;
      if (OrderMagicNumber() != i_magic) continue;
      if (OrderSymbol() != Symbol()) continue;
      if (OrderType() < 2)
      {
         p++;
         ArrayResize(a, p);
         a[p-1][0] = OrderLots();
         a[p-1][1] = OrderTicket();
      }
   }
//   pr ("ClosePosBySortLots(): " + "p = " + p);
   pr("___p = " + p);   // Значение кол-ва позиций до if..
   
   if (p > 0)
   {
      pr("p = " + p);   // Значение кол-ва позиций после if..
      
      ArraySort(a, WHOLE_ARRAY, 0, MODE_DESCEND);
      
      for(i=0; i<p; i++)
      {
          pr("a[i][1] = " + a[i][1]);
      }
      
      for(i=0; i<p; i++)
      {
         if (OrderSelect(a[i][1], SELECT_BY_TICKET, MODE_TRADES))
         {
             if (OrderCloseTime() == 0) ClosePosBySelect();
         }
      }
   }
}

Je l'ai fait de cette façon, mais rien ne sort de cette partie du tableau non plus. Bien qu'à d'autres endroits, il a imprimé 0, lorsqu'une position était ouverte et qu'elle a été fermée immédiatement par prise. C'est-à-dire que dans ce domaine, Kosakova travaille comme si...

Voici une capture d'écran :

Dois-je imprimer toutes ces valeurs maintenant ?

p++;
ArrayResize(a, p);
a[p-1][0] = OrderLots();
a[p-1][1] = OrderTicket();

Il semble qu'il y ait encore beaucoup de chemin à parcourir. Après tout, tout y est clairement et habituellement écrit.

 
hoz:


En fait, c'est le cas. Bref, voici la situation :

Je l'ai fait comme ça, mais rien ne sort de cette partie du graphique non plus. Bien qu'à d'autres endroits, il a imprimé 0, lorsqu'une position était ouverte et qu'il s'est refermé immédiatement sur la prise. C'est-à-dire que dans ce secteur, kosakova travaille comme si...

Voici une capture d'écran :

Dois-je imprimer toutes ces valeurs maintenant ?

Il semble qu'il y ait encore beaucoup de chemin à parcourir. Après tout, tout y est clairement et habituellement écrit.

Comprenez-vous et voyez-vous ce qui est contenu dans votre tableau immédiatement après qu'il ait été "rempli" de données de mandat ? Non. Vous ne savez pas, vous ne faites que supposer. IMPRIMEZ le contenu de toutes les cellules du tableau, non pas avec votre pr(), mais avec la fonction standard Print(), et essayez de consulter le journal du testeur pour voir ce que vous avez dans le tableau, dans chaque cellule, juste après son remplissage. Lorsque vous êtes sûr que le contenu du tableau correspond à vos idées sur son contenu, imprimez-le avec votre pr(). Si vous n'obtenez pas les mêmes résultats, c'est votre pr(). Si les données correspondent, cherchez une erreur à l'étape suivante.
 
Il y a des erreurs liées au lot dans le journal( erreurOrderSend 4051). Cela résoudra ce problème. Peut-être que ça aidera. Alors nous verrons ce qui se passe.
 
hoz:
Il y a des erreurs liées au lot dans le journal (erreur OrderSend 4051). Résoudre ce problème. Peut-être que ça aidera. Et puis nous verrons.

Regarde les réservoirs, redémarre, peut-être que ça aidera... :-)

P.S. Je suis gentil ici.

 
Il s'agit d'un tableau unidimensionnel dont la taille peut varier.
Comment parcourir en boucle toutes les combinaisons possibles des éléments d'un tableau les uns avec les autres ?
L'ordre des éléments n'a pas d'importance, c'est-à-dire 123==213==321...

Voici un exemple pour un tableau de 4 éléments :
[4] <=> { 1 2 3 4 }

1, 12, 13, 14, 123, 124, 134, 1234, 
2, 23, 24, 234, 
3, 34,
4
Raison: