La grande et terrible MT4 pour toujours (ou comment organiser une transition) - page 26

 
fxsaber:

Il n'y a probablement pas de tel drapeau à l'intérieur.

Apparemment non.

mais je pense que MQ pourrait bien en fabriquer un, d'autant plus qu'il s'agirait d'un drapeau par terminal, c'est-à-dire pour tous les programmes.

 
Artyom Trishkin:
Je vais probablement le proposer. Mais beaucoup plus tard. En raison de circonstances subjectives. Malheureusement. En attendant, considérez-vous comme un démagogue. Pas interdit.

Toujours d'actualité ? Votre version de la solution sera-t-elle ?

 
Igor Makanu:

Toujours d'actualité ? Votre version de la solution sera-t-elle ?

Vous avez cité mon message, qui disait "beaucoup plus tard". Pour moi, "beaucoup plus tard" signifie pas avant un an au moins. Non pas parce que c'est le temps qu'il faut pour trouver une solution, mais simplement en raison de circonstances subjectives, malheureusement.

 
Artyom Trishkin:

ce ne sera pas avant au moins un an.

OK, donc ce n'est pas pertinent.

 
Vous pouvez probablement encore penser à des problèmes qui sont simples du point de vue de leurs conditions, et dont les solutions entraînent des difficultés inattendues.
 
fxsaber:
Vous pouvez probablement encore trouver des problèmes simples, dont la solution entraîne des difficultés inattendues.

Le script surveille l'excès de risque : si le nombre total de positions et d'ordres en attente dépasse deux - signalez-le et sortez.


Un code concis :

void OnStart()
{
  while (!IsStopped())
    if ((PositionsTotal() + OrdersTotal() > 2)) // Если (риск превышен) число отложек/позиций больше двух,
    {
      Alert("Risk exceeded!");                  // сообщаем      
      ExpertRemove();                           // и выходим.
    }
}


Nous examinons le comportement du script en fonction des actions manuelles. Avant de le faire (avant d'exécuter le script), marquons le nombre de positions sur le compte PosTotal, ordres - OrdTotal.

Script PosTotal/OrdTotal Action Résultat du script
01 0/0 Ouvrez un poste. Travaux.
02 0/0 Placez une position en attente. Ça marche.
03 0/1 Met une attente en attente. 03 0/1 Faire une pause.
04 0/1 Ouvrez un poste. Alerte (pas toujours).
05 0/1 Supprime une position en attente. Travaux.
06 1/0 Placer un ordre en attente. Travaux.
07 1/0 Ouverture d'un poste. Alerte (pas toujours).
08 1/0 Position fermée. Travailler.
09 1/1 Suppression d'un poste en attente. Travailler.
10 1/1 Fermeture d'une position. Alerte.
11 0/2 Supprime une position en attente. Travailler.
12 2/0 Fermeture d'une position. Alerte.


Cela semble être une tâche très simple, mais des alertes. Quelles sont les variantes de la solution ?


Nous devrions probablement travailler sur des tâches aussi simples et développer notre compréhension de MT5.

 
fxsaber:

Le script surveille l'excès de risque : si le nombre total de positions et d'ordres en attente dépasse deux - signalez-le et sortez.


Un code concis :


Nous examinons le comportement du script en fonction des actions manuelles. Avant de le faire (avant d'exécuter le script), marquons le nombre de positions sur le compte PosTotal, ordres - OrdTotal.

Script PosTotal/OrdTotal Action Résultat du script
01 0/0 Ouvrez un poste. Travaux.
02 0/0 Placez une position en attente. Ça marche.
03 0/1 Met une attente en attente. 03 0/1 Faire une pause.
04 0/1 Ouvrez un poste. Alerte (pas toujours).
05 0/1 Supprime une position en attente. Travaux.
06 1/0 Placer un ordre en attente. Travaux.
07 1/0 Ouverture d'un poste. Alerte (pas toujours).
08 1/0 Position fermée. Travailler.
09 1/1 Suppression d'un poste en attente. Travailler.
10 1/1 Fermeture d'une position. Alerte.
11 0/2 Supprime une position en attente. Travailler.
12 2/0 Fermeture d'une position. Alerte.


Cela semble être une tâche très simple, mais des alertes. Quelles sont les variantes de la solution ?


C'est probablement sur des tâches simples comme celle-ci que nous devons travailler notre compréhension de MT5.

Qu'est-ce que le MQ5 a à voir avec ça ? La condition de sortie de la boucle : IsStopped et pas plus de deux ordres. Alors le script fonctionne, et si la condition ne fonctionne pas, le script fonctionne aussi.

 
Алексей Тарабанов:

Qu'est-ce que cela a à voir avec le MQ5 ? Condition de sortie de la boucle : IsStopped et pas plus de deux ordres. Alors le script fonctionne, et si la condition ne fonctionne pas, le script fonctionne aussi.

Le code contient même des commentaires.

 
fxsaber:

Le script surveille le risque : si le nombre total de positions et d'ordres en attente dépasse deux, il le signale et sort.

Un code concis :


Cela semble être une tâche très simple, mais des alertes. Quelles sont les variantes de la solution ?


C'est probablement le type de tâches simples que nous devrions utiliser pour développer notre compréhension de MT5.

Je pense que je dois faire quelque chose comme ça :

void OnStart()
{
   while (!IsStopped())
   {
      //--- посчитаем ордера
      int orders = 0;
      for(int i = 0; i < OrdersTotal(); i++)
         if(OrderGetTicket(i) > 0 && OrderGetInteger(ORDER_TYPE) < ORDER_TYPE_CLOSE_BY) orders++;
      
      if(orders + PositionsTotal() > 2) break;     // выходим
   }
   if(!_StopFlag) Alert("Risk exceeded!");         // сообщаем
}
 
Igor Makanu:

Il faut probablement faire quelque chose comme ça :

Il est certain que vous devez filtrer les commandes. Ce n'est pas une chose facile à faire.

ZS C'est une situation intéressante sur le forum. Réponses actives aux questions. C'est différent ici, apparemment.
Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
  • 2016.11.09
  • www.mql5.com
В этой ветке я хочу начать свою помощь тем, кто действительно хочет разобраться и научиться программированию на новом MQL4 и желает легко перейти н...
Raison: