OnTradeTransaction - page 6

 
prostotrader:

Vous pouvez ne vous souvenir de rien du tout

Je suis d'accord que cela fonctionnerait (dans le cas d'un versement complet)
void OnTradeTransaction ( const MqlTradeTransaction &Trans, const MqlTradeRequest &Request, const MqlTradeResult &Result )
{
  if ((Trans.type == TRADE_TRANSACTION_DEAL_ADD) && (Trans.position > 0) && !PositionSelectByTicket(Trans.position))
    Print("Position #" + (string)Trans.position + " - triggered SL/TP.");
}

Mais la conversation semble s ' élargir un peu plus.
 
Andrey Dik:

Tu es très inattentif, ce n'est pas moi qui ailancé le sujet.

Vous devriez aussi me montrer un code comme celui-ci :

//——————————————————————————————————————————————————————————————————————————————
void  OnTradeTransaction (const MqlTradeTransaction &trans,   // структура торговой транзакции
                          const MqlTradeRequest     &request, // структура запроса
                          const MqlTradeResult      &result)  // структура ответа
{
  
}  

Si vous ne l'aimez pas, vous pouvez utiliser Joba ! C'est vrai ?

J'ai passé suffisamment de temps pour répondre à votre question.

Si votre question n'était pas aussi "abstraite", la réponse serait peut-être plus précise.

A savoir :

1. FORTS ou FOREX

2. Quel type utilisez-vous : filet ou hedgie ?

3. si d'autres commandes sont utilisées pendant la durée de vie du poste

La question est la même que la réponse.

 
fxsaber:
Je suis d'accord pour que cela fonctionne (dans le cas d'un remplissage complet).
void OnTradeTransaction ( const MqlTradeTransaction &Trans, const MqlTradeRequest &Request, const MqlTradeResult &Result )
{
  if ((Trans.type == TRADE_TRANSACTION_DEAL_ADD) && (Trans.position > 0) && !PositionSelectByTicket(Trans.position))
    Print("Position #" + (string)Trans.position + " - triggered SL/TP.");
}

Mais la conversation semble s ' élargir un peu plus.

Je ne me souviens pas que le volume puisse être réglé pour ST/TP.

Si ce n'est pas le cas (je vais vérifier maintenant), la position fermera PLEIN ou SL ou TP.

 
prostotrader:

Je ne me souviens pas d'avoir attendu que ST/TP règle le volume, si ce n'est pas le cas,

alors la position fermera COMPLÈTEMENT soit le SL ou le TP.

Les liquidités ne sont peut-être pas suffisantes.
 
fxsaber:
Les liquidités ne sont peut-être pas suffisantes.
Yep, et le Courtier peut couper le courant :)....
 
prostotrader:
Oui, et le Courtier peut couper le courant :)....
Prenez un instrument à faible liquidité et c'est tout.
 
fxsaber:
Prenez un instrument à faible liquidité et c'est tout.

C'est pourquoi j'ai recommandé l'utilisation des ordres en attente.

Ajouté par

Cela dépend beaucoup du marché et de l'instrument...

 
<br/ translate="no">

Pour identifier avec précision l'ordre auquel il a été répondu dans l'événement OnTradeTransaction, tous les événements autres que celui de la première commande sont signés par un ticket.

Le premier événement est signé par le ticket et le request_id. Le request_id est obtenu par l'utilisateur juste après la soumission de la commande à partir de la fonction OrderSendAsinc. C'est ainsi qu'une itération spécifique de OrderSendAsinc est liée aux résultats obtenus dans OnTradeTransaction.

Le ticket dans OrderSendAsync n'existe peut-être même pas, et il est fort probable qu'il n'existera pas si nous envoyons des commandes à cent par seconde (retcode 10008 au mieux, et c'est tout).

 
dmipec:

Le ticket dans OrderSendAsync peut être ou ne pas être là et très probablement ne le sera pas si les commandes sont tirées à quelques milliers d'unités par seconde (retcode 10008 au mieux et tout).

Enfin, pas dix, juste 30 par seconde sur une connexion standard.

Si vous l'avez écrit correctement, la ou les commandes seront certainement présentes.

 
Vasiliy Sokolov:

Au lieu d'analyser les événements, vous devez analyser l'environnement commercial et ce n'est que si l'environnement commercial a changé que vous devez prendre les décisions nécessaires. OnTransaction ne peut être utilisé que dans des cas très limités, et il est généralement préférable de s'en passer dans votre travail. Regardez MetaTrader 4, il n'a pas OnTransaction et tout le monde s'en passe.

Je suis d'accord avec cela. Mais malheureusement dans MT5, contrairement à MT4, l'environnement de trading peut ne pas correspondre à la réalité. Par exemple, lorsqu'un ordre en attente est exécuté pendant plusieurs millisecondes, il peut être introuvable. Et même OnTradeTransaction n'aidera pas ici.