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

 
Roman.:

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

P.S. Je suis gentil.

Nah. Les chars ne sont pas une option. Si vous voulez vraiment faire quelque chose comme ça. C'est seulement le résultat qui vous calme))
 
hoz:
Nah. Les chars ne sont pas une option. Si vous voulez vraiment faire quelque chose comme ça. Il se calmera juste le résultat).

:-)
 

Pas du tout. Dans l'ensemble, il s'agit d'un moment étrange. Je n'ai pas eu le lot normalisé. Nous avons ici la fonction de normalisation des lots :

//+-------------------------------------------------------------------------------------+
//| Проверка объема на корректность и округление                                        |
//+-------------------------------------------------------------------------------------+
double LotFloor(double value)
{
   return(MathFloor(MathMin(MathMax(value, g_minLot), g_maxLot)/g_lotStep)*g_lotStep);

J'ai vérifié où il y avait une erreur, dans la fonction de trading elle-même d'où sont appelées les fonctions d'ouverture des ordres. J'ai ajouté cette fonction dans le paramètre lot de la fonction appelante qui envoie les ordres. L'erreur n'a pas disparu.

Et dès que j'ai ajouté la fonction de normalisation directement à la première fonction de malédiction, et il s'agit de la fonction qui définit les ordres en attente, la malédiction a cessé. Qu'est-ce que vous entendez par là ?

//+-------------------------------------------------------------------------------------+
//| Открытие отложенной короткой позиции                                                |
//+-------------------------------------------------------------------------------------+
bool OpenPendingSell(double lot, double price)
{
   int g_ticket = -1;
   double OOP = price - i_distanceFromLastPos * pt;
      
   if (OOP < Bid)
   {
       fCheck_ValidPendingOOP(Symbol(), OP_SELLSTOP, OOP);
       
       g_ticket = OrderSend(Symbol(), OP_SELLSTOP, LotFloor(lot), ND(OOP), 30, 0, 0, NULL, i_magic, 0, CLR_NONE);
   }
   if (g_ticket > 0)
   {
       return (true);
   }
   else
       pr ("OpenPendingSell(): Ордер послать не удалось " + GetLastError());
   
   return (false);
}

Dans le premier cas, j'envoie immédiatement un lot vérifié, et dans le second cas, je vérifie la taille du lot dans la fonction OrderSend() elle-même. Mais quelle est la différence ?

 
chief2000:
Voici le problème : il existe 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 :

Eh bien, l'un avec l'autre, ça ne semble pas difficile.

int k = ArraySize(array);
for(int i=0;i<k-1;i++)
for(int ii=i+1;ii<k;ii++)
   {
   ...
   }
Mais, ici, quand il y en a plus de deux, on ne sait pas comment comparer. Montrez une méthode permettant de comparer trois nombres 1, 2 et 3 en même temps,
 
Quelqu'un peut-il me dire comment faire pour que je ne doive pas rouvrir la fenêtre d'optimisation...... Cas sted que cette fenêtre était avec différents paramètres pour le fond, la bougie, etc.
 
Peut-être qu'il y a des scripts comme ça ! !!
 
Bonjour à tous, veuillez me conseiller sur ce sujet... Si je veux décaler le niveau à 798, c'est trop compliqué à calculer pour de nombreuses paires, comment dois-je écrire un indicateur qui dessine le prix de la moyenne mobile décalée ou l'affiche dans la fenêtre de données sans compter manuellement ?niveaux à MA
 
Roger:

Eh bien, l'un avec l'autre, ça ne semble pas difficile.

Mais lorsqu'il y en a plus de deux, la comparaison n'est pas évidente. Montrez-moi une méthode pour comparer trois nombres 1, 2 et 3 en même temps,

.

Si je ne me trompe pas, le nombre de cycles doit correspondre au nombre d'éléments du tableau. Le problème est que le nombre d'éléments n'est pas fixe et peut être bien supérieur à 4, il faut réfléchir à la manière de le concevoir. Je me demande également s'il existe d'autres options de mise en œuvre qui affectent la vitesse, la consommation de mémoire, etc.
 
paladin80:



Merci ! Le côté à partir duquel vous commencez à compter, c'est-à-dire la troisième mesure, n'a-t-il pas d'importance ?
 
Je voudrais reformuler et compléter ma question précédente.
Voici le code pour un tableau de 4 éléments. En réalité, le nombre d'éléments du tableau est variable.
Comment puis-je modifier le code pour que le nombre de boucles "for" imbriquées devienne variable, un "for" par élément du tableau?
Merci !

int start() { 

   int Array[4]                                       = {1, 2, 3, 4};
   int x1, x2, x3, x4;
   int Array_Size                                  = ArrayRange(Array,0);


   for(x1=0; x1<Array_Size; x1++) {
      Print("Combination                       = ", Array[x1]);

      for(x2=x1+1; x2<Array_Size; x2++) {
         Print("Combination                    = ", Array[x1] + "   " + Array[x2]);

         for(x3=x2+1; x3<Array_Size; x3++) {
            Print("Combination                 = ", Array[x1] + "   " + Array[x2] + "   " + Array[x3]);

            for(x4=x3+1; x4<Array_Size; x4++) {
               Print("Combination              = ", Array[x1] + "   " + Array[x2] + "   " + Array[x3] + "   " + Array[x4]);
            }
         }
      }
   }


   return(0);
}
Raison: