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

 
Yevhenii Levchenko:
Est-ce que je comprends bien que dans mt5, au lieu de l'heure de clôture, il faut regarder POSITION_TIME_UPDATE?
Non. Vous avez besoin d'une transaction de clôture.
 
Valerius:

Le TakeProfit est calculé en pips et le Trailing TakeProfit est calculé dans la devise du dépôt. Trailing TakeProfit est le profit dans la devise du dépôt d'un ou plusieurs ordres, et met les stops des ordres dans le montant spécifié dans les paramètres, c'est-à-dire à une distance calculée.

Par exemple, un Trailing Take Profit de 100 $ est spécifié dans les paramètres. Lorsque le prix atteint le profit de 100$ et va plus loin, le programme calcule la distance de 100$ et place tous les stoploss des ordres au point calculé, s'il le permet. Dès que le prix reviendra sur les stops, tous les ordres seront fermés. En principe, c'est la même chose que le Stop suiveur, sauf qu'il est calculé dans la devise de dépôt et qu'il suit le profit. J'ai peut-être fait une erreur quelque part, mais c'est le principe. J'espère l'avoir expliqué.

Traînée - mouvement. Trailing Stop - nous déplaçons le stop selon l'algorithme. Trailing TakeProfit - nous déplaçons le niveau à mesure qu'il s'approche selon un certain algorithme.

 
Artyom Trishkin:
Non. Vous avez besoin d'une transaction de clôture.

Merci !

Voici une fonction pour martin qui vérifie le profit de la dernière transaction. Si elle n'est pas rentable, elle renvoie le volume de la transaction. Dans quelle mesure est-il correct de procéder de cette manière ?

double lastDealVolume() {
   datetime lastDealTime = 0;
   double volume = 0;
   if(HistorySelect(TimeCurrent() - PeriodSeconds(PERIOD_D1) * 10, TimeCurrent())) {
      int historyDealsTotal = HistoryDealsTotal();
      for(int i = historyDealsTotal - 1; i >= 0; i--) {
         if(HistoryDealSelect(HistoryDealGetTicket(i))) {
            ulong dealTicket = HistoryDealGetTicket(i);
            ENUM_DEAL_TYPE dealType = (ENUM_DEAL_TYPE) HistoryDealGetInteger(dealTicket, DEAL_TYPE);
            if(HistoryDealGetString(dealTicket, DEAL_SYMBOL) == _Symbol && HistoryDealGetInteger(dealTicket, DEAL_MAGIC) == MagicNumber &&
                  (dealType == DEAL_TYPE_BUY || dealType == DEAL_TYPE_SELL) ) {
               if(HistoryDealGetInteger(dealTicket, DEAL_TIME) > lastDealTime) {
                  lastDealTime = (datetime) HistoryDealGetInteger(dealTicket, DEAL_TIME);
                  if(HistoryDealGetDouble(dealTicket, DEAL_PROFIT) < 0) {
                     volume = HistoryDealGetDouble(dealTicket, DEAL_VOLUME);
                  } else {
                     volume = 0;
                  }
               }
            }
         }
      }
   } else Print("HistorySelect() (lastOrderVolume) error! ");
   return volume;
}

Si nous voulons connaître le bénéfice de l'ensemble de la position :

-> Rechercher toutes les transactions et obtenir le DEAL_POSITION_ID de la dernière transaction ;
-> Rechercher et obtenir à nouveau le bénéfice de l'ensemble de la position en utilisant DEAL_POSITION_ID ?

Ou y a-t-il un chemin plus court ?

 
Yevhenii Levchenko:

Merci !

Voici une fonction pour martin qui vérifie le profit de la dernière transaction. Si elle n'est pas rentable, elle renvoie le volume de la transaction. Dans quelle mesure est-il correct de procéder de cette manière ?

Si nous voulons connaître le bénéfice de l'ensemble de la position :

-> Rechercher toutes les transactions et obtenir le DEAL_POSITION_ID de la dernière transaction ;
-> Rechercher et obtenir à nouveau le bénéfice de l'ensemble de la position en utilisant DEAL_POSITION_ID ?

Ou y a-t-il un chemin plus court ?

Regardez le problème sous un autre angle. Pourquoi devrions-nous consulter l'historique, si nous pouvons obtenir l'ID de la position au moment de la fermeture de la position et sélectionner les ordres et les transactions de cette position en sachant déjà tout.

 
Alexey Viktorov:

Regardez le problème sous un autre angle. Pourquoi chercher dans l'historique si vous pouvez obtenir l'ID de la position au moment de la fermeture de la position et sélectionner les ordres et les transactions de cette position en sachant déjà tout.

Le problème est que vous devez vérifier cela avant d'ouvrir une transaction :(

Mais si vous n'en avez pas un court, vous pouvez toujours faire le long chemin :)

 
Yevhenii Levchenko:

Le problème est qu'il doit être vérifié avant d'ouvrir une transaction :(

Mais s'il n'y a pas de chemin court, vous pouvez toujours prendre le chemin long :)

Il n'est nécessaire que lors du redémarrage du conseiller expert dans OnInit de le rechercher de cette façon. Et dans le processus de travail de l'EA, nous obtenons les données nécessaires au moment de la fermeture de la position. Mais cela dépend de chacun. Certaines personnes aiment charger le processeur avec des actions inutiles..........

 
Alexey Viktorov:

Cela ne doit être recherché de cette manière que lors du redémarrage de l'Expert Advisor dans OnInit. Et dans le processus de travail du conseiller expert pour obtenir les données nécessaires au moment de la fermeture de la position. Mais tout ceci est l'affaire de tous. Certaines personnes aiment charger le processeur avec des actions inutiles..........

Je suis un peu confus, mais comment tracer le moment de la fermeture d'une position sauf à demander l'état de la position à chaque tick ? Ce ne sont certes pas toutes les positions à interroger, mais tout de même sur chaque demande de coche.

 
Valerius:

Le TakeProfit est calculé en pips et le Trailing TakeProfit est calculé dans la devise du dépôt. Trailing TakeProfit est le profit dans la devise du dépôt d'un ou plusieurs ordres, et met les stops des ordres dans le montant spécifié dans les paramètres, c'est-à-dire à une distance calculée.

Par exemple, un Trailing Take Profit en $100 est spécifié dans les paramètres. Une fois que le prix atteint le profit de 100$ et va plus loin, le programme calcule la distance de 100$ et place tous les stoploss des ordres au point calculé, s'il le permet. Dès que le prix reviendra sur les stops, tous les ordres seront fermés. En principe, c'est la même chose que le Stop suiveur, sauf qu'il est calculé dans la devise de dépôt et qu'il suit le profit. J'ai peut-être fait une erreur quelque part, mais c'est le principe. J'espère l'avoir expliqué.

Valeriy Yastremskiy:

Traînée - mouvement. Trailing Stop - nous déplaçons le stop selon l'algorithme. Trailing TakeProfit - nous déplaçons le niveau à mesure qu'il s'approche selon un certain algorithme.

Ne me frappez pas, mais je ne comprends pas. Dans les paramètres de l'Expert Advisor généré par MetaEditor qui inclut le module de trailing, le niveau de trailing est spécifié en points. Par exemple, j'ai défini le "niveau de suivi duTake Profit(en points)" = 100. Comment fonctionnera cet arrêtoir de suivi ? Corrigez-moi si je me trompe. Lorsque le prix actuel atteint la distance de 100 pips avant le niveau de Take Profit spécifié, l'ordre de suivi est activé. Lorsque le prix atteint et franchit le TP, la position n'est pas fermée. Le chalut commence simplement à suivre le prix à une distance de 100 pips. Si le prix se retourne et va à l'encontre de la position, la position sera fermée par le TP, ou par le SL si le chalut se déplace plus loin que le TP. N'est-ce pas ?
Общие принципы - Торговые операции - Справка по MetaTrader 5
Общие принципы - Торговые операции - Справка по MetaTrader 5
  • www.metatrader5.com
Перед тем как приступить к изучению торговых функций платформы, необходимо создать четкое представление об основных терминах: ордер, сделка и позиция. — это распоряжение брокерской компании купить или продать финансовый инструмент. Различают два основных типа ордеров: рыночный и отложенный. Помимо них существуют специальные ордера Тейк Профит и...
 
altec3:
Ne me frappez pas trop, mais je ne comprends pas. Dans les paramètres du Conseiller Expert généré dans MetaEditor et qui inclut le module de suivi, le niveau de suivi est spécifié exactement en points. Par exemple, j'ai défini le "niveau de suivi duTake Profit(en points)" = 100. Comment fonctionnera cet arrêtoir de suivi ? Corrigez-moi si je me trompe. Lorsque le prix actuel atteint la distance de 100 pips avant le niveau de Take Profit spécifié, l'ordre de suivi est activé. Lorsque le prix atteint et franchit le TP, la position n'est pas fermée. Le chalut commence simplement à suivre le prix à une distance de 100 pips. Si le prix se retourne et va à l'encontre de la position, la position sera fermée par le TP, ou par le SL si le chalut se déplace plus loin que le TP. N'est-ce pas ?

Sans le code, il est difficile de ne pas répondre.

 
Alexey Viktorov:

Cela ne doit être recherché que lors du redémarrage de l'Expert Advisor dans OnInit. Et dans le processus de travail du conseiller expert pour obtenir les données nécessaires au moment de la fermeture de la position. Mais tout ceci est l'affaire de tous. Certaines personnes aiment charger le processeur avec des actions inutiles..........

Il n'est pas vérifié à chaque tique. S'il y a un signal, il commence à vérifier et ouvre une transaction. C'est tout :)
Raison: