Comment vérifier si un ordre a été clôturé par un stop loss ? - page 2

 

Pourriez-vous répondre uniquement si vous savez de quoi vous parlez ?

Il s'agit d'un sujet sur MT5/mql5, je supprimerai tous les messages non pertinents.

Il n'y a pas de prix stoploss dans l'historique sur MT5.

 

Le principal problème dans mql5 (compte de couverture) est de connaître le prix du Stop Loss, lorsqu'une position est fermée, en raison du manque d'historique des positions. Vous pouvez utiliser HistorySelectByPosition() pour trouver votre Stop Loss initial (Stop Loss de l'ordre initial), mais si vous avez modifié ce Stop Loss plus tard, il génère de nouveaux ordres pour le faire, sans le même POSITION_ID, et donc, ils ne seront pas sélectionnés par la fonction HistorySelectByPosition(), il devient donc très difficile de connaître le dernier Stop Loss que vous avez placé.

Je ne sais pas si cela peut être considéré comme un bug, mais si non, il devrait l'être.

Salutations.

Documentation on MQL5: Trade Functions / HistorySelectByPosition
Documentation on MQL5: Trade Functions / HistorySelectByPosition
  • www.mql5.com
Trade Functions / HistorySelectByPosition - Reference on algorithmic/automated trading language for MetaTrader 5
 
Jose Francisco Casado Fernandez:

Le principal problème dans mql5 (compte de couverture) est de connaître le prix du Stop Loss, lorsqu'une position est fermée, en raison du manque d'historique des positions. Vous pouvez utiliser HistorySelectByPosition() pour trouver votre Stop Loss initial (Stop Loss de l'ordre initial)...

Non, vous ne pouvez pas ou je vous ai mal compris.

Le Stoploss actuel n'est nulle part dans l'historique.

 
Alain Verleyen:

Non, vous ne pouvez pas ou je vous ai mal compris.

Le stoploss n'existe nulle part dans l'histoire.

Vous pouvez utiliser HistorySelectByPosition(), avec votre POSITION_ID, et ensuite vous pouvez trouver le premier ordre avec cette POSITION_ID, et vérifier le Stop Loss de cet ordre (HistoryOrderGetDouble(ticket, ORDER_SL). Cela a fonctionné pour moi, mais
.le problème est que vous modifiez ce Stop Loss plus tard.
 
Jose Francisco Casado Fernandez:
Vous pouvez utiliser HistorySelectByPosition(), avec votre POSITION_ID, et ensuite vous pouvez trouver le premier ordre avec cette POSITION_ID, et vérifier le Stop Loss de cet ordre (HistoryOrderGetDouble(ticket, ORDER_SL). Cela a fonctionné pour moi, mais
.le problème est que vous modifiez ce Stop Loss plus tard.

Ok compris maintenant, vous avez raison.

 
Jose Francisco Casado Fernandez:
Vous pouvez utiliser HistorySelectByPosition(), avec votre POSITION_ID, et ensuite vous pouvez trouver le premier ordre avec ce POSITION_ID, et vérifier le Stop Loss de cet ordre (HistoryOrderGetDouble(ticket, ORDER_SL). Cela a fonctionné pour moi, mais
.le problème est lorsque vous modifiez ce Stop Loss plus tard.
Ensuite, vérifiez que ORDER_POSITION_ID est égal à DEAL_POSITION_ID,
puis vérifiez DEAL_ENTRY, si OUT, obtenez HystoryDealGetDouble(ticket,DEAL_PRICE).

Si DEAL_PRICE est égal à HistoryOrderGetDouble(ticket,ORDER_SL), cela signifie que l'ordre a étéclôturé à en raison d'un stop loss.

Voici mon opinion.

 
Alain Verleyen:

Ok compris maintenant, tu as raison.

Ok, et savez-vous pourquoi si vous modifiez le Stop Loss plus tard, le nouvel ordre généré pour le faire, ne montre pas le même POSITION_ID ? ???. Ce serait la solution parfaite pour ce problème. Est-ce un bug ???. Merci.
 
Roberto Jacobs:

Si DEAL_PRICE est égal à HistoryOrderGetDouble(ticket,ORDER_SL), cela signifie que l'ordre a étéclôturé à en raison d'un stop loss.

Qu'en est-il du slippage ?
 
Roberto Jacobs:
Et ensuite, vérifiez que ORDER_POSITION_ID est égal à DEAL_POSITION_ID,
puis vérifiez DEAL_ENTRY, si OUT, obtenez HystoryDealGetDouble(ticket,DEAL_PRICE).

Si DEAL_PRICE est égal à HistoryOrderGetDouble(ticket,ORDER_SL), cela signifie que l'ordre a étéfermé en raison d'un stop loss.

Voici mon opinion.

Oui, c'est ce que je disais. Je l'ai fait ainsi, et cela a fonctionné, mais si vous modifiez le Stop Loss initial, cela génère un nouvel ordre SANS le même POSITION_ID. Je ne sais pas pourquoi. Je pense que c'est un bug. Salutations,.
 
honest_knave:
Qu'en est-il du slippage ?

Il n'y a pas besoin de regarder le slippage, car l'ordre a été clôturé, et le prix de clôture est sur HystoryDealGetDouble(ticket, DEAL_PRICE).
Si l 'ordre n' a pas été clôturé et que vous passez un ordre de clôture, vous devez tenir compte de la quantité de slippage, afin d'éviter toute erreur .