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

 
ulong  HistoryDealGetTicket(
   int  index      // номер сделки
   );

Qu'est-ce qu'un numéro de transaction ?

Comment sélectionner la dernière transaction ? Index 0 ?

J'ai un compte avec une position ouverte et un historique des transactions. Je veux sélectionner la dernière transaction :

#include <Trade\DealInfo.mqh>  

CDealInfo deal;  

   for(int n=20;n>=0;n--)
     {
      deal.SelectByIndex(n);
      Print("Тикет сделки=",deal.Ticket()," n=",n);
     }


Tous les tics 0...
 
tor4en:
ulong  HistoryDealGetTicket(
   int  index      // номер сделки
   );

Qu'est-ce qu'un numéro de transaction ?

Voir la description de la fonction HistoryDealGetTicket(). Il y a également un exemple de la façon de travailler avec une liste de transactions.
 
Yedelkin:
Voir la description de la fonction HistoryDealGetTicket(). Il existe également un exemple de la manière de travailler avec la liste des transactions.
La façon de travailler avec la fonction SelectByIndex() de la bibliothèque standard n'est pas claire.
 
tor4en La façon de traiter la fonction SelectByIndex() de la bibliothèque standard n'est pas claire.
J'ai essayé de proposer une réponse à votre question "Qu'est-ce qu'un numéro de transaction ?". Pouvons-nous supposer que vous avez traité cette question ?
 
Yedelkin:
J'ai essayé de proposer une réponse à votre question "Qu'est-ce qu'un numéro de transaction ? Pouvons-nous supposer que vous avez traité cette question ?
Vous pouvez, merci. Pouvez-vous me dire s'il est possible de sélectionner la dernière offre sur une position sans passer par les offres et comparer les temps ou leurs tickets ?
 
tor4en: Savez-vous s'il est possible de sélectionner la dernière transaction d'une position sans passer par les transactions et comparer les temps ou les ticks ?

1. Malheureusement, j'essaie de ne pas utiliser la bibliothèque standard, et je ne peux donc pas donner de conseils appropriés sur la façon de travailler avec la méthode SelectByIndex(). Je ne peux que constater que la classe CDealInfo elle-même est positionnée comme une classe permettant de travailler avec les propriétés des transactions, c'est-à-dire que la question de l'obtention de la liste des transactions semble être laissée de côté.

2. Comme vous le savez, la méthode SelectByIndex() utilise simplement la fonction HistoryDealGetTicket(). De la description de cettefonction, il ressort qu'avant d'accéder à la transaction, il est nécessaire d'obtenir la liste de toutes les transactions . En particulier,

//--- запросим историр ю сделок в указанном интервале
   HistorySelect(from_date,to_date);
//--- общее количество в списке сделок
   int deals=HistoryDealsTotal();
//--- теперь обработаем каждую сделку
   for(int i=0;i<deals;i++)
     {
      deal_ticket=HistoryDealGetTicket(i);
      ...
     }

Il y a environ un an, j'ai demandé sur le forum s'il était possible de considérer que la dernière transaction de la liste a toujours un indice de HistoryDealsTotal()-1, mais je n'ai pas reçu de réponse (ou je n'ai pas remarqué, ce qui est peu probable). En utilisant la méthode de la preuve scientifique, je n'ai pas trouvé de réfutation de cette thèse. Ainsi, logiquement, chaque nouvelle affaire, dont l'information est reçue dans le terminal de base, devrait simplement augmenter la liste des affaires d'une unité et, respectivement, les indices dans la liste des affaires seraient assignés à chaque nouvelle affaire dans l'ordre croissant. Comment c'est dans la réalité - je ne sais pas.

3. Je vous suggère également de lire l'articleOrdres, positions et transactions dans MetaTrader 5 et (je ne l'ai pas lu moi-même) - Comment utiliser les classes de transactions de la bibliothèque standard lors de l'écriture d'un conseiller expert.

C'est tout :)

 
HistoryDealsTotal()-1
Cela semble être une bonne idée. Si nous recherchons des transactions par position spécifique, il est préférable d'utiliser HistorySelectByPosition(position_ID). Merci.
Документация по MQL5: Торговые функции / HistorySelectByPosition
Документация по MQL5: Торговые функции / HistorySelectByPosition
  • www.mql5.com
Торговые функции / HistorySelectByPosition - Документация по MQL5
 
tor4en: Si nous recherchons des transactions sur une position spécifique, il est préférable d'utiliser HistorySelectByPosition().
Tout à fait exact :)
 
Bonjour !!!

Experts, aide, s'il vous plaît. J'ai construit deux EA pour, pour ainsi dire, un effet de synergie, les plus simples semblent se connecter, mais celui-ci ne compile pas, bien que j'aie tout fait correctement comme avec le précédent. Voici ce qu'il donne

Superviseur - la fonction ne peut être déclarée que dans la portée globale 20_200_pips_MQL5_v1.mq5 360 18

Perceptron' - la fonction ne peut être déclarée que dans la portée globale 20_200_pips_MQL5_v1.mq5 418 8

basicTradingSystem' - la fonction ne peut être déclarée que dans la portée globale 20_200_pips_MQL5_v1.mq5 434 6

La fonction ne peut être déclarée que dans la portée globale.

Je suis vraiment confus. Où est la portée globale ?

 
chipo: J'ai connecté deux EAs pour une sorte d'effet de synergie, les plus simples semblent se connecter, mais celui-ci ne compile pas, bien que j'aie tout fait correctement comme avec le précédent. Voici ce qu'il donne

Superviseur - la fonction ne peut être déclarée que dans la portée globale 20_200_pips_MQL5_v1.mq5 360 18

Perceptron' - la fonction ne peut être déclarée que dans la portée globale 20_200_pips_MQL5_v1.mq5 418 8

basicTradingSystem' - la fonction ne peut être déclarée que dans la portée globale 20_200_pips_MQL5_v1.mq5 434 6

La fonction ne peut être déclarée que dans la portée globale.

Je suis vraiment confus, où est la portée globale ?

De tels messages apparaissent, par exemple, lorsqu'une fonction est déclarée à l'intérieur d'une autre. Regarde s'il y a quelque chose comme ça dans le code :

func_1()
   {
    void  func_2()...
   }
Raison: