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

 
MakarFX #:
PM

vérifiez votre portefeuille)

 
Alexey Viktorov #:

J'ai rencontré ceci dans un fil de discussion

Je l'ai copié, regardé, n'ai rien compris, l'ai commenté et l'ai oublié.

Maintenant je m'en souviens, je l'ai trouvé dans mes codes de test, mais je ne le trouve pas sur le forum. Je ne comprends pas le fonctionnement des macros, peut-être que quelqu'un peut m'expliquer comment cela fonctionne ou trouver le problème à partir duquel je l'ai copié...

En général, je dois définir d'une manière ou d'une autre la macro-substitution ..........

Tout cela fonctionne à la compilation, mais pas au chargement du programme.

 

Bonne journée à tous ! !!!

Pouvez-vous me dire quel est le numéro de l'avant-dernier billet ?

Il existe une fonction permettant de déterminer la dernière commande :

//+----------------------------------------------------------------------------+
//| Расчет тикета максимального ордера в сетке                                 |
//+----------------------------------------------------------------------------+
int GetTicketMaxOrder()
  {
   max_ticket = 0;
     {
      for(int cnt = OrdersTotal() - 1; cnt >= 0; cnt--)
        {
         if(OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES))
           {
            if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
              {
               if(OrderType() == OP_BUY || OrderType() == OP_SELL)
                 {
                  if(OrderTicket() > max_ticket)
                     max_ticket = OrderTicket();
                 }
              }
           }
        }
     }
   return(max_ticket);
  }

Une variante consistant à appliquer cette fonction et à supposer que -1 de max_ticket ne fonctionne pas car EA négocie plusieurs instruments et il peut arriver qu'entre le dernier et l'avant-dernier ordre, un ordre d'un autre instrument soit ouvert.

J'ai besoin que l'ordre soit sélectionné parmi tous les ordres moins le maximum de ceux qui restent ou le prochain ticket le plus élevé après le maximum ou cela peut être votre décision. Merci.

 
Vitaly Muzichenko #:

Tout cela fonctionne au moment de la compilation, mais pas lorsque le programme est chargé.

Le chargement d'un programme ne dépend-il pas de la façon dont il est compilé ?

 
EVGENII SHELIPOV #:

Bonne journée à tous ! !!!

Cette fonction ne peut pas fonctionner correctement

int GetTicketMaxOrder()
  {
   max_ticket = 0;
     {
      for(int cnt = OrdersTotal() - 1; cnt >= 0; cnt--)
        {
         if(OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES))
           {
 
MakarFX #:

Cette fonction ne peut pas fonctionner correctement.

Oui Makar, vous avez raison, comme toujours, cela peut être corrigé, mais étrangement, cette fonction fonctionne comme une horloge.

 
MakarFX #:

Exactement.

Est-il possible de le faire à travers ?

La seule solution est d'écrire votre propre panneau de paramètres et de l'utiliser à partir de OnInit() au lieu d'utiliser le mécanisme standard des paramètres d'entrée.
 
Sergey Gridnev #:
La seule solution est d'écrire votre propre panneau de paramètres et de l'utiliser à partir de OnInit() au lieu d'utiliser le mécanisme standard des paramètres d'entrée.

Une idée intéressante ! Merci.

Non, ce n'est pas intéressant.

Chaque fois que vous changez à nouveau de période, il n'est pas agréable de saisir les paramètres(

 
EVGENII SHELIPOV #:

Oui Makar, vous avez raison, comme toujours, c'est réparable, mais étrangement, cette fonction fonctionne comme une horloge.

Cela a marché comme sur des roulettes parce que vous cherchiez la dernière commande max_ticket.

vous ne pouviez pas trouver un autre billet.

 
EVGENII SHELIPOV #:

Bonne journée à tous ! !!!

Pouvez-vous me dire le numéro de l'avant-dernier billet ?

Il est possible de mémoriser un ticket avant d'ouvrir une nouvelle commande.

Raison: