Lorsque vous fermez une position par Stop Loss, le volume est doublé, tandis que si elle se ferme par Take Profit, le volume minimum est utilisé. Pour savoir si une transaction a été réalisée suite à l'activation d'un Stop Loss ou d'un Take Profit, on utilise la fonction OnTradeTransaction.
Une excellente énumération ENUM_DEAL_REASON a été ajoutée dans la version 1625 :
| ENUM_DEAL_REASON | Description de la raison |
|---|---|
| ... | ... |
| DEAL_REASON_SL | L'opération a été exécutée suite à l'activation du Stop Loss |
| DEAL_REASON_TP | L'opération a été exécutée suite à l'activation du Take Profit |
| ... | ... |
Vous pouvez vérifier cela dans OnTradeTransaction.
En d'autres termes, c'est une méthode simple et fiable pour déterminer si une transaction résulte d'un Take Profit ou d'un Stop Loss.
Actuellement (version 1626), cet Expert Advisor ne peut être vérifié que dans un test en direct, en le lançant sur un graphique ou en mode débogage sur des données réelles (F5 dans l'éditeur MetaEditor). J'ai utilisé la manœuvre suivante :
Dans OnTradeTransaction, nous avons déterminé si le Take Profit ou le Stop Loss a été déclenché :
if(deal_symbol==m_symbol.Name() && deal_magic==m_magic) if(deal_entry==DEAL_ENTRY_OUT) { if(deal_reason==DEAL_REASON_SL) ExtLot*=2.0; else if(deal_reason==DEAL_REASON_TP) ExtLot=m_symbol.LotsMin(); }
Commentaire 0