Caractéristiques du langage mql5, subtilités et techniques - page 20

 
Andrey Dik:

Pour la couverture aussi.

Au fil des ans, mon cerveau s'est aiguisé à la compensation. Ordre->Transaction->Position. Il peut y avoir plusieurs transactions dans une position(dans une couverture il n'y a qu'une seule transaction, corrigez-moi si je me trompe), vous pouvez dire ce qui est arrivé à la position par le type de transaction.

Dans une couverture, c'est bien sûr plus facile à comprendre, mais plus difficile à suivre. Bien sûr qu'elle l'est.

Un tant que la position existe sur le marché. Mais lorsqu'elle est fermée, il y a un deuxième ordre et une deuxième transaction.

ps ; je me trompe probablement. Voir ps dans le post ci-dessous.

 
Artyom Trishkin:
Et le chalut SL ? Comment allez-vous déterminer ce qui a été fermé sur le chalut SL du côté positif ?

Ok, je n'avais pas envisagé ça. Vérifions ensuite le prix de l'ordre qui a ouvert la position et le prix de l'ordre qui a fermé la position.

Bien que nous puissions probablement laisser les commandes tranquilles et ne fonctionner qu'avec des accords.

ps ; Non... Il y a quelque chose qui ne va pas ici. Après tout, chaque changement de Take ou Stop après l'ouverture de la position est un nouvel ordre et une nouvelle affaire. Apparemment, c'est avec ça que nous devons travailler...

Je ne peux pas le vérifier, je n'ai pas de positions avec des stops. Seulement certains avec des prises.

 
Alexey Viktorov:

Lorsque vous trouvez le dernier trade DEAL_ENTRY_OUT et que vous sélectionnez l'historique complet de la position HistorySelectByPosition dans cette liste, il y a, pour les comptes hadge 2 trades et 2 ordres, ouvrant une position et la fermant. L'ordre sur la base duquel la fermeture a eu lieu contient ORDER_PRICE_OPEN. Ensuite, vous vérifiez le type de position et le type d'ordre qui a été utilisé pour la fermer. Si le type d'ordre est opposé, cela signifie qu'il s'agit d'une clôture. Par conséquent, le prix de l'ordre est le prix que nous devons rechercher, avec une correction mineure : Si le profit de l'ordre est > 0, alors c'est le prix du TP, s'il est < 0, alors la position a été fermée sur le SL.

Si nous nous appuyons sur le commentaire de l'ordonnance, je ne le ferais pas.

Ce n'est pas si simple. Le dernier ordre dans une position peut être celui qui a fermé la position aussi bien que celui qui l'a inversée.

En ce qui concerne SL et TP - à partir du commentaire pour déterminer le moyen le plus facile et le plus fiable. Comparer les prix pour le SL et le TP ne fonctionnera pas toujours correctement, parce que le SL et le TP peuvent être à la fois dans la zone de profit et de perte. Cela a déjà été discuté assez vivement sur le forum, M. Sergeev a donné la solution appropriée pour le commentaire que j'ai cité.

 
Andrey Dik:

Ce n'est pas si simple. Le dernier ordre d'une position peut être soit celui qui a fermé la transaction, soit celui qui l'a inversée.

Et à propos de SL et TP - du devis pour déterminer le moyen le plus simple et le plus fiable. La comparaison des prix du SL et du TP ne fonctionnera pas toujours correctement, car le SL et le TP peuvent tous deux se trouver dans la zone de profit et de perte.

Je n'ai pas dit que c'était facile. En fait, ce n'est que sur les comptes nets que le SL et le TP sont égaux au SL et au TP. Et seulement dans les comptes de compensation. Dans les comptes de couverture, pour inverser une position, il faut la fermer par la position opposée avec un plus grand volume. N'est-ce pas ?

Ce sujet est intéressant, mais je ne peux pas le vérifier pour les raisons susmentionnées. Je n'ai pas de positions avec des stops et des takeaways, surtout des trailing.

 
Alexey Viktorov:

Un ordre qui inverse une position ne peut pas être un take ou un stop.

TP et SL ne sont pas des ordres dans le système comptable MT, ce sont des propriétés de position. Vous ne pouvez donc pas travailler avec SL/TP sur les ordres/trades (même le moteur du site sage le confirme avec un lien).

Alexey Viktorov:

Dans les comptes de couverture, pour inverser une position, vous devez la fermer avec un ordre opposé d'un volume plus important. N'est-ce pas ?

Non, ça ne l'est pas. Dans les comptes de couverture, une position ne peut pas être inversée, elle peut seulement être fermée.

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства позиций
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства позиций
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства позиций - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Andrey Dik:

TP et SL ne sont pas des ordres dans le système comptable MT, ce sont des propriétés de position. Vous ne pouvez donc pas travailler avec SL/TP sur les commandes/transactions (même le moteur du site sage confirme avec un lien).

Non, ça ne l'est pas. Dans les comptes de couverture, une position ne peut pas être inversée, elle peut seulement être fermée.

Mais une fois qu'une position est fermée, ses propriétés ne sont plus disponibles. Il vous suffit de rechercher les informations nécessaires sur les ordres et les transactions.
 

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

MQL5 Comment savoir si une transaction s'est terminée sur un stop loss ou non ?

fxsaber, 2017.02.14 19:46

Ticket l'ordre qui a été la raison de la fermeture de la position, le pousser ici.
#define ORDER_TYPE_TAKEPROFIT (-1)
#define ORDER_TYPE_STOPLOSS   (-2)

int GetOrderType(const ulong OrderTicket)
{
  int OrderType=(int)::HistoryOrderGetInteger(OrderTicket,ORDER_TYPE);

  if((OrderType==ORDER_TYPE_BUY) || (OrderType==ORDER_TYPE_SELL))
    {
     const string OrderComment=HistoryOrderGetString(OrderTicket,ORDER_COMMENT);
     const string OrderPrice=::DoubleToString(::HistoryOrderGetDouble(OrderTicket,ORDER_PRICE_OPEN),
                                              (int)::SymbolInfoInteger(HistoryOrderGetString(OrderTicket,ORDER_SYMBOL),SYMBOL_DIGITS));

     if(OrderComment=="tp "+OrderPrice)
        OrderType=ORDER_TYPE_TAKEPROFIT;
     else if(OrderComment=="sl "+OrderPrice)
        OrderType=ORDER_TYPE_STOPLOSS;
    }

  return(OrderType);
}
 
Andrey Dik:
Donnez-moi un exemple, s'il vous plaît.
Un exemple de quoi ? Que les propriétés du poste ne sont pas disponibles après sa fermeture ?
 
Alexey Viktorov:
Un exemple de quoi ? Que les propriétés d'une position ne sont pas disponibles après sa fermeture ?
Un exemple de la façon dont vous déterminez la fermeture de la position SL ou TP sur les ordres et les transactions. J'ai donné un exemple de la façon dont vous déterminez cela dans votre commentaire.
 
Andrey Dik:
Exemple de la façon dont vous déterminez la position SL ou TP fermée sur les ordres et les transactions. J'ai donné un exemple de la façon dont vous déterminez cela dans votre commentaire.

Je ne fais rien. Même dans mql4, je trouve inutile de consulter l'historique des commandes. Je suis encore en train de déterminer la direction dans laquelle je pourrais commencer à creuser si nécessaire. Étant donné qu'il n'y a pas de postes en trafic dans aucun terminal, je ne peux tout simplement pas les vérifier.

Par conséquent, après avoir fermé la position sur mes comptes, il n'y a que 2 ordres et 2 transactions se rapportant à la position. En les utilisant, nous pouvons obtenir certaines informations sur la position. Par exemple, à quel prix la demande a été ouverte et à quel prix l'ordre a été ouvert. Par conséquent, nous pouvons facilement déterminer le slippage auquel la position a été ouverte.

Je traite les commentaires avec prudence depuis MT4 car les sociétés de courtage écrasent tous les commentaires selon leurs propres raisons.

Raison: