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

 
Maksim Burov Comment dans le code de l'EA ?
Quelles sont les options pour résoudre ce problème ?
Cela affecte-t-il la vitesse d'optimisation ?

Vous n'êtes pas obligé d'utiliser kanvas.

Pour que Comment ne ralentisse pas le testeur visuel, il est nécessaire que Comment ne soit pas appelé plus souvent que 30 millisecondes.

Voici un exemple :

   static uint lastCalc= 0 ;
   uint cur= GetTickCount();
   if (cur-lastCalc> 30 ) {
      Comment("blablabla");
      lastCalc=cur; 
   }
Ou utilisez Print au lieu de Comment s'il est important de ne pas sauter de valeurs.

Si une meilleure visualisation de la sortie de n'importe quelle valeur est importante, il est préférable d'utiliser kanvas.

https://www.mql5.com/ru/forum/277867/page8#comment_19186284
 
Maksim Burov commentaire n'affecte pas la vitesse d'optimisation.
 
Maksim Burov #:

Les informations changent périodiquement.
Par exemple, je veux voir la position avec le prix d'ouverture le plus bas. Ou connaître le tick de la dernière position clôturée.
Vous pouvez tout écrire dans l'imprimé, mais ce n'est pas pratique à regarder, vous pouvez manquer quelque chose. Ainsi, je peux immédiatement voir où j'ai fait des erreurs.

Les informations ne changent pas à chaque tic-tac ? Nikolay a également suggéré que vous pouvez simplement faire la sortie après un certain délai, réduisant ainsi la fréquence de cette sortie.
 

Merci beaucoup pour votre aide.
J'ai maintenant une autre tâche à accomplir.

Il existe une fonction qui compte le profit de tous les ordres clôturés après un certain tick.
L'heure de clôture de l'ordre (position) a été ajoutée pour vérification.
Comme tout a été écrit en MQL4, et qu'il est maintenant réécrit en MQL5, la question s'est posée de savoir comment effectuer cette vérification de manière correcte et compétente.

En d'autres termes, comment réécrire le code en MQL5 ?)

double CalculateProfitHistory() 
{
   double profit = 0;
   int  i, ototal = OrdersHistoryTotal();

   for(i = ototal-1; i >=0; i--)
   {
      if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
      {
         if(OrderSymbol() == Symbol() && OrderCloseTime() > 0)
         {
            if(OrderType() == OP_BUY || OrderType() == OP_SELL)
            {
               if(OrderMagicNumber() == Magic )
               {
                  if (LockTicket !=0)
                  {
                     if (OrderTicket() >= LockTicket)
                     {
                        profit += OrderProfit()+OrderCommission()+OrderSwap();
                     }                  
                  }
               }
            }
         }
      }
   }
   return(profit);
}
 
Maksim Burov #:

Merci beaucoup à tous pour votre aide.
Maintenant, un autre défi.

Il existe une fonction qui compte le profit de tous les ordres clôturés après un certain tick.
L'heure de clôture de l'ordre (position) a été ajoutée pour vérification.
Comme tout a été écrit en MQL4, et qu'il est maintenant réécrit en MQL5, la question s'est posée de savoir comment effectuer cette vérification de manière correcte et compétente.

En d'autres termes, comment réécrire le code en MQL5)

// сначала выбираем нужный интервал
HistorySelect(TimeStart,TimeCurrent()+10);

// перебираем ордера в интервале
for(i=HistoryOrdersTotal()-1;i>=0;i--)
         {
          ord=HistoryOrderGetTicket(i);

         // далее получаем (или сразу сравниваем) любые свойства ордера, типа
          o_sym=HistoryOrderGetString(ord, ORDER_SYMBOL);
          o_magic=HistoryOrderGetInteger(ord, ORDER_MAGIC);
          ...
         }

Quelque chose comme ceci.

 
Maksim Burov #:

Merci beaucoup à tous pour votre aide.
Maintenant, un autre défi.

Il existe une fonction qui compte le profit de tous les ordres clôturés après un certain tick.
L'heure de clôture de l'ordre (position) a été ajoutée pour vérification.
Comme tout a été écrit en MQL4, et qu'il est maintenant réécrit en MQL5, la question s'est posée de savoir comment effectuer cette vérification de manière correcte et compétente.

En d'autres termes, comment réécrire le code en MQL5)

Puisque ce ne sont pas les commandes (post précédent), mais les transactions qui seront recherchées, il est plus pratique d'utiliser ce code

HistoryPosition - неопубликованный функционал MQL5-языка.
HistoryPosition - неопубликованный функционал MQL5-языка.
  • 2023.11.22
  • www.mql5.com
HistoryPositionsTotal Возвращает количество всех закрытых позиций в истории. HistorySelect() не влияет на результат данной функции. int HistoryPositionsTotal(); Возвращаемое значение Значение типа
 
JRandomTrader #:

Quelque chose comme ça.

J'ai échoué( Pouvez-vous élaborer un peu plus sur la base de mon code.

 
Maksim Burov #:

J'ai échoué( Pouvez-vous élaborer un peu plus sur la base de mon code.

Il serait peut-être préférable de consulter la variante d' Aleksandr Slavskii. Je n'ai pas travaillé avec MQL4, ni avec la couverture.

Vous pouvez également consulter les pages suivantes et, au cas où, la page suivante.

 
JRandomTrader #:

Il serait peut-être préférable de consulter la variante d' Aleksandr Slavskii. Je n'ai pas travaillé avec MQL4 et je n'ai pas non plus travaillé avec la couverture.

Vous pouvez également consulter les pages suivantes et, au cas où, la page suivante.

Pas mieux. Ce sont des fonctions habituelles de fxsaber.

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

 
Bonjour, j'ai un problème avec le VPS. Je ne reçois pas de notifications sur mon téléphone lorsque le MT4 est éteint. Lorsque la plateforme est en marche, les notifications fonctionnent. Quelqu'un pourrait-il me donner des conseils sur ce qui pourrait être en cause ? Je vous remercie de votre attention.
Raison: