Caractéristiques du langage mql5, subtilités et techniques - page 23

 
Artyom Trishkin:
Non, vous ne le faites pas. Vous avez juste besoin de savoir comment la dernière position a été fermée (et vous n'avez pas besoin d'aller beaucoup plus loin dans l'historique pour cela - c'est suffisant pour filtrer "vos" transactions) - la connaissance plus loin de la dernière position dans l'historique est plus statistique qu'opérationnelle.
Eh bien, tout cela est fait dans OnTradeTransaction. Seulement dans le trigger publié par fxsaber : j'ajouterais une vérification sur le symbole, magicien et trade sur DEAL_ENTRY_OUT
Особенности языка mql5, тонкости и приёмы работы
Особенности языка mql5, тонкости и приёмы работы
  • www.mql5.com
В данной теме будут обсуждаться недокументированные приёмы работы с языком mql5, примеры решения тех, или иных задач...
 
Alexey Viktorov:
Eh bien, tout cela est fait dans OnTradeTransaction. Seulement dans le trigger publié par fxsaber : J'ajouterais une vérification sur le symbole, le magicien et le trade sur DEAL_ENTRY_OUT
Et comment contrôlez-vous le testeur ?
 
Artyom Trishkin:
Comment allez-vous contrôler le testeur ?
De la même façon. Quelle est la différence ? J'ai tout essayé dans le testeur et le débogueur pour comprendre comment cela fonctionne.
 
Alexey Viktorov:

Je n'ai pas regardé attentivement ce déclencheur, mais je n'ai pas vu de contrôle sur le commerce pour DEAL_ENTRY_OUT. Après tout, c'est cette transaction qui indique la fermeture de la position sur les comptes courants.

Le chèque n'est pas nécessaire. Le déclencheur ne fonctionnera pas dans le testeur, car ce dernier ne génère pas de Trade-events.
 
fxsaber:
Le contrôle n'est pas nécessaire. Le déclencheur ne fonctionnera pas dans le testeur, car le testeur ne génère pas certains événements commerciaux.

Lesquels, par exemple, de cette liste ?

COMMANDE_TRANSACTION_ADDITIONNELLE

Ajoute un nouvel ordre ouvert.

MISE À JOUR DE LA COMMANDE DE TRANSACTION COMMERCIALE

Modification d'un ordre ouvert. Ces modifications comprennent non seulement des changements explicites du côté du terminal client ou du serveur de négociation, mais aussi des modifications de l'état de passation de l'ordre (par exemple, de ORDER_STATE_STARTED à ORDER_STATE_PLACED ou de ORDER_STATE_PLACED à ORDER_STATE_PARTIAL, etc.)

COMMANDE_TRANSACTION_DELETE

Supprime l'ordre de la liste des ordres ouverts. Un ordre peut être supprimé de la liste des ordres ouverts à la suite d'une demande de transaction ou à la suite d'une exécution (fill) et d'un transfert vers l'historique.

TRANSACTION_COMMERCIALE_ADDITIONNELLE

Ajout d'un métier à l'historique. Cette opération est effectuée à la suite de l'exécution de l'ordre ou à la suite des opérations de solde de compte.

MISE À JOUR DES TRANSACTIONS COMMERCIALES

Changement d'un métier dans l'histoire. Il peut arriver qu'une transaction exécutée précédemment soit modifiée sur le serveur. Par exemple, la transaction a été modifiée dans le système de négociation externe (bourse), où elle a été supprimée par le courtier.

TRANSACTION_TRANSACTION_DEAL_DELETE

Suppression de la transaction de l'historique. Il peut arriver qu'une transaction précédemment exécutée soit supprimée sur le serveur. Par exemple, la transaction a été supprimée dans le système de négociation externe (bourse) où elle a été supprimée par le courtier.

AJOUT DE L'HISTORIQUE DES TRANSACTIONS COMMERCIALES

Ajout d'un ordre à l'historique à la suite de son exécution ou de son annulation.

MISE À JOUR DE L'HISTORIQUE DES TRANSACTIONS COMMERCIALES

Modification d'une commande passée dans l'historique des commandes. Ce type est destiné à augmenter la fonctionnalité du côté du serveur commercial.

HISTORIQUE_TRANSACTIONNEL_SUPPRIMER

Suppression d'une commande dans l'historique des commandes. Ce type est destiné à l'extension des fonctionnalités du côté du serveur commercial.

TRADE_TRANSACTION_POSITION

Modification d'une position non liée à l'exécution de la transaction. Ce type de transaction indique que la position a été modifiée du côté du serveur de transactions. Le volume de la position, le prix d'ouverture et les niveaux de Stop Loss et Take Profit peuvent être modifiés. Les informations sur les changements sont transmises à la structure MqlTradeTransaction par le biais du gestionnaire OnTradeTransaction. Un changement de position (ajout, modification ou élimination) résultant d'une transaction ne provoque pas l'occurrence de la transaction TRADE_TRANSACTION_POSITION.

DEMANDE_DE_TRANSACTION

Une notification indiquant qu'une demande de transaction a été traitée par le serveur et que son résultat a été reçu. Pour les transactions de ce type, il est nécessaire d'analyser un seul champ - type (type de transaction) dans la structure MqlTradeTransaction. Les deuxième et troisième paramètres de la fonction OnTradeTransaction (requête et résultat) doivent être analysés pour obtenir des informations supplémentaires.


A moins que l'événement mis en évidence ne soit pas généré. Alors, qui en a besoin ?

Документация по MQL5: Основы языка / Функции / Функции обработки событий
Документация по MQL5: Основы языка / Функции / Функции обработки событий
  • www.mql5.com
Основы языка / Функции / Функции обработки событий - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Alexey Viktorov:

Lesquels, par exemple, figurent sur cette liste ?

L'événement commercial est mon terme.

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading

Caractéristiques du langage mql5, subtilités et astuces

fxsaber, 2017.02.28 19:30

Il peut y avoir une position BUY ouverte et un ordre BUY valide. L'exemple ci-dessus est un exemple de code, mais probablement plus facile pour les doigts. Comment se déclenche le TP d'une position ouverte?

  • Le prix atteint le TP de la position BUY.
  • Le serveur de négociation crée un ordre de VENTE actif correspondant.
  • Le terminal a alors simultanément une position d'ACHAT et un ordre de VENTE.
  • L'ordre de VENTE est exécuté en entrant dans l'historique et en y générant une transaction.
  • La position initiale BUY est fermée sur la base de cette transaction, qui n'est capturée nulle part - elle est indirectement présente dans l'historique des transactions.

L'événement commercial sélectionné ne se produit pas dans le testeur.
 
fxsaber:

L'événement commercial est mon terme.

Un événement commercial mis en évidence ne se produit pas dans le testeur.

Il ne s'agit pas d'un événement à mon sens. Ce sont les subtilités de la séquence d'exécution de l'ordre. Pourquoi devrais-je saisir le moment où un ordre de VENTE pour clôturer une position d' ACHAT se trouve dans le terminal en même temps que la position elle-même ?

Il est peut-être malheureux que la séquence des événements ne soit pas observée, mais ... L'essentiel dans le trading n'est-il pas de suivre le flux des événements et d'en mesurer la vitesse ? S'ils ouvrent une position pour moi demain au prix demandé et la ferment hier, mais avec un bénéfice, je ne m'y opposerai pas.

 
Alexey Viktorov:

À mon avis, il ne s'agit pas d'un événement. Ce sont les subtilités de la séquence d'ordres. Pourquoi devrais-je saisir le moment où un ordre de VENTE pour clôturer une position d' ACHAT se trouve dans le terminal en même temps que la position elle-même ?

Lisez le titre de cette branche.
 
fxsaber:
Lisez le titre du fil de discussion.
Quelle différence cela fait-il ?
 
Alexey Viktorov:
Qu'est-ce qui va changer ?
Rien ne changera, mais les subtilités sont décrites - il n'y a aucun doute.
Et la question demeure : comment cette fonction va-t-elle rattraper la fermeture des points/arrêts dans le testeur ?