Discussion de l'article "Le MQL5 Cookbook : Traitement de l'événement de TradeTransaction" - page 2
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Voici les entrées du journal d'une position fermée par un Take Profit déclenché. Comment cela peut-il être détecté dans OnTradeTransaction( const MqlTradeTransaction& trans, const MqlTradeRequest& request, const MqlTradeResult& result) ?
Ni le code de retour du const MqlTradeResult& result (result.retcode) n'est défini (0 n'est pas une option, TRADE_RETCODE_DONE = 10009) ni l'un des ids (Deal ticket, Order ticket, Request ID ) afin de les trouver sans boucler à chaque fois à travers tous les deals.
Voici le Print à la ligne #376 qui affiche les drapeaux pertinents( ?):
Et voici ce que je peux lire dans le journal :
10:04:40 take profit triggered #2 sell 0.01 EURUSD 1.00319 sl: 1.00816 tp: 1.00171 [#3 buy 0.01 EURUSD at 1.00171]
10:04:40 deal #3 buy 0.01 EURUSD at 1.00171 done (based on order #3)
10:04:40 deal performed [#3 buy 0.01 EURUSD at 1.00171]
10:04:40 order performed buy 0.01 at 1.00171 [#3 buy 0.01 EURUSD at 1.00171]
10:04:40 373 New trade operation dTime1970.01.01 09:03:41
10:04:40 376 0 prc:trans.price=1.00171 tckt: 2 Tr.Type: TRADE_TRANSACTION_DEAL_ADD Tr.OrdType: ORDER_TYPE_BUY Tr.OrdFill: ORDER_STATE_STARTED Tr.tckt:3 2 0 retCode:0 0 0 0 0
10:04:40 489 MqlTradeTransaction: TRADE_TRANSACTION_DEAL_ADD deal #3 DEAL_TYPE_BUY EURUSD 0.01 lot
10:04:40 376 1 prc:trans.price=1.00171 tckt: 2 Tr.Type: TRADE_TRANSACTION_ORDER_DELETE Tr.OrdType: ORDER_TYPE_BUY Tr.OrdFill: ORDER_STATE_FILLED Tr.tckt:3 2 0 retCode:0 0 0 0 0
10:04:40 383 1 prc:trans.price=1.00171 tckt: 2 res.Ord:0 Tr.Type: TRADE_TRANSACTION_ORDER_DELETE Tr.OrdFill: ORDER_STATE_FILLED Tr.OrdType: ORDER_TYPE_BUY Tr.tckt:3 2 0 Res::0 0 0 0 0
10:04:40 408 PosExists #3 2 mag:0 ORDER_STATE_FILLED ORDER_TYPE_BUY
10:04:40 376 2 prc:trans.price=1.00171 tckt: 2 Tr.Type: TRADE_TRANSACTION_HISTORY_ADD Tr.OrdType: ORDER_TYPE_BUY Tr.OrdFill: ORDER_STATE_FILLED Tr.tckt:3 2 0 retCode:0 0 0 0 0
10:04:40 408 PosExists #3 2 mag:0 ORDER_STATE_FILLED ORDER_TYPE_BUY
2022.09.26 14:08:33.755 disconnected
Le terminal écrit magnifiquement "take profit triggered #2 sell 0.01 EURUSD 1.00319 sl : 1.00816 tp : 1.00171 [#3 buy 0.01 EURUSD at 1.00171]".
Alors pourquoi n'y a-t-il pas un indicateur comme TRADE_TRANSACTION_TRIGGERED_PT et TRADE_TRANSACTION_TRIGGERED_SL ?
Et le code de retour de la requête est-il toujours désactivé ?
Denis, merci pour cet article ! Je l'ai lu avec intérêt, mais je n'ai pas encore pleinement réalisé ce que j'ai lu. J'ai également téléchargé votre Expert Advisor TradeProcessor et je l'ai exécuté sur mon terminal, où j'ai actuellement une position ouverte. J'ai regardé les impressions et immédiatement quelques questions sont apparues, auxquelles je veux trouver des réponses par moi-même. Si je n'y parviens pas, je vais devoir vous déranger. ))
Cordialement, Vladimir.
Cordialement, Vladimir.
Je vous remercie pour votre avis. Vous êtes le bienvenu, M. Brooklin ! ))
Je vous remercie pour votre avis. De rien, MrBrooklin ! ))
Denis, désolé, mais sans votre aide mon esprit "explose". Voici le résultat d'une des passes de votre EA (en passant, un EA très cool !!!):
Ce que je ne comprends pas :
ENUM_DEAL_TYPE
Identifiant
Description
DEAL_TYPE_BUY
Acheter
Question - comment lors de la modification d'un ordre en attente SELL_STOP le type de transaction est déterminé à BUY ?????))
Cordialement, Vladimir.
Et il n'y a pas de transaction. Le placement d'un ordre en attente et son traitement n'entraînent aucune transaction. Trade ticket = 0, type = 0, où 0 est équivalent à DEAL_TYPE_BUY pour l'énumération ENUM_DEAL_TYPE. En d' autres termes, dans la structure MqlTradeTransaction trans , certains champs sont renseignés et d'autres non. Les champs non remplis sont généralement annulés.
Pour plus de détails, voir la documentation sur les ordres en attente.
Le champ deal sera renseigné pour une transaction de ce type:
TRADE_TRANSACTION_DEAL_*
Les champs suivants sont renseignés dans la structure MqlTradeTransaction pour les transactions commerciales liées au traitement des transactions (TRADE_TRANSACTION_DEAL_ADD, TRADE_TRANSACTION_DEAL_UPDATE et TRADE_TRANSACTION_DEAL_DELETE) :
Seuls 3 types de transactions appartiennent aux types "deal" : TRADE_TRANSACTION_DEAL_ADD, TRADE_TRANSACTION_DEAL_UPDATE, TRADE_TRANSACTION_DEAL_DELETE.
Et il n'y a pas de transaction. Le placement d'un ordre en attente n'entraîne aucune transaction. Trade ticket = 0, type = 0, où 0 est équivalent à DEAL_TYPE_BUY pour l'énumération ENUM_DEAL_TYPE . En d' autres termes, dans la structure MqlTradeTransaction trans , certains champs sont renseignés et d'autres non. Les champs non remplis sont généralement mis à zéro.
Pour plus de détails, voir la documentation sur les ordres en attente.
Ahhhh, c'est tout ! !! Bon sang, ça m'a cassé la tête ! ))
Je vous remercie !!!
Bien à vous, Vladimir.