Questions des débutants MQL5 MT5 MetaTrader 5 - page 762
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
Et ce ne sont pas les positions ou les transactions qui doivent être vérifiées, mais les ordres, car un ordre vient en premier, puis une transaction, puis une position.
Pourquoi seulement des commandes ? Une transaction n'a-t-elle pas un identifiant de position (ticket) ?
DEAL_POSITION_ID
Pourquoi seulement des commandes ? Une transaction n'a-t-elle pas un identifiant de position (ticket) ?
DEAL_POSITION_ID
Oui, vous avez raison. Les commandes et les transactions ont toutes deux un identifiant de position. Cependant, dans le cas général, nous devons savoir que la position se voit attribuer un identifiant du premier ordre qui a initié la transaction. Par conséquent, l'"entité" à l'origine de la position est l'ordre, et non la transaction. Et ce sont les commandes, et non les affaires, qui doivent être recherchées.
Dans la documentation :
L'identifiant du poste est un numéro unique qui est attribué à chaque poste nouvellement ouvert et qui 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.
Oui, vous avez raison. Les ordres et les transactions ont tous deux un identifiant de position. Cependant, en général, vous devez savoir que la position se voit attribuer l'identifiant du premier ordre qui a initié la transaction. Par conséquent, l'"entité" à l'origine de la position est l'ordre, et non la transaction. Et ce sont les commandes, et non les affaires, qui doivent être recherchées.
Dans la documentation :
Je ne vais pas discuter, c'est exactement ce que dit la documentation. Mais ailleurs dans la même documentation, il est dit"En règle générale...", ce qui signifie qu'il peut y avoir des incohérences. Et voici le "en règle générale" que j'ai rencontré une fois...
position
Le billet de poste. Elle doit être remplie lorsqu'un poste est modifié et fermé, pour son identification unique. En règle générale, il correspond au ticket de l'ordre, à la suite duquel la position a été ouverte.
Veuillez m'indiquer comment récupérer le ticket qui a été utilisé pour l'échange. Sur la capture d'écran, c'est "63214735".
Ici,vous cherchez le numéro de la position, dans la liste des transactions, sinon c'est une erreur.
Voici un script qui démontre ce que HistorySelectByPosition donne
Et voici à quoi ressemble le résultat :
0 = Position ouverte
1 = Position fermée
Si vous ne l'obtenez pas = vous n'avez pas saisi une position de ticket.
Le même résultat peut être obtenu si nous commençons par le ticket de transaction :
Pour la fonction HistoryDealGetInteger()
ENUM_DEAL_PROPERTY_INTEGER
Identifiant
Description
Type
DEAL_TICKET
Ticket de caisse. Numéro unique à attribuer à chaque transaction
long
DEAL_ORDER
Ordre, sur la base duquel la transaction a été exécutée
long
HEURE DE LA TRANSACTION
Temps d'exécution de l'opération
datetime
DEAL_TIME_MSC
Temps d'exécution de la transaction en millisecondes à partir du 01.01.1970
long
DEAL_TYPE
Type de transaction
ENUM_DEAL_TYPE
DEAL_ENTRY
Direction de la transaction - entrée sur le marché, sortie du marché ou retournement de tendance
ENUM_DEAL_ENTRY
DEAL_MAGIC
Nombre magique pour l'opération (voir ORDER_MAGIC)
long
DEAL_REASON
Raison ou source de l'opération
ENUM_DEAL_REASON
DEAL_POSITION_ID
L'identifiant de la position à l'ouverture, la modification ou la fermeture de laquelle cette transaction a été impliquée. Chaque position possède un identifiant unique, qui est attribué à toutes les transactions effectuées sur l'instrument pendant la durée de vie de la position.
long
Merci !
J'avais besoin de ceci :HistoryOrderGetTicket
Merci !
J'avais besoin de ceci :HistoryOrderGetTicket
L'ordre peut être de 1,0 lot. Mais il peut être partiellement exécuté, par exemple, le lot 0.9 - le reste sera rejeté (dépend du mode d'exécution). La transaction sera alors le lot 0.9. Et lorsque vous commencerez à rechercher des lots sur l'ordre, il y aura des incohérences.
Aidez-moi s'il vous plaît - j'ai besoin d'un code sain pour obtenir la valeur de l'environnement OHLC - les codes existants sont très lents.
Option 1
Option 2
Aidez-moi s'il vous plaît - j'ai besoin d'un code sain pour obtenir la valeur de l'environnement OHLC - les codes existants sont très lents.
Option 1
Option 2
Postez un morceau de code pour expliquer comment vous les appliquez
Je ne sais pas quel morceau ralentit - je les applique de différentes manières, y compris en boucle...
voici un exemple
Je ne sais pas quel morceau ralentit - je l'applique de différentes manières, y compris en boucle...
Cela semble être le cas dans les boucles, et vous pouvez vous passer de la fonction