Experts: Programmation MQL5 pour les Traders - Codes Source du livre. Partie 7 - page 4

 
wf2000cn #:

Bonjour @Stanislav Korotky, je suis nouveau sur MQL5. J'ai trouvé que vous aviez mis en ligne un fichier wss.zip pour l'utilisation de websocket. Comment l'utiliser, y a t-il une démo ou quelque chose que je peux apprendre. Je vous remercie sincèrement !

Vous pouvez trouver plusieurs exemples dans le livre algotrading, dans la section décrivant (étape par étape) l'implémentation d'un projet de service web pour copier les trades et les signaux.

MQL5 Book: Advanced language tools / Projects / Project plan of a web service for copying trades and signals
MQL5 Book: Advanced language tools / Projects / Project plan of a web service for copying trades and signals
  • www.mql5.com
As an end-to-end demonstration project, which we will develop throughout this chapter, we will take a simple, but at the same time quite...
 
Stanislav Korotky #:

Vous pouvez trouver plusieurs exemples dans le livre algotrading, dans la section décrivant (étape par étape) l'implémentation d'un projet de service web pour copier des trades et des signaux.

Ok,i'll learn it first. Je vous remercie sincèrement !
 

Bonjour @StanislavKorotky

J'essaie d'implémenter une fermeture de position partielle avec un ordre en attente dans la direction opposée.

ex :

  • si j'ai une position ouverte à l'achat sur XAUUSD avec une taille de 2 lots
  • j'ouvre un ordre de vente en attente sur XAUUSD avec une taille de lot de 1
  • dans l'événement OnTradeTransaction -> TRADE_TRANSACTION_DEAL_ADD (transaction.type) , j'ai

MqlTradeRequestSync reqs(transaction.symbol) ;

reqs.closeby(target_position_ticket_id, transaction.order) ;

Je pense que la ligne ci-dessus devrait être en mesure de faire le travail, mais mon défi est de savoir comment obtenir le `target_position_ticket_id`dans le gestionnaire d'événement OnTradeTransaction -> TRADE_TRANSACTION_DEAL_ADD ( transaction.type) ou d'associer d'une manière ou d'une autre l'ordre en attente avec le target_position_ticket_id qu'il est censé clôturer chaque fois que l'ordre en attente est exécuté.

J'ai essayé d'ajouter le `target_position_ticket_id`au commentaire de l'ordre en attente lorsque je crée l'ordre en attente, mais le problème est que dans l'événement OnTradeTransaction -> TRADE_TRANSACTION_DEAL_ADD (transaction.type) je ne peux pas accéder au commentaire car les
attributsMqlTradeTransaction n'ont pas de 'comment'

. Merci de votre aide.

 
pauldic MqlTradeTransaction n'ont pas de 'comment'.

La méthode closeby(ticket1, ticket2) du livre suppose que vous utilisez un compte de couverture et que vous avez déjà 2 positions ouvertes (achat et vente) avec les tickets ticket1 et ticket2. Je suppose qu'il est impossible (en général) d'exécuter l'action TRADE_ACTION_CLOSE_BY contre un ordre en attente. Mais si votre compte est en mode de compensation, je pense que vous pouvez simplement placer un ordre en attente dans la direction opposée et lorsqu'il se déclenche, il modifiera la position existante en conséquence - c'est-à-dire la fermer, ou la fermer partiellement, ou même l'inverser (si le nouveau volume est plus important que l'ancien).

 
Petits correctifs dans les websockets (à la carte et en masse).
Dossiers :
wsprotocol.mqh  17 kb
wss.zip  16 kb
 
Stanislav Korotky #:
Petits correctifs dans les websockets (à la carte et en masse).
@StanislavKorotky Merci pour la mise à jour continue, mais il y a quelque chose que j'ai du mal à comprendre. Sur le "Market Watch" du MT5, je peux faire un clic droit sur n'importe quel "Symbol" et afficher toutes ses propriétés associées comme je le ferais de manière programmatique en cliquant sur "Specification".

L'une de ces propriétés est la "Commission" du Symbol qui diffère évidemment d'un courtier à l'autre comme on peut le voir dans l'image ci-jointe. Cependant, je n'ai pas été en mesure d'accéder à cette propriété de manière programmatique. Pouvez-vous m'aider en me donnant un indice sur la façon d'obtenir la commission du symbole ?


Par ailleurs, ce message apparaît souvent dans le journal lorsque je travaille avec PositionFilter, en particulier lorsque l'EA est chargé pour la première fois ou recompilé "Unresolved int value as enum : 8 for MonitorInterface<ENUM_POSITION_PROPERTY_INTEGER,ENUM_POSITION_PROPERTY_DOUBLE,ENUM_POSITION_PROPERTY_STRING>". Il fonctionne toujours correctement et n'arrête rien
 
pauldic #:
@StanislavKorotky Merci pour la mise à jour continue, mais il y a quelque chose que j'ai du mal à comprendre. Sur le "Market Watch" du MT5, je peux faire un clic droit sur n'importe quel "symbole" et afficher toutes ses propriétés associées, comme je le ferais de manière programmatique en cliquant sur "Specification".

L'une de ces propriétés est la "commission" du symbole, qui diffère évidemment selon les courtiers, comme on peut le voir dans l'image ci-jointe. Cependant, je n'ai pas été en mesure d'accéder à cette propriété de manière programmatique. Pouvez-vous m'aider en me donnant un indice sur la façon d'obtenir la commission du symbole ?

Malheureusement, toutes les propriétés des entités du terminal ne sont pas accessibles via MQL5.

pauldic #:
Par ailleurs, ce message apparaît souvent dans le journal lorsque je travaille avec PositionFilter, en particulier lorsque l'EA est chargé pour la première fois ou recompilé "Unresolved int value as enum : 8 for MonitorInterface<ENUM_POSITION_PROPERTY_INTEGER,ENUM_POSITION_PROPERTY_DOUBLE,ENUM_POSITION_PROPERTY_STRING>". Il fonctionne toujours correctement et n'arrête rien

Il s'agit simplement d'un avertissement causé par le fait que l'énumération intégrée correspondante de MQL5 présente une lacune dans les constantes qui sont normalement assignées consécutivement. Cette lacune est due au fait que MQL5 est en constante évolution et que certaines constantes peuvent devenir obsolètes et être éliminées. Vous pouvez éditer le code source pour éviter de tels avertissements.

 

Je joins une version mise à jour de la bibliothèque JSON - toyjson3.mqh - qui remplace toyjson2.mqh et toyjson.mqh du livre.

Cette version est optimisée pour le traitement d'énormes fichiers JSON. Pour des raisons de simplicité, les versions précédentes utilisent la fonction StringSplit pour la tokenisation du texte pendant l'analyse, et cet appel peut demander en interne des gigaoctets de mémoire libre en raison de la fragmentation et de l'anticipation du flux de données ultérieur. Elle est libérée après l'analyse, mais le gestionnaire de mémoire de MQL5 peut la garder réservée pendant un certain temps, car il libère les déchets de manière différée.

L'analyse syn taxique occupe désormais beaucoup moins de mémoire.

Dossiers :
toyjson3.mqh  39 kb
 
Voici une autre correction mineure dans ToyJson3.mqh - les nombres à virgule flottante avec exposant (notation scientifique, comme "1e-8") sont maintenant détectés correctement lors de l'analyse.
Dossiers :
toyjson3.mqh  39 kb
 
Stanislav Korotky #:
Je joins quelques corrections de bogues et améliorations dans les classes websockets.

C'est exactement ce dont j'avais besoin.

Merci beaucoup.

Vous êtes comme ce type pour moi.

https://clip.cafe/top-gun-maverick-2022/good-afternoon-ladies-gentlemen-s2/

Watch 'Good afternoon, ladies and gentleman, this is your savior speaking. Please fasten your...' | Top Gun: Maverick Clip
Watch 'Good afternoon, ladies and gentleman, this is your savior speaking. Please fasten your...' | Top Gun: Maverick Clip
  • clip.cafe
Watch the clip 'Good afternoon, ladies and gentleman, this is your savior speaking. Please fasten your...' from the movie Top Gun: Maverick on Clip.Cafe. Lt. Jake 'Hangman' Seresin: [after destroying the plane that almost killed Maverick and Rooster] Good afternoon, ladies and gentleman, this is your savior speaking. Please fasten your seat belts, return the tray tables to their locked an upright positions and prepare for landing. Bradley 'Rooster' ...