Trading Systématique

Comment Créer un Compteur dans MetaTrader 5 : Comptez et Passez
MetaTrader5
Comment Créer un Compteur dans MetaTrader 5 : Comptez et Passez

01. Comptez "X" fois puis passez. Étape 01 - Créez une variable pour définir la limite de comptage. Vous pouvez l'utiliser comme un paramètre d'entrée pour optimiser votre code. Étape 02 - Créez une autre variable pour stocker le nombre de fois comptées. Étape 03 - Lorsque le Compteur et votre limite de comptage sont égaux, cela signifie qu'il est temps de passer le bloc de code que vous avez spécifié. Étape 04 - Une fois le code exécuté, assurez-vous de réinitialiser le compteur. Sinon, il comptera indéfiniment. Vous pouvez également définir des conditions de filtrage pour le bloc de compteur, comme >> "SI c'est vrai, alors comptez une fois." input int count = 50; // Définissez la limite de comptage comme entrée int Compteur; // variable de compteur // Initialisation de l'Expert -------------------- int OnInit() { return(INIT_SUCCEEDED); } // Désinitialisation de l'Expert ------------------- void OnDeinit(const int reason) { } // Fonction OnTick -------------------------- void OnTick() { Compteur ++; // ajoute 1 au compteur à chaque tick. Comment("Compteur Actuel -:", Compteur); if(Compteur == count) // Comptez "X" fois et passez | Ce bloc s'exécute une seule fois par compte. {      // Votre code ici...... Alert(count," fois comptées"); Compteur = 0; // Réinitialisez le compteur à la fin de votre bloc de code. C'est essentiel. } } // Fin de OnTick  <<---------------------- 02. Passez "X" fois puis attendez "X" fois et passez. Cette méthode peut être utilisée pour alterner entre attendre et passer. Étape 01 - Créez une variable pour définir la limite de comptage et la limite d'attente, vous pouvez les utiliser comme paramètres d'entrée pour optimiser votre code. Étape 02 - Créez une autre variable pour stocker les limites de comptage et d'attente. Étape 03 - Lorsque le Compteur et votre limite de comptage sont égaux, cela signifie qu'il est temps de passer le bloc de code que vous avez spécifié. Étape 04 - Lorsque la limite d'attente est atteinte, assurez-vous de réinitialiser le compteur et le waiter. Sinon, cela cessera de fonctionner. Vous pouvez également définir des conditions de filtrage pour le bloc de compteur et les blocs d'attente, comme >> "SI c'est vrai, attendez un peu." input int count = 50; // Définissez la limite de comptage comme entrée input int wait = 50; // Définissez la limite d'attente comme entrée int Compteur; // variable de compteur, valeur par défaut "0" int Waiter; // variable d'attente, valeur par défaut "0" // Initialisation de l'Expert -------------------- int OnInit()   {    return(INIT_SUCCEEDED);   } // Désinitialisation de l'Expert ------------------- void OnDeinit(const int reason)   {   } // Fonction OnTick -------------------------- void OnTick()   {    Comment("Ticks Comptés -: ", Compteur, "\n", "Ticks Attendus -: ", Waiter);    if(Compteur < count) // Passez "X" fois      {       Compteur++; // mise à jour du compteur       // Votre code ici.      }    else       if(Waiter < wait) // Attendez "X" fois         {          Waiter++; // mise à jour de l'attente          // Votre code ici.         }    if(Waiter == wait) // La limite d'attente est atteinte      {       Compteur = 0; // réinitialiser le compteur       Waiter = 0; // réinitialiser l'attente      }   } // Fin de OnTick  <<---------------------- //+------------------------------------------------------------------+ Spécial -: Vous pouvez coder le "Passez X fois et arrêtez" en modifiant le code ci-dessus en retirant le bloc de code d'attente. Cela comptera un nombre spécifique et s'arrêtera jusqu'à ce que le compteur soit réinitialisé. Vous pouvez le réinitialiser n'importe où dans votre code si vous créez ces variables à l'échelle globale. (variables globales)

2024.04.14
Détecter une Nouvelle Bougie dans MetaTrader 5 : Astuce Efficace
MetaTrader5
Détecter une Nouvelle Bougie dans MetaTrader 5 : Astuce Efficace

Dans le code précédent, j'utilisais le temps pour détecter une nouvelle bougie. Cette fois, nous allons utiliser le nombre de bougies pour le faire. C'est beaucoup plus léger et rapide que la méthode basée sur le temps. Déclarez les variables en type entier pour stocker le nombre de bougies. Assignez le nombre de bougies à la variable "BarsTotal_OnInt" lors de l'initialisation. Utilisez la fonction iBars(); pour assigner le nombre de bougies à la variable "BarsTotal_OnTick" dans le graphique en direct. Cette variable est mise à jour à chaque tick. Utilisez des commentaires et des alertes pour vérifier la précision du code. int BarsTotal_OnInt; int BarsTotal_OnTick; //+------------------------------------------------------------------+ //| Fonction d'initialisation de l'Expert                                   | //+------------------------------------------------------------------+ int OnInit()   {      BarsTotal_OnInt = iBars(NULL,PERIOD_CURRENT); // Assigne le total des bougies à l'initialisation    return(INIT_SUCCEEDED);   }    void OnTick() // Fonction OnTick   {      BarsTotal_OnTick = iBars(NULL,PERIOD_CURRENT); // Stocke le dernier montant       if(BarsTotal_OnTick > BarsTotal_OnInt) // Une nouvelle bougie est arrivée    {     BarsTotal_OnInt = BarsTotal_OnTick; // Met à jour l'historique.     Alert("Une nouvelle bougie est arrivée");     Comment("Nombre de bougies dans l'historique -: ", BarsTotal_OnInt, "\n", "Nombre de bougies en direct -: ", BarsTotal_OnTick); // Votre code va ici. -------------------------- // Vous pouvez mettre à jour un "flag" / variable pour l'utiliser plus tard aussi.    }   }

2024.04.11
Gérez Vos Trades avec un SL Virtuel et TP Pending sur MetaTrader 4
MetaTrader4
Gérez Vos Trades avec un SL Virtuel et TP Pending sur MetaTrader 4

Bienvenue à tous les traders ! Aujourd'hui, nous allons parler d'un outil très pratique : Virtual_SL_TP_Pending_with_SL_Trailing.mq4. Ce script est conçu pour gérer vos trades en définissant des niveaux de stop loss et de take profit virtuels, tout en vous offrant la possibilité d'installer un ordre en attente avec un trailing stop loss. Voici un aperçu des fonctionnalités de ce script : Droits d'auteur et lien : Informations de copyright et lien vers le site du créateur. Version : Indique la version du script. Description : Détails concernant le script, y compris l'adresse e-mail du créateur, les informations sur la propriété intellectuelle et un avertissement sur l'utilisation du logiciel à vos propres risques. Paramètres d'entrée : Variables externes permettant de personnaliser le comportement de l’EA, incluant : StopLossPoints : Stop loss initial en points. TakeProfitPoints : Take profit initial en points. SpreadThreshold : Seuil de spread pour le stop loss/take profit virtuel en points. TrailingStopPoints : Trailing stop en points pour l'ordre en attente virtuel. EnableTrailing : Option pour activer ou désactiver le trailing stop. Variables globales : Variables utilisées dans tout le script pour stocker le spread initial, le stop loss virtuel, le take profit virtuel et le prix de l'ordre en attente. Fonction d'initialisation (OnInit) : Initialise l’EA lorsqu’il est attaché à un graphique, calculant le stop loss virtuel initial, le take profit et le prix de l'ordre en attente en fonction des paramètres d'entrée. Fonction de tick (OnTick) : Appelée à chaque variation de prix. Elle vérifie si le spread a dépassé le seuil et ajuste le stop loss virtuel, le take profit et le prix de l'ordre en attente en conséquence. Cette fonction surveille également si le prix atteint le stop loss ou le take profit virtuel et clôture la position. De plus, si le trailing stop est activé et que le prix atteint le prix de l'ordre en attente, il place un ordre en attente virtuel avec un trailing stop loss. Fonction de fermeture de position (ClosePosition) : Ferme la position lorsque le prix atteint le stop loss ou le take profit virtuel. Fonction de placement d'ordre en attente (PlacePendingOrder) : Place un ordre en attente virtuel avec un trailing stop loss si le trailing stop est activé. Ce EA offre une manière flexible de gérer vos trades en utilisant des niveaux virtuels et une fonction de trailing stop, permettant ainsi aux traders d'automatiser leur processus de gestion des trades sur MetaTrader 4.

2024.04.10
Fermez vos positions facilement avec Close Basket Pairs v1 pour MetaTrader 4
MetaTrader4
Fermez vos positions facilement avec Close Basket Pairs v1 pour MetaTrader 4

Salut les traders ! Aujourd'hui, je vais vous parler d'un script MQL4 très pratique : Close Basket Pairs. Ce petit outil est conçu pour fermer vos positions sur un ensemble de paires de devises lorsque vous atteignez certains seuils de profit ou de perte. Voici ce qu'il faut savoir : Le script s'appelle CloseBasketPairs.mq4. Il est protégé par les droits d'auteur de MetaQuotes Software Corp. en 2024. Vous pouvez trouver plus d'infos sur le site de MetaQuotes. La version actuelle du script est 1.01. Ce script a été créé par persinaru@gmail.com. Il est distribué sous la licence IP 2024 - open source et gratuit. Son objectif principal ? Fermer les positions de votre panier lorsque les seuils de profit ou de perte fixés sont atteints. Attention, utilisez ce script à vos risques et périls, l'auteur ne pourra pas être tenu responsable des pertes éventuelles. Le script définit les paires de devises de votre panier et leurs types d'ordres respectifs, ainsi que les seuils de profit et de perte. Il parcourt toutes vos positions ouvertes et vérifie si elles appartiennent aux paires définies. Si une position dépasse le seuil de profit ou de perte, elle se ferme automatiquement. En plus, le script inclut des fonctions pour l'initialisation, la désinitialisation et la gestion des événements de tick. La fonction PrintStrategyInfo() est utile pour afficher des informations sur votre stratégie.

2024.04.10
Stratégie de Suivi de Tendance Continue pour MetaTrader 4 : Guide Pratique
MetaTrader4
Stratégie de Suivi de Tendance Continue pour MetaTrader 4 : Guide Pratique

Dans cet article, nous allons explorer une stratégie simple de suivi de tendance continue pour acheter et vendre sur MetaTrader 4 (MT4), basée sur des conditions prédéfinies. Voici un aperçu du script : Initialisation : Le script s'initialise et affiche un message lorsque l'initialisation est réussie. Désinitialisation : Lors de la désinitialisation, un message est affiché. Fonction OnTick : Cette fonction s'exécute chaque fois qu'il y a un nouveau tick (changement de prix) sur le marché. Réinitialisation des Variables de Suivi de Position : Le script réinitialise les variables qui suivent les positions d'achat et de vente ouvertes. Vérification des Ordres Ouverts : Il boucle à travers tous les ordres ouverts pour déterminer s'il existe des positions d'achat ou de vente. Ouverture de Position d'Achat : S'il n'y a pas de position d'achat ouverte et que le drapeau "OpenBuyPosition" est activé, il tente d'en ouvrir une en se basant sur le prix d'offre actuel. Un stop loss et un take profit sont définis pour cet ordre d'achat. Ouverture de Position de Vente : S'il n'y a pas de position de vente ouverte et que le drapeau "OpenSellPosition" est activé, il tente d'en ouvrir une en se basant sur le prix de demande actuel. Un stop loss et un take profit sont définis pour cet ordre de vente. Vérification des Ordres Clos : Il vérifie les ordres fermés. Si un ordre d'achat ou de vente est clôturé avec un bénéfice, il réinitialise le drapeau de position correspondant. Paramètres d'Entrée : Le script propose des paramètres d'entrée pour la taille des lots, le stop loss, le take profit et des drapeaux pour contrôler l'ouverture des positions d'achat ou de vente. Avis de Non-Responsabilité : Ce script comprend un avertissement conseillant aux utilisateurs de l'utiliser à leurs propres risques et de dégager le créateur de toute responsabilité en cas de dommages ou pertes potentielles. En résumé, ce script vise à automatiser le processus d'exécution des ordres d'achat et de vente en fonction d'une stratégie de suivi de tendance continue, permettant aux utilisateurs de personnaliser des paramètres tels que la taille des lots et la direction des trades. Cependant, il est crucial d'exercer de la prudence et de réaliser des tests approfondis avant de l'utiliser dans des environnements de trading en direct.

2024.04.10
Optimisez votre Trading avec un Stop Suivant sur MetaTrader 5
MetaTrader5
Optimisez votre Trading avec un Stop Suivant sur MetaTrader 5

Ce bloc de code fonctionne que vous utilisiez un Stop Loss ou non.PrérequisVous devez inclure "Trade.mqh" pour accéder à la classe CTrade qui vous permet de gérer les positions et les ordres.#include &lt;Trade\Trade.mqh&gt; // &lt;&lt;------------------------------------------ Incluez ce "Trade.mqh" pour accéder à la classe CTrade Vous devez définir un paramètre d'entrée pour ajuster la distance de suivi comme vous le souhaitez. Ce n'est pas nécessaire, mais c'est plus pratique.input double Traling_Step = 3.0;Vous devez créer une instance de la classe CTrade. Le nom peut être n'importe quel. Il est préférable de la définir après le gestionnaire d'événements OnInit.Ensuite, vous devez créer une instruction if pour vérifier s'il y a une position ouverte à ce moment. Cette instruction appelle la fonction Check_TrailingStop(); pour chaque tick. C'est important car l'EA doit suivre de manière précise et fluide. N'oubliez pas de placer cette instruction en haut du gestionnaire d'événements OnTick pour qu'elle fonctionne correctement.//+------------------------------------------------------------------+ //| Fonction d'initialisation de l'Expert | //+------------------------------------------------------------------+ int OnInit() { //--- créer un timer EventSetTimer(60); return(INIT_SUCCEEDED); } CTrade trade; // &lt;&lt;------------------------------------------ Déclarez la classe "CTrade". Vous pouvez remplacer "trade" par le nom de votre choix void OnTick() { if(PositionsTotal() > 0) { // appelle la fonction de stop suiveur pour chaque tick s'il y a des positions ouvertes Check_TralingStop(); } }Vous devez déclarer une fonction personnalisée appelée Check_TrailingStop(); (dans ce cas ) pour faire le reste. Vous pouvez utiliser n'importe quel nom que vous souhaitez.Cette fonction personnalisée parcourt toutes les positions ouvertes et les suit selon la distance requise.void Check_TralingStop() { int totalPositions = PositionsTotal(); for(int count = 0; count < totalPositions; count++) { ulong TicketNo = PositionGetTicket(count); // Obtenez le numéro de ticket de la position en utilisant l'index de la position. if(PositionSelectByTicket(TicketNo)) { // Sélectionnez une position en utilisant le numéro de ticket (nous avons déjà récupéré le numéro de ticket). if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY) { // Vérifiez le type de position. double openPrice = PositionGetDouble(POSITION_PRICE_OPEN); double stopLoss = PositionGetDouble(POSITION_SL); // &lt;&lt;-------------------Obtenez le Stop Loss actuel de la position double takeProfit = PositionGetDouble(POSITION_TP); double bidPrice = SymbolInfoDouble(_Symbol, SYMBOL_BID); ulong ticket = PositionGetTicket(count); double trailingLevel = NormalizeDouble(bidPrice - (Traling_Step * Point()), _Digits); if(stopLoss < openPrice) { // Pas de stop loss est vrai. if(bidPrice > openPrice && trailingLevel > openPrice) { // S'exécute une seule fois par position. Définit le premier SL. trade.PositionModify(ticket, trailingLevel, takeProfit); // Modifiez le Stop suiveur en utilisant "CTrade.trade" } } if(bidPrice > openPrice && trailingLevel > stopLoss) { // vérifiez que le niveau de suivi est au-dessus du niveau précédent. trade.PositionModify(ticket, trailingLevel, takeProfit); // Modifiez le Stop suiveur en utilisant "CTrade.trade" } } if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_SELL) { double openPrice = PositionGetDouble(POSITION_PRICE_OPEN); double stopLoss = PositionGetDouble(POSITION_SL); double takeProfit = PositionGetDouble(POSITION_TP); double bidPrice = SymbolInfoDouble(_Symbol, SYMBOL_BID); double askPrice = SymbolInfoDouble(_Symbol, SYMBOL_ASK); ulong ticket = PositionGetTicket(count); double trailingLevel = NormalizeDouble(askPrice + (Traling_Step * Point()), _Digits); if(stopLoss < openPrice) { if(askPrice < openPrice && trailingLevel < openPrice) { // S'exécute une seule fois par position. Définit le premier SL. trade.PositionModify(ticket, trailingLevel, takeProfit); // Modifiez le Stop suiveur en utilisant "CTrade.trade" } } if(askPrice < openPrice && trailingLevel < stopLoss) { // vérifiez que le niveau de suivi est au-dessus du niveau précédent. trade.PositionModify(ticket, trailingLevel, takeProfit); // Modifiez le Stop suiveur en utilisant "CTrade.trade" } } } } }

2024.04.05
Détection d'une Nouvelle Bougie dans MetaTrader 5 : Code Simple
MetaTrader5
Détection d'une Nouvelle Bougie dans MetaTrader 5 : Code Simple

Salut les traders ! Aujourd'hui, je vais vous présenter un code simple pour découvrir lorsqu'une nouvelle bougie est reçue dans MetaTrader 5. Le principe de ce code est assez basique. D'abord, il stocke l'heure de la bougie précédente. Ensuite, il ajoute 60 secondes (ce qui correspond à 1 minute, mais vous pouvez ajuster le temps selon vos besoins) à l'heure de cette bougie pour obtenir la valeur de fermeture de la bougie actuelle. Une fois que : l'heure actuelle = valeur de fermeture de la bougie actuelle, cela signifie qu'une nouvelle bougie est reçue ou que la bougie actuelle est clôturée. Dans ce code, le drapeau (la variable booléenne NewBarReceived) empêche les appels multiples de ce bloc de code. Cela signifie que ce bloc s'exécute une seule fois par bougie. La fonction Comment(); et playsound("ok.wav"); sont utilisées pour vérifier l'exactitude du bloc de code. Vous pouvez les retirer si vous le souhaitez. Le drapeau est réinitialisé à faux une fois que l'heure actuelle dépasse la valeur de fermeture de la bougie actuelle, afin de vérifier l'arrivée de la prochaine bougie (regardez les commentaires pour plus de détails). //+------------------------------------------------------------------+ //|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Détection Nouvelle Bougie.mq5 | //|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;par H A T Lakmal | //|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; https://t.me/Lakmal846 | //+------------------------------------------------------------------+ bool NewBarReceived = false; // Drapeau de contrôle. //+------------------------------------------------------------------+ //| Fonction d'initialisation de l'expert&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | //+------------------------------------------------------------------+ int OnInit() &nbsp;&nbsp;{ //--- créer un timer &nbsp;&nbsp; EventSetTimer(60); //--- &nbsp;&nbsp; return(INIT_SUCCEEDED); &nbsp;&nbsp;} //+------------------------------------------------------------------+ //| Fonction de désinitialisation de l'expert&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | //+------------------------------------------------------------------+ void OnDeinit(const int reason) &nbsp;&nbsp;{ //--- détruire le timer &nbsp;&nbsp; EventKillTimer(); &nbsp;&nbsp;} //+------------------------------------------------------------------+ //| Fonction de tick de l'expert&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | //+------------------------------------------------------------------+ void OnTick() &nbsp;&nbsp;{ &nbsp;&nbsp; datetime TimePreviousBar = iTime(_Symbol,PERIOD_M1,1); &nbsp;&nbsp; datetime TimeCurrentClose = TimePreviousBar + 60; // Heure de fermeture de la bougie actuelle. &nbsp;&nbsp; datetime Time_Current = TimeCurrent(); &nbsp;&nbsp; if(Time_Current == TimeCurrentClose &amp;&amp; NewBarReceived == false) &nbsp;&nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PlaySound("ok.wav");&nbsp;&nbsp; // Pour vérifier le fonctionnement. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NewBarReceived = true; // Mettre à jour le drapeau pour éviter les appels multiples. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Votre code ici ----- (Faites quelque chose) &nbsp;&nbsp;&nbsp;&nbsp; } &nbsp;&nbsp; else &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(Time_Current &gt; TimeCurrentClose) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NewBarReceived = false; // Réinitialiser le drapeau pour l'ouverture de la prochaine bougie. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Votre code ici ----- (Faites quelque chose) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp; Comment(" " +&nbsp;&nbsp;" " +&nbsp;&nbsp;"Heure de la bougie actuelle -: " + TimeToString(TimePreviousBar,TIME_DATE|TIME_MINUTES|TIME_SECONDS) + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; " " + "Heure de fermeture actuelle -: " +TimeToString(TimeCurrentClose,TIME_DATE|TIME_MINUTES|TIME_SECONDS) + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; " " + "Heure actuelle -: " + TimeToString(Time_Current,TIME_DATE|TIME_MINUTES|TIME_SECONDS) + " " +" " + "Nouvelle bougie reçue -: " + NewBarReceived); // Pour vérifier les calculs &nbsp;&nbsp;} //+------------------------------------------------------------------+ //| Fonction timer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | //+------------------------------------------------------------------+ void OnTimer() &nbsp;&nbsp;{ //--- &nbsp;&nbsp;} //+------------------------------------------------------------------+ //| Fonction de trading&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | //+------------------------------------------------------------------+ void OnTrade() &nbsp;&nbsp;{ //--- &nbsp;&nbsp;} //+------------------------------------------------------------------+ //| Fonction d'événement de graphique&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| //+------------------------------------------------------------------+ void OnChartEvent(const int id, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const long &amp;lparam, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const double &amp;dparam, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const string &amp;sparam) &nbsp;&nbsp;{ //--- &nbsp;&nbsp;} //+------------------------------------------------------------------+ &nbsp;

2024.04.05
Optimisation de l'EA : Fermez vos Trades en Profit ou en Perte sur MetaTrader 4
MetaTrader4
Optimisation de l'EA : Fermez vos Trades en Profit ou en Perte sur MetaTrader 4

//+------------------------------------------------------------------------------------------------------------------------------+ //|Optimisation de Fermer_en_Profit_ou_Perte_en_Monnaie_de_Compte_V2 : Quoi de Neuf : //| //|1. Gestion des Erreurs : Le code inclut une gestion des erreurs pour traiter les situations où les ordres ne peuvent pas être fermés ou supprimés. //|2. Optimisation du Code : Le code a été optimisé pour éviter la répétition et améliorer la lisibilité. //|3. Efficacité : Suppression des boucles ou calculs inutiles. //|4. Effacement de tous les objets de graphique lors de la désinitialisation de l’EA. //+------------------------------------------------------------------------------------------------------------------------------+ Si vous réglez l’EA à 0, il n’effectuera aucune action.&nbsp; &nbsp; Le seuil de fermeture positive en monnaie de compte doit être supérieur au montant actuel de l'équité, sinon, les trades seront exécutés immédiatement. Exemple : Si l'équité est de 55 000 € et que le seuil de fermeture positive est fixé à 55 500 € pour réaliser un gain de 500 €. Seuil de fermeture positive en monnaie de compte&nbsp; &gt; 0 &amp;&amp; &lt;&nbsp; 55 000 € = exécution immédiate Le seuil de fermeture négative en monnaie de compte doit être inférieur au montant actuel de l'équité, sinon, les trades seront exécutés immédiatement. Exemple : Si l'équité est de 55 000 € et que le seuil de fermeture négative est fixé à 54 500 € pour ne perdre que 500 €.&nbsp; Seuil de fermeture négative en monnaie de compte&nbsp; &gt; 55 000 € = exécution immédiate Les pics de spread peuvent être évités en réduisant le nombre de spreads, mais le marché fera ce qu'il veut et des gains ou pertes plus importants peuvent se produire.&nbsp; De plus, si le spread est réglé en dessous du spread moyen pour les paires échangées, ces positions ne seront pas exécutées.&nbsp; Avertissement : Utilisez ce logiciel à vos propres risques. Le marché des changes est très volatile !&nbsp; #property copyright&nbsp; &nbsp; &nbsp;"Copyright 2024, MetaQuotes Ltd." #property link&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "https://www.mql5.com" #property version&nbsp; &nbsp; &nbsp; &nbsp;"1.01" #property description&nbsp; &nbsp;"persinaru@gmail.com" #property description&nbsp; &nbsp;"IP 2024 - open source gratuit" #property description&nbsp; &nbsp;"Cet EA ferme tous les trades en fonction des profits et pertes calculés en monnaie de compte." #property description&nbsp; &nbsp;"" #property description&nbsp; &nbsp;"AVERTISSEMENT : Utilisez ce logiciel à vos propres risques." #property description&nbsp; &nbsp;"Le créateur de ce script ne peut être tenu responsable de tout dommage ou perte." #property description&nbsp; &nbsp;"" #property strict #property show_inputs extern string&nbsp; Fermer = "L'EA ferme tous les trades et ordres en attente lorsqu'un profit ou une perte est atteint. Les profits et pertes sont calculés en monnaie de compte.";&nbsp; extern int Seuil_Positif_en_Monnaie_de_Compte&nbsp; &nbsp; &nbsp;= 0;&nbsp; extern int Seuil_Négatif_en_Monnaie_de_Compte&nbsp; &nbsp; &nbsp;= 0;&nbsp; extern int Spread = 10;

2024.03.25
Découvrez les Réseaux de Neurones pour le Trading Algorithmique avec MQL5
MetaTrader5
Découvrez les Réseaux de Neurones pour le Trading Algorithmique avec MQL5

Un Guide Essentiel pour les Traders AlgorithmiquesLe livre « Réseaux de neurones pour le trading algorithmique avec MQL5 » est votre référence incontournable pour apprendre à intégrer l'apprentissage automatique et les réseaux de neurones dans vos stratégies de trading. Destiné aux traders algorithmiques, cet ouvrage vous guide pas à pas dans la création de stratégies de trading utilisant des techniques d'intelligence artificielle avancées.Contenu du LivreComposé de 7 chapitres, ce livre couvre tout ce qu'il faut savoir pour débuter avec les réseaux de neurones et les intégrer dans vos robots de trading en MQL5. Grâce à des explications simples et claires, vous découvrirez les bases de l'apprentissage automatique ainsi que différents types de réseaux de neurones, y compris les modèles convolutionnels et récurrents, sans oublier des solutions architecturales plus complexes et les mécanismes d'attention.Des Exemples Pratiques pour Faciliter l'IntégrationPour vous aider à intégrer ces solutions dans vos robots de trading en MQL5, le livre propose une multitude d'exemples pratiques. Il explore également diverses méthodes pour améliorer la convergence des modèles, telles que la Normalisation par Lots (Batch Normalization) et le Dropout.Formation et Intégration des Réseaux de NeuronesDe plus, l'auteur vous donne des conseils pratiques sur la formation des réseaux de neurones et leur intégration dans vos stratégies de trading. Vous apprendrez à créer des Conseillers Experts (Expert Advisors) pour tester la performance des modèles entraînés sur de nouvelles données, ce qui vous permettra d'évaluer leur potentiel sur les marchés financiers réels. Un Outil Incontournable pour Améliorer Vos Résultats Financiers« Réseaux de neurones pour le trading algorithmique avec MQL5 » n'est pas qu'un simple livre : c'est un guide pratique qui peut vous aider à intégrer des techniques de prise de décision avancées dans vos algorithmes de trading, avec l'objectif d'améliorer vos résultats financiers. Commencez dès aujourd'hui à explorer les capacités avancées de l'apprentissage automatique et propulsez votre trading vers de nouveaux sommets.

2024.02.29
EA de Trading Manuel : Achetez, Vendez, Fermez - Un Guide pour Débutants sur MetaTrader 4
MetaTrader4
EA de Trading Manuel : Achetez, Vendez, Fermez - Un Guide pour Débutants sur MetaTrader 4

Bienvenue à tous les traders ! Aujourd'hui, je vais vous parler de l'EA de trading manuel Buy Sell Close, idéal pour les débutants. Cet outil peut être utilisé en mode de backtesting visuel, mais également en trading en direct. Vous avez la possibilité de tester votre propre système de trading grâce à la fonctionnalité de backtesting. Avec Buy Sell Close, vous pouvez gérer manuellement l'EA, mettre en pause ou modifier la vitesse de révision du backtest pour faciliter vos exercices de trading manuel. Introduction : Bouton [Lots] : après la zone de saisie, vous pouvez ajuster le nombre de lots. Bouton [BUY] : en cliquant dessus, vous passerez un ordre d'achat supplémentaire correspondant à la taille de lot choisie. Bouton [SELL] : en cliquant, vous passerez un ordre de vente pour la taille de lot spécifiée. Bouton [SL Modifier TP] : ce bouton permet de modifier le Stop Loss et le Take Profit pour tous vos ordres en fonction du prix actuel. Bouton [Close All Buy] : ferme tous les ordres d'achat en cours. Bouton [Close All Sell] : ferme tous les ordres de vente ouverts. Bouton [Close All Orders] : ferme tous les ordres, qu'ils soient d'achat ou de vente. À droite de l'affichage, vous pouvez voir les ordres ouverts, les profits et d'autres informations utiles. Description des paramètres : MM : utilise automatiquement le ratio de risque pour calculer la taille de lot par défaut. Risk : pour un solde de 10 000, 0,2 mains correspond à un risque de 0,2. Lots : taille de lot fixe si MM est FALSE, vous utiliserez alors ce nombre de lots fixe. SL : Stop Loss, par défaut à 250 micro-points. TP : Take Profit, par défaut à 500 micro-points. Pour d'autres paramètres liés à l'interface utilisateur, n'hésitez pas à explorer ! Vous pouvez ainsi pratiquer votre propre système de trading. Merci à tous et bon trading !

2024.02.29
Comment Calculer le Drawdown sur MT4 : Guide Pratique pour les Traders
MetaTrader4
Comment Calculer le Drawdown sur MT4 : Guide Pratique pour les Traders

Salut les traders ! Aujourd'hui, parlons d'un aspect crucial de la gestion de votre compte de trading : le drawdown. Si vous utilisez MetaTrader 4, vous savez probablement que le drawdown peut avoir un impact significatif sur vos performances. Alors, comment le calculer efficacement ? Comprendre le Drawdown sur MT4 Le drawdown représente la baisse maximale de votre capital par rapport à un sommet précédent. Sur MT4, vous pouvez le calculer en tenant compte de votre numéro magique et du symbole de l'instrument. Cela vous permet de cibler spécifiquement un compte ou un instrument particulier. Configurer le Calcul du Drawdown Pour calculer le drawdown sans tenir compte du drawdown global de votre compte, il vous suffit de retirer le filtre du numéro magique et du symbole dans le code. Cela vous donnera une vision plus claire de la performance de votre stratégie de trading. Pourquoi le Drawdown est Important Gestion des Risques : Comprendre votre drawdown vous aide à mieux gérer vos risques.Évaluation de la Stratégie : Cela vous permet d'évaluer si votre stratégie est viable à long terme.Prise de Décisions : Un drawdown élevé peut vous pousser à reconsidérer vos positions et à ajuster votre approche. Voilà, c'est tout pour aujourd'hui ! J'espère que cette petite explication vous aidera à mieux gérer votre trading sur MT4. N'oubliez pas, la clé du succès réside dans une bonne gestion des risques et une stratégie bien rodée. À bientôt sur le marché !

2024.02.14
Optimisez vos stratégies de Grid et Martingale avec le Bounce Number sur MetaTrader 4
MetaTrader4
Optimisez vos stratégies de Grid et Martingale avec le Bounce Number sur MetaTrader 4

La taille des lots et le nombre de transactions pour des stratégies comme Grid et Martingale sont essentiels pour maximiser vos gains. Nous nous posons souvent la question de ce qui s'est passé historiquement sur un symbole dans des zones de range. Combien de fois le prix a-t-il rebondi entre deux niveaux d'une zone de range ? C'est ce que j'appelle le Bounce Number. On peut le calculer grâce à une analyse statistique de l'historique d'un symbole sur le marché. Pour mieux comprendre, regardons l'image n° 1. Image n° 1 : Définition du Bounce Number, son objectif et ses applications Cette image illustre comment le mouvement des prix génère des statistiques pour l'outil Bounce Number. Afin de ne pas surcharger le graphique, j'ai intégré une fonction Sleep dans l'Expert Advisor (EA) pour gérer le nombre de bougies dans les paramètres de l'outil. La deuxième image (Image n° 2) montre la structure graphique de l'outil et la signification de ses objets. Image n° 2 : Statistiques du Bounce Number. Utilisation de l'outil : À partir de l'image n° 2, si nous définissons la Hauteur de Canal de Rebond à 600 points : Il existe 6 différents nombres de rebonds allant de 1 à 6 pour ce symbole. Le nombre de rebonds 2 signifie que le prix commence au milieu du canal de rebond (hauteur 2 * 600 = 1200 points) et monte et descend, touchant une fois la ligne rouge et une fois la ligne bleue avant d'atteindre le TP = 1200 points. Pour le nombre de rebonds 5, cela signifie que le prix part du point médian du canal et touche 2 fois la ligne rouge et 3 fois la ligne bleue, ou 3 fois la ligne rouge et 2 fois la ligne bleue avant d'atteindre le TP = 1200 points. On peut en dire autant pour les autres nombres de rebonds. Nous n'avons pas de nombre de rebonds 7, ce qui signifie qu'il n'y a pas eu 7 rebonds entre les lignes rouges et bleues (avec une distance de 1200 points) dans l'historique sélectionné par les paramètres de l'outil. Notez que si vous sélectionnez plus de données historiques (Nombre maximal de bougies à analyser), la chance de trouver 7 rebonds augmentera. Cependant, comme nous le voyons, même la chance d'obtenir 6 rebonds est de 22 sur 9020 éléments au total ayant atteint les TP. Ce qu'il y a dans les paramètres de l'outil : Nombre maximal de bougies à analyser : Comme pour d'autres outils de scan, soyez prudent avec le nombre que vous définissez ici. Ne l'augmentez pas de manière excessive pour éviter tout crash de mémoire. Time-Frame : Choisissez le Time-Frame des bougies que vous souhaitez utiliser pour trouver les rebonds aux limites du canal et pour toucher les lignes TP. Utilisez un time-frame inférieur pour des canaux étroits. Si vous ne savez pas quoi choisir, il est préférable d'utiliser le time-frame M1. Hauteur de Canal de Rebond : Il s'agit de la distance de la ligne verte par rapport aux lignes rouges et bleues, exprimée en points. Couleur de Fond du Graphique Couleur des Barres de Graphique 1/Couleur des Barres de Graphique 2 : Pour rendre les barres statistiques un peu plus attrayantes. Couleur des Cellules de Comptage Couleur des Cellules de Nombres de Rebond Couleur de la Barre de Chargement : Pendant le calcul, cette barre de chargement aide l'utilisateur à savoir si l'outil fonctionne et à quelle vitesse s'effectuent les calculs. - Un bouton a été ajouté pour démarrer et entrer le nombre de bougies historiques depuis l'écran.

2024.01.12
Alerte Sonore de Connexion/Déconnexion pour MetaTrader 5
MetaTrader5
Alerte Sonore de Connexion/Déconnexion pour MetaTrader 5

Salut les traders ! Aujourd'hui, je vais vous présenter une petite utilité qui pourrait vous rendre la vie plus facile lors de vos sessions de trading sur MetaTrader 5. Il s'agit d'une alerte sonore qui se déclenche lorsque la connexion à votre terminal est établie ou perdue. Pour commencer, il vous suffit d'ajouter vos fichiers son (.wav) dans le dossier MQL5\Files\Sounds. Ensuite, copiez le code ci-dessous dans votre terminal et compilez l'utilitaire EA. Attention, les lignes commentées sont là car l'utilisation de #resource rend l'upload impossible. //+------------------------------------------------------------------+ //|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Alerte_Son_Connect_Déconnect.mq5 | //|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Copyright 2024, Rajesh Kumar Nait | //|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;https://www.mql5.com/en/users/rajeshnait/seller | //+------------------------------------------------------------------+ #property copyright "Copyright 2024, Rajesh Kumar Nait" #property link&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"https://www.mql5.com/en/users/rajeshnait/seller" #property version&nbsp;&nbsp; "1.00" #include &lt;Trade/TerminalInfo.mqh&gt; bool&nbsp;&nbsp;&nbsp;&nbsp; first&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = true; bool&nbsp;&nbsp;&nbsp;&nbsp; Now_IsConnected&nbsp;&nbsp; = false; bool&nbsp;&nbsp;&nbsp;&nbsp; Pre_IsConnected&nbsp;&nbsp; = true; datetime Connect_Start = 0, Connect_Stop = 0; CTerminalInfo terminalInfo; //--- Fichiers son #resource "\Files\Sounds\CONNECTED.wav" #resource "\Files\Sounds\DISCONNECTED.wav" //+------------------------------------------------------------------+ //| Fonction d'initialisation de l'expert&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | //+------------------------------------------------------------------+ int OnInit() &nbsp;&nbsp;{ //--- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ResetLastError(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while ( !IsStopped() ) { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Pre_IsConnected = Now_IsConnected; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Now_IsConnected = terminalInfo.IsConnected(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ( first ) { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Pre_IsConnected = !Now_IsConnected; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ( Now_IsConnected != Pre_IsConnected ) { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ( Now_IsConnected ) { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Connect_Start = TimeLocal(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ( !first ) { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(!PlaySound("::Files\Sounds\DISCONNECTED.wav")) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Print("Erreur: ",GetLastError()); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ( IsStopped() ) { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!PlaySound("::Files\Sounds\CONNECTED.wav")) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Print("Erreur: ",GetLastError()); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Connect_Stop = TimeLocal(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ( !first ) { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(!PlaySound("::Files\Sounds\CONNECTED.wav")) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Print("Erreur: ",GetLastError()); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ( IsStopped() ) { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!PlaySound("::Files\Sounds\DISCONNECTED.wav")) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Print("Erreur: ",GetLastError()); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; first = false; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Sleep(1000); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} //--- &nbsp;&nbsp; return(INIT_SUCCEEDED); &nbsp;&nbsp;} //+------------------------------------------------------------------+ Pour une démonstration, vous pouvez visionner cette vidéo :

2024.01.08
Outils Avancés MQL5 pour Traders : Développez vos Programmes sur MetaTrader 5
MetaTrader5
Outils Avancés MQL5 pour Traders : Développez vos Programmes sur MetaTrader 5

Partie 7 : Outils Avancés MQL5 Dans la Partie 7 : Outils Avancés MQL5 du livre "Programmation MQL5 pour Traders", nous explorons les capacités avancées de l'API MQL5, qui vous seront utiles lors du développement de programmes pour MetaTrader 5. Vous découvrirez des symboles financiers personnalisés, des événements de calendrier économique intégrés, ainsi que des technologies polyvalentes telles que le réseau, les bases de données et la cryptographie. Cette section aborde les bibliothèques – un type de programme spécial qui fournit des API prêtes à l'emploi pour se connecter à d'autres programmes MQL. Nous verrons également la possibilité de développer des paquets logiciels et de combiner des programmes logiquement interconnectés en projets. Enfin, nous présenterons les intégrations avec d'autres environnements logiciels, y compris Python. Nous commencerons par étudier les ressources, qui sont des fichiers de tout type pouvant être intégrés dans le code du programme. Les ressources peuvent contenir : Des éléments multimédias Des paramètres "durs" provenant de programmes externes D'autres programmes MQL5 sous forme compilée L'environnement de développement MQL5 permet l'inclusion de tableaux de données d'application, d'images, de sons et de polices dans le fichier source, rendant le programme autonome et pratique pour l'utilisateur final. Nous accorderons une attention particulière aux ressources graphiques avec des images raster au format BMP : Vous apprendrez à les créer, les modifier et les afficher dynamiquement sur le graphique. Nous conclurons cette partie du livre en étudiant l'intégration d'OpenCL dans MQL5. OpenCL est une norme ouverte pour la programmation parallèle dans des systèmes multiprocesseurs, incluant les processeurs graphiques (GPU) et les unités centrales (CPU). Cela permet d'accélérer les tâches computationnelles intensives, à condition que les algorithmes puissent être parallélisés. Cela peut inclure la formation de réseaux neuronaux, la transformation de Fourier et la résolution de systèmes d'équations. L'utilisation d'OpenCL dans les programmes MQL nécessite la présence de pilotes spéciaux du fabricant et le support de la version 1.1 d'OpenCL ou plus. La présence d'une carte graphique n'est pas obligatoire, car le processeur central peut également être utilisé pour le calcul parallèle.

2023.12.16
Premier Précédent 2 3 4 5 6 7 8 9 10 11 12 Suivant Dernier