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
Fonctions utiles et fréquemment utilisées:
Redéfinition de la fonction GetPositionPrice() :
Cette fonction montre le mauvais résultat, ou plutôt le mauvais résultat. Je me suis penché sur la question et j'ai découvert que l'ID de la position ne change pas en cas de demi-tour (c'est-à-dire pendant une transaction d'entrée/sortie), comme décrit dans la documentation :
https://www.mql5.com/ru/docs/constants/tradingconstants/positionproperties
Une inversion de position change son ID pour le ticket d'ordre qui a entraîné l'inversion.
Votre GetPositionPrice peut empiler 2 positions opposées ou plus en cas de retournement, et calcule un prix moyen pour celles-ci. Un tel prix moyen d'une position n'est d'aucune utilité pratique.
Alors, l'ID de la position change-t-il en cas d'inversion ou non ?
Comment pouvez-vous savoir, à partir d'une transaction d'entrée/sortie, quel volume a fermé une position précédente et lequel a ouvert une nouvelle position ?
Elle peut être comparée à la position ouverte actuelle. Mais il est préférable d'examiner l'histoire de la position par son id, qui ne change pas lorsque la position est inversée... Les volumes d'achat/vente pour aider.
Depuis peu, l'identification de la position change lorsque vous vous retournez. La documentation à ce sujet a déjà été mise à jour.....
IDENTIFICATEUR DE POSITION
L'ID du poste est un numéro unique, qui est attribué à chaque poste nouvellement ouvert et ne change pas pendant toute sa durée de vie. Il correspond au ticket de l'ordre avec lequel la position a été ouverte.
L'identifiant de la position est spécifié dans chaque ordre (ORDER_POSITION_ID) et dans chaque transaction (DEAL_POSITION_ID) qui l'a ouvert, modifié ou fermé. Utilisez cette propriété pour rechercher les ordres et les transactions liés à la position.
L'inversion d'une position modifie son identifiant en le remplaçant par le ticket d'ordre qui a entraîné l'inversion.
long
Vous pourriez le comparer avec l'ouverture actuelle. Mais il est préférable d'examiner l'historique de la position par l'id, qui ne change pas lors d'un retournement... Les volumes d'achat/vente pour aider.
Ce n'est pas du tout une option. La position précédente peut également être ouverte en raison d'un retournement, etc. Cela pourrait être une option, mais clairement pas une option optimale.
Depuis peu, l'identification de la position change lorsque vous vous retournez. La documentation à ce sujet a déjà été mise à jour.....
IDENTIFICATEUR DE POSITION
L'ID du poste est un numéro unique, qui est attribué à chaque poste nouvellement ouvert et ne change pas pendant toute sa durée de vie. Il correspond au ticket de l'ordre avec lequel la position a été ouverte.
L'identifiant de la position est spécifié dans chaque ordre (ORDER_POSITION_ID) et dans chaque transaction (DEAL_POSITION_ID) qui l'a ouvert, modifié ou fermé. Utilisez cette propriété pour rechercher les ordres et les transactions associés à la position.
L'inversion d'une position modifie son identifiant en le remplaçant par le ticket d'ordre qui a entraîné l'inversion.
long
C'est écrit comme ça, mais en réalité, rien ne change.
Mon code, si vous voulez :
Où deal2_ticket est le ticket de transaction d'entrée/sortie, deal1_ticket est le ticket précédant la transaction d'entrée/sortie, deal3_ticket est le ticket après la transaction d'entrée/sortie. Dans les trois cas, j'obtiens le même ID de position.
C'est ce qui est écrit, mais en réalité, rien ne change.
Si vous voulez, mon code :
Où deal2_ticket est le ticket de transaction d'entrée/sortie, deal1_ticket est le ticket précédant la transaction d'entrée/sortie, deal3_ticket est le ticket après la transaction d'entrée/sortie. Dans les trois cas, j'obtiens le même ID de position.
Et comment déterminer, à partir d'une transaction d'entrée/sortie, quel volume a fermé la position précédente et quel volume a ouvert la nouvelle position ?
Cet Expert Advisor est exécuté en mode "Débogage sur historique" sur un compte de compensation. L'exemple est un peu grossier, car il est calculé qu'il n'y a qu'une seule transaction de type "IN/OUT" dans l'historique des transactions.
Tout d'abord, après toutes les transactions exécutées et la fermeture complète d'une position, les descriptions de toutes les transactions sont obtenues(DEAL_POSITION_ID, DEAL_VOLUME, DEAL_ENTRY,DEAL_TYPE), à cela DEAL_POSITION_ID pour une transaction de type IN/OUT est mémorisé.
Ensuite, il parcourt à nouveau l'historique et additionne toutes les entrées pour les transactions avec DEAL_POSITION_ID.
Nous obtenons quelque chose comme ceci :
C'est en train de changer pour moi. Essayez-le sur la dernière version 1340.