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

 
trader781:
Par exemple : Comment puis-je attendre la clôture d'une transaction ?
Alexey Viktorov:
1. Lorsqu'un ordre est ouvert, on écrit le ticket dans la variable de niveau global ou statique, puis on surveille cet ordre jusqu'à ce qu'il soit de couleur bleue, oups, jusqu'à ce qu'il soit fermé par comparaison OrderCloseTime() > 0. Si le délai de clôture est supérieur à zéro, l'ordre est clôturé.

2. La substitution de l'opérateur GOTO est beaucoup plus efficace. Lisez la documentation sur les fonctions.

Y a-t-il un moyen de me montrer un exemple ? Comment puis-je attendre la clôture de la transaction précédente ?

double Lot = 0.1;      

double loss = 100;  



int start()

  {

  int order;

    if(OrdersTotal()==0)                            

    {                  

      order = OrderSend(Symbol(),OP_BUY,Lot,Ask,1*Point,Ask-loss*Point,Ask+loss*Point);   // Вверх

      order = OrderSend(Symbol(),OP_SELL,Lot,Bid,1*Point,Bid+loss*Point,Bid-loss*Point);    // Вниз

    }



   return(0);

  }

//+------------------------------------------------------------------+

 
DenZell:

Y a-t-il un moyen de me montrer un exemple ? Comment puis-je attendre la clôture de la transaction précédente ?

double Lot = 0.1;      

double loss = 100;  



int start()

  {

  int order;

    if(OrdersTotal()==0)                            

    {                  

      order = OrderSend(Symbol(),OP_BUY,Lot,Ask,1*Point,Ask-loss*Point,Ask+loss*Point);   // Вверх

      order = OrderSend(Symbol(),OP_SELL,Lot,Bid,1*Point,Bid+loss*Point,Bid-loss*Point);    // Вниз

    }



   return(0);

  }

//+------------------------------------------------------------------+

Il existe plusieurs options.

La plus simple est la séquence d'actions. D'abord, nous essayons de faire quelque chose avec un ordre déjà ouvert, et ensuite, s'il n'y a pas d'ordre ouvert, nous essayons de le fixer.

Nous divisons le traitement des positions et l'ouverture d'un nouvel ordre en deux fonctions distinctes définies par l'utilisateur. Ensuite, dans la fonction OnTick(), vérifiez la présence d'ordres ouverts et appelez l'une ou l'autre des fonctions en fonction du résultat obtenu.

Cela ressemble à ceci en mots :

void OnTick()
{
if(OrdersTotal() > 0)
  открытие();
else
  сопровождение();
}

bool открытие()
{
// здесь код открытия
}

bool сопровождение()
{
// здесь код сопровождения
}
Et il est encore plus difficile de vérifier un ordre spécifique si OrderCloseTime() > 0.

C'est le cas si le compte le prévoit, mais le plus souvent il s'agit de travailler avec d'autres Expert Advisors ou d'ouvrir des ordres manuellement.
 
est-il possible de sélectionner par programme la date de début de l'historique du compte dans le terminal ?
 
Money_Maker:
Puis-je sélectionner par programme la date de début de l'historique du compte dans le terminal ?
Vous pouvez. Ce sera la toute première commande de l'histoire avec un fonctionnement de type 6 - balance. L'heure d'ouverture de cette commande sera le début de l'historique du compte.
 
Artyom Trishkin:
Vous pouvez. Ce sera la première commande de l'histoire avec un fonctionnement de type 6 - balance.
Je n'ai pas besoin de la première commande dans l'historique ... l'historique s'ouvre au maximum ... j'ai besoin de l'historique à partir d'une certaine date ... que je définirai par programme (apparemment, la question a été simplifiée en raison des détails).
 
Money_Maker:
Je n'ai pas besoin de la première commande dans l'historique ... l'historique est ouvert au maximum J'ai besoin de l'historique à partir d'une certaine date ... que je vais définir par programme (apparemment la question a été simplifiée au détriment des détails)
La réponse est également possible.

Mais la question est toujours "rationalisée", donc je dirai que nous devrions ignorer les ordres dont l'heure d'ouverture est antérieure à cette "date spécifique".
 
Artyom Trishkin:
La réponse est également que vous le pouvez.

Mais la question reste quand même "rationalisée", donc je dirais qu'il faut sauter les commandes dont l'heure d'ouverture est antérieure à cette "certaine date"... bien sûr ça ne m'est pas venu à l'esprit... mais depuis 7 ans il y a beaucoup de commandes....
Je n'ai pas vraiment pensé à filtrer par date ... mais 7 ans, c'est beaucoup de commandes ...
la question est soulignée en rouge dans la capture d'écran ... donc la question n'est pas épurée ?
 
Money_Maker:
Bien sûr, il ne m'est pas venu à l'esprit de filtrer par date... mais en 7 ans, il y a beaucoup de commandes...
Dans la capture d'écran, la question est soulignée en rouge et vous devez y mettre une certaine date... donc la question n'est pas épurée ?
Je ne comprends pas votre question :(

Que voulez-vous faire exactement de manière programmatique ?
 
Artyom Trishkin:
Je ne comprends pas votre question :(

Que voulez-vous faire exactement de manière programmatique ?
Là où elle est soulignée en rouge, entrez la date et cliquez essentiellement sur ok... cela détermine la profondeur de l'historique dans le rapport.
 
Money_Maker:
là où elle est soulignée en rouge, entrez la date et cliquez essentiellement sur ok... cela détermine la profondeur de l'historique dans le rapport
Vous ne pouvez pas le faire de manière programmatique dans un mql pur. Vous devez rechercher cette fenêtre et la date par le biais de WinAPI, je pense.