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

 
Artyom Trishkin drapeaux de visibilité des volumes sur les horizons temporels. Besoin de cacher et d'afficher.

Je leur ai écrit à ce sujet il y a quelques jours. Mais qui écoute jamais les conseils avisés... ?

 
Mihail Matkovskij #:
Une version plus compacte :

Je ne suis pas un programmeur et ne connais pas les styles (j'écris comme je peux).

Mihail Matkovskij #:

Mais je croyais que vous aviez dit que votre fonction prétendait être universelle... ? Alors vous avez oublié un détail très important :

const - je ne sais pas ce que c'est, mais ça marche merveilleusement bien sans.


Mihail Matkovskij #:

Êtes-vous trop paresseux pour écrire un simple script pour le vérifier ? Ok. Je l'ai fait pour toi :

C'est étrange...

cette fonction génère un faux sur "-n".

Je ne suis pas un programmeur ni un enseignant. Je suis ici pour demander et répondre (si je le sais). Je n'essaie pas d'exhiber ma chatte.

Si vous voulez montrer votre valeur, apprenez à admettre vos erreurs ou à les corriger.

 
Mihail Matkovskij #:

Je leur ai écrit à ce sujet il y a quelques jours. Mais qui écoute jamais les conseils avisés... ?

J'ai moi aussi remarqué que les plus actifs ont tendance à être écoutés. Dans ce cas, Makar. En conséquence, le problème le plus simple n'a pas été résolu depuis plusieurs jours.

 
Alexey Viktorov #:

J'ai moi aussi remarqué que les plus actifs sont plus souvent écoutés. Dans ce cas, Makar. Par conséquent, pendant plusieurs jours, la tâche la plus simple n'a pas été résolue.

Alexei, le problème est résolu depuis longtemps, l'homme voulait comprendre pourquoi cette option particulière ne fonctionne pas.
 
MakarFX #:


const - Je ne sais pas ce que c'est, mais ça fonctionne bien sans.

c'est une garantie que la valeur ne changera pas à l'intérieur de la fonction.

C'est étrange...

c'est la fonction qui donne de faux résultats

Je pense que j'ai tout arrangé. Qu'est-ce qu'il y a ?

Je ne suis pas un programmeur et je ne suis pas un enseignant. Je demande et je réponds (si je sais). Je n'essaie pas d'exhiber ma chatte.

Si vous voulez montrer votre valeur, vous devez apprendre à admettre vos erreurs ou à les corriger.

Je réponds également aux questions. Et j'essaie de faire comprendre à quoi devrait ressembler un code bien écrit. Et tu me parles de mon ego ? Je pense que vous et Nerd Trader m'avez mal compris. J'ai déjà dit plus haut que pour moi, c'est l'importance de savoir programmer qui compte, pas mon importance !

En principe, personne ne va vous enseigner en dehors de votre volonté. Mais le code, qui a été écrit pour vous, mais qui ne vous plaît pas, ne vous convient pas ou que vous ne comprenez pas, sera probablement utile à d'autres membres du forum. Donc si vous n'aimez pas le code, ne l'utilisez pas. Utilisez celui que vous aimez.

 
MakarFX #:
Alexei, le problème est résolu depuis longtemps, l'homme voulait comprendre pourquoi cette variante particulière ne fonctionne pas.

Tout fonctionne correctement et ils sont en train de se foutre de la tête de tout le monde au lieu de comparer la bonne version à la mauvaise. :)

 
законопослушный гражданин #:

clairement

S'il vous plaît, dites-moi si je comprends bien que la fonction renvoie le lot du dernier ordre clôturé mais que la comptabilité commence au début de la liste de tous les ordres clôturés.

double GetLotSize()
  {
   double Ls=0;
   datetime t=0;
   int i=OrdersHistoryTotal();
   for(int pos=0; pos<i; pos++)
     {
      if(OrderSelect(pos, SELECT_BY_POS, MODE_HISTORY))
        {
         if(OrderSymbol()==_Symbol && OrderMagicNumber()==Magic)
           {
            if(OrderType()==OP_BUY || OrderType()==OP_SELL)
              {
               if(t<OrderCloseTime()) {t=OrderCloseTime(); Ls=OrderLots();}
              }
           }
        }
     }
   return Ls;
  }

donc si je le fais de cette façon, il sera compté à partir de la fin de la liste ?

double GetLotSize()
  {
   double Ls=0;
   datetime t=0;
   int i=OrdersHistoryTotal();
   for(int pos=0; pos>=i; pos--)
     {
      if(OrderSelect(pos, SELECT_BY_POS, MODE_HISTORY))
        {
         if(OrderSymbol()==_Symbol && OrderMagicNumber()==Magic)
           {
            if(OrderType()==OP_BUY || OrderType()==OP_SELL)
              {
               if(t<OrderCloseTime()) {t=OrderCloseTime(); Ls=OrderLots();}
              }
           }
        }
     }
   return Ls;
  }
 
законопослушный гражданин #:

Pouvez-vous me dire si j'ai bien compris que la fonction renvoie le lot du dernier ordre clôturé mais que la comptabilité commence au début de la liste de tous les ordres clôturés.

donc si je le fais de cette façon, il sera compté à partir de la fin de la liste ?

Oui
 
законопослушный гражданин #:

Pouvez-vous me dire si j'ai bien compris que la fonction renvoie le lot du dernier ordre clôturé mais que la comptabilité commence au début de la liste de tous les ordres clôturés.

Si je le fais de cette façon, le compte à rebours se fera à partir de la fin de la liste ?

La deuxième variante ne fonctionnera pas. Pour effectuer le comptage à partir de la fin de la liste, nous devons procéder comme suit :

double GetLotSize()
  {
   double Ls=0;
   datetime t=0;
   int total = OrdersHistoryTotal();
   for(int i = total - 1; i >= 0; i--)
     {
      if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
        {
         if(OrderSymbol()==_Symbol && OrderMagicNumber()==Magic)
           {
            if(OrderType()==OP_BUY || OrderType()==OP_SELL)
              {
               if(t<OrderCloseTime()) {t=OrderCloseTime(); Ls=OrderLots();}
              }
           }
        }
     }
   return Ls;
  }
Raison: