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

 

Alexey Viktorov #:

Votre variante est tout à fait acceptable, mais vous devez remplacer les ordres par des transactions. Le bénéfice, la commission et le swap sont stockés dans les transactions, pas dans les ordres.

Et il faut tenir compte du fait qu'une commande peut générer plusieurs transactions.

Il faut donc soit sélectionner les transactions pour chaque commande, soit créer un tableau/une liste (par le nombre de commandes) de structures et les remplir en sélectionnant les transactions.
 
JRandomTrader #:

Et tenir compte du fait qu'une commande peut générer plusieurs offres.

Il faut donc soit présélectionner pour chaque commande ses offres, soit créer un tableau/liste (par le nombre de commandes) de structures et les remplir en recherchant les offres.

Pourquoi se compliquer la vie ? Si vous devez calculer le bénéfice pour une certaine période, et c'est ce qui est fait dans le code source, il vous suffit de parcourir les transactions de cette période. L'opération IN a ou peut avoir une commission, l'opération OUT peut avoir un swap et un bénéfice en plus de la commission. Ainsi, après avoir tout résumé, nous avons obtenu le résultat souhaité.

Une autre chose est de collecter le profit pour chaque ID de position séparément dans un tableau.

 
Bonjour, il y avait un signal avec un ordre ouvert qui attendait son mouvement mais l'administrateur l'a envoyé dans les archives en raison d'un trading inactif comme il le prétend... s'il vous plaît dites-moi comment le sortir de là maintenant.... merci.
 

Aidez-moi. Auparavant, lorsque l'on cliquait sur la molette de la souris, le mode curseur en croix était activé dans le terminal et dans MT4 et MT5. Maintenant, il a disparu. Comment le personnaliser ?

p.s. Je n'ai jamais mis de pilote de souris, tout fonctionnait automatiquement....

 
Alexander Mostovnek #:

Aidez-moi. Auparavant, lorsque l'on cliquait sur la molette de la souris, le mode curseur en croix était activé dans le terminal et dans MT4 et MT5. Maintenant, il a disparu. Comment cela se passe-t-il ?

p.s. Je n'ai jamais mis de pilote de souris, tout fonctionnait automatiquement....

Elle n'a pas disparu, elle est juste moins réactive...

J'ai même pensé que la souris était cassée et que le bouton n'était pas pressé une ou deux fois.

 
Maxim Kuznetsov #:

Il n'a pas disparu, il est juste moins réactif.

J'ai même pensé que la souris était cassée et que le bouton glissait.

Mais je n'en sais rien. Je l'ai testée à de nombreuses reprises et elle est très réactive. Aucun retard. Elle ne s'est jamais manifestée une seule fois.


 
Il s'avère que le pressage des roues est mort..... :)
 

- Docteur, j'ai mal ici, ici et ici.

- Votre doigt est cassé).

 
double MinOpenBuy(int a = 1)
   {
   ulong tick = 0;
   datetime time = 0;
   double result=0,lot=0,profit=0,openprice=0,
          NewPrice, OldPrice = DBL_MAX;
   for(int i=OrdersTotal(); i>=0; i--)
   {
      if (a_position.SelectByIndex(i))
      {
         if (a_position.Symbol() == a_symbol.Name() && a_position.Magic() == Magic && a_position.PositionType() == POSITION_TYPE_BUY)
         {
            NewPrice = a_position.PriceOpen();
            if ( NewPrice < OldPrice)
            {
               OldPrice = NewPrice;
               profit = NormalizeDouble(a_position.Commission()+a_position.Swap()+a_position.Profit(),2);
               lot = a_position.Volume(); 
               time = POSITION_TIME; 
               tick = a_position.Ticket(); 
            }
         }
      }
   }
   if(a==1) 
	{result = OldPrice;} else
   if(a==2) 
	{result = profit;} else
   if(a==3) 
	{result = lot;} else
   if(a==4) 
	{result=(double)time;}else
   if(a==5) 
	{result=(double)tick;}else
   {result=0;}
   return(result);
  }
Bonjour.
Joyeuses fêtes à tous.
J'ai besoin de l'aide de professionnels.
J'ai écrit ce code dans MQL4 pour rechercher l'ordre avec le prix d'ouverture le plus bas et obtenir ses données
Maintenant, j'essaie de tout transférer dans MQL5, mais pour une raison quelconque, cela ne fonctionne pas(
Quelle est l'erreur ?
 
Maksim Burov #:
for(int i=OrdersTotal() ; i>=0; i--)

Je ne suis pas allé au fond du code, mais ce qui a immédiatement attiré mon attention, c'est que le nombre de commandes à rechercher n'est pas correctement défini. Il devrait être ainsi :

for(int i=OrdersTotal() - 1; i>=0; i--)

De plus, dans la boucle, vous parcourez les ordres, mais vous recherchez les propriétés des positions. C'est également incorrect. Je suppose qu'il est plus probable que vous ayez besoin de boucler sur les positions :

for(int i=PositionsTotal() - 1; i>=0; i--)

Cordialement, Vladimir.

Raison: