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

 
Artyom Trishkin #:
Et comme il est facile de constituer un tableau et de le trier selon le bon critère. Mais pendant 100500 pages, nous nous sommes accrochés à nos talons.
Veuillez me montrer un exemple en code. Je ne sais pas comment empiler dans un tableau et ensuite trier aussi.
 
Alexey Viktorov #:
Après tout, il est plus facile et plus rapide de vérifier que d'attendre la réponse de quelqu'un d'autre...

Mes compétences en mql sont trop faibles) Je pourrais essayer, mais cela me prendrait beaucoup de temps) donc il vaut mieux savoir si c'est possible que de passer beaucoup de temps et de découvrir que c'est impossible)
quand j'aurai plus de temps libre, il sera certainement plus facile d'essayer, mais pour l'instant je préfère demander à des personnes plus expérimentées si c'est possible.

 
Scarick #:

Mes compétences en mql sont trop faibles) je peux certainement essayer, mais cela me prendra beaucoup de temps) donc il vaut mieux savoir à l'avance s'il est possible de faire quelque chose, que de passer beaucoup de temps et de découvrir que c'est impossible)
quand j'aurai plus de temps libre, il sera certainement plus facile d'essayer, mais pour l'instant je préfère demander à des personnes plus expérimentées si c'est possible.

Si vos compétences ne sont pas trop grandes, mais que votre pensée logique fonctionne, que peut-on comprendre de cette question ?

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading.

Toutes les questions des débutants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes

Scarick, 2021.11.06 17:01

En d'autres termes, si je signe 5 symboles dans un indicateur, je peux travailler avec les 5 symboles à travers un seul OnBookEvent() ? La seule chose importante est de filtrer par quel personnage le changement s'est produit ?

la chose la plus fiable à faire est de vérifier, et non d'attendre une réponse positive de quelqu'un d'autre. C'est pourquoi j'ai répondu comme je l'ai fait.
 
MakarFX #:
Veuillez me montrer un exemple en code. Je ne sais pas comment empiler dans un tableau et ensuite trier aussi.

Regardez icihttp://www.mql5.com/ru/articles/1404 Pas de tri ici, mais une pile dans un tableau.

Управление ордерами – это просто
Управление ордерами – это просто
  • www.mql5.com
Статья описывает разнообразные способы контроля открытых позиций и отложенных ордеров и призвана облегчить написание экспертов.
 
MakarFX #:
Veuillez me montrer un exemple en code. Je ne sais pas comment empiler dans un tableau et ensuite aussi trier.

bool BubleSort(struct &arr[])

{

for(int i = ArraySize(arr)-1;i>=0;i--)
for(int j = i-1;j>=0;j--) {

si (Compare(arr[i],arr[j])<0 ) Swap(arr[i],arr[j]) ;

}

}

Allez vous faire voir - allez à l'école... de tels micro-algorithmes sont écrits de mémoire avec un œil fermé.

sérieusement : prenez un cours d'algorithmique ou autre...

 
Alexey Viktorov #:

Dans votre cas, si les compétences ne sont pas grandes mais la pensée logique fonctionne, comme on peut le déduire de cette question

alors la chose la plus fiable à faire est de vérifier plutôt que d'attendre une réponse positive de quelqu'un d'autre. C'est pourquoi j'ai répondu comme je l'ai fait.
Oui, j'ai déjà trouvé comment l'essayer avec moins de travail. Mais vous ne pouvez pas le vérifier avec un testeur. Je dois attendre des jours ouvrables. Mais vous auriez pu répondre directement) Je ne vous demande pas d'écrire le code à ma place, je vous ai juste posé une question.
 

Maxim Kuznetsov #:

allez vous faire foutre - allez à l'école... de tels micro-algorithmes sont écrits de mémoire et en état d'ébriété, avec un œil fermé

Sérieusement, prends un cours d'algorithmique ou autre.

Intéressante façon de parler... vous n'auriez pas dû vous déranger.

 
MakarFX #:

Intéressante façon de parler... vous n'auriez pas dû vous déranger.

Méthode normale - on vous donne un algorithme de tri. Très bien, triage normal des bulles. Personne n'a fait d'effort.

Et le message normal est vraiment - lire sur les algorithmes

Lisez déjà la littérature.

 

Bonne journée messieurs les programmeurs !!!!

Je vais essayer une nouvelle fois de poser ma question, mais je l'ai un peu reformulée.

Dans une grille EA, nous devons trouver le ticket de l'avant-dernier ordre. Une solution de -1 à partir du ticket de l'ordre maximum ne fonctionne pas dans le testeur de stratégie, peut-être, mais il ne fonctionnera pas sur un compte démo ou réel, donc je joins une image, il sera clair pourquoi.

J'ai écrit le code de la fonction qui détermine l'avant-dernier ticket de commande. Cette logique est la suivante : si nous examinons tous les ordres ouverts dans la grille, nous trouverons le maximum suivant et ce sera le ticket d'ordre nécessaire.

Cependant, mon niveau de programmation n'est pas assez élevé et il y a une erreur dans le code. Le résultat de cette fonction est le ticket minimum. Ces deux fonctions sont le ticket maximum et l'avant-dernier ticket. La fonction définissant le ticket max fonctionne sans problème.

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

Veuillez indiquer la nature de l'erreur. Merci.

 
Scarick #:
Oui, j'ai déjà trouvé comment essayer avec moins d'efforts. Mais je ne peux pas le vérifier avec un testeur. Je dois attendre des jours ouvrables. Mais vous pourriez répondre directement) Je ne vous demande pas d'écrire le code à ma place, je vous ai juste posé une question.

Voilà... Je ne voulais pas vous offenser. Quelle différence une réponse positive ferait-elle ? Après tout, vous devez écrire et vérifier uniquement pendant les heures de travail.

Raison: