Trading Systématique

Raymond Cloudy Day : Votre EA pour MetaTrader 5
MetaTrader5
Raymond Cloudy Day : Votre EA pour MetaTrader 5

Découvrez Raymond Cloudy Day, votre nouvel allié sur MetaTrader 5 ! Caractéristiques Clés : Méthode de Calcul Innovante : Au cœur de l'indicateur Raymond Cloudy Day se trouve une méthode de calcul unique, offrant des points d'une précision remarquable pour aider les traders à prendre des décisions éclairées. Extension pour Achat/Vente : L'indicateur confirme les extensions de tendance potentielles pour Achat ou Vente, ou un retour au point calculé principal, offrant des insights stratégiques aux traders. Points de Prise de Profit (TP) : Les points TP peuvent être utilisés pour sécuriser des profits ou comme points réguliers, permettant une flexibilité dans l'exécution de votre stratégie. Lignes de Support/Résistance : Tous les points calculés servent de lignes de support ou de résistance, offrant des perspectives plus approfondies sur les mouvements de prix potentiels et le comportement du marché. Avantages : Précision Améliorée : L'alliance innovante de la nouvelle méthode de calcul et des algorithmes avancés permet une identification plus précise des tendances, améliorant ainsi votre processus de décision. Fonctionnalité Polyvalente : Adapté aussi bien aux débutants qu'aux traders expérimentés, l'indicateur Raymond Cloudy Day s'ajuste à vos besoins, alliant simplicité et fonctionnalités avancées. Stratégies de Trading Personnalisées : Veuillez noter que la stratégie actuelle incluse dans l'EA est uniquement une démo et n'a pas été testée de manière approfondie. Nous vous encourageons à intégrer vos propres stratégies de trading pour tirer pleinement parti de l'indicateur Raymond Cloudy Day. Expérimentez différentes approches et adaptez l'indicateur à votre style de trading pour des résultats optimaux. Découvrez la puissance de la vision de Raymond et notre expertise en codage avec l'indicateur Raymond Cloudy Day. Optimisez votre stratégie de trading et maximisez votre succès sur le marché avec cet outil à la pointe de la technologie.

2024.07.14
Comprendre les EAs : Crossover de Moyenne Mobile avec et sans Martingale pour MetaTrader 5
MetaTrader5
Comprendre les EAs : Crossover de Moyenne Mobile avec et sans Martingale pour MetaTrader 5

Toutes les fonctions utilisées dans cet Expert Advisor se trouvent dans le fichier ImportantFunctions.mqh. Nous avons deux EAs qui utilisent le croisement des prix avec la moyenne mobile comme signal d'entrée. La seule différence ? L'un utilise la Martingale en cas de pertes, tandis que l'autre s'en passe. Je ne recommande pas d'utiliser ces EAs sur un compte réel, ils sont uniquement destinés à des fins de démonstration. Paramètres de l'EA avec Moyenne Mobile : MAPeriod : La période de l'indicateur de Moyenne Mobile. LotSize : La taille du lot pour ouvrir des positions. TPPoints : Les points de prise de profit. SLPoints : Les points de stop loss. Paramètres de l'EA avec Moyenne Mobile et Martingale : MAPeriod : La période de l'indicateur de Moyenne Mobile. StartingLot : La taille du lot pour la première transaction ; cette valeur augmentera après une perte. MaxLot : La taille maximale du lot. Le StartingLot peut être augmenté jusqu'à cette valeur. TPPoints : Les points de prise de profit. Cette valeur augmentera après une perte. SLPoints : Les points de stop loss. Cette valeur augmentera également après une perte. LotMultiplier : La taille du lot sera multipliée par cette valeur après une perte, tant que la valeur MaxLot n'est pas atteinte. TPMultiplier : La prise de profit et le stop loss augmenteront de ce montant après une perte, offrant un avantage de récupération non seulement par la taille des positions mais aussi grâce à un TP plus important. Le code contient des commentaires et j'ai réalisé une vidéo YouTube qui explique tout ce que vous devez savoir. Merci de m'avoir lu !

2024.06.10
Stratégie de Casse avec Fonctions d'Aide pour Firmes Prop - Expert pour MetaTrader 5
MetaTrader5
Stratégie de Casse avec Fonctions d'Aide pour Firmes Prop - Expert pour MetaTrader 5

Salut à tous, Voici une mise à jour de la stratégie de casse Simple mais Efficace. Dans ce code, j'ai ajouté quelques fonctions d'aide pour les défis des firmes prop. En général, pour réussir un défi de firme prop, il faut satisfaire trois critères principaux : Objectif de profit Ne pas dépasser la perte maximale quotidienne Ne pas dépasser la perte maximale Dans ce code, j'ai inclus deux fonctions pour vérifier si l'on a atteint l'« objectif de profit » et si l'on est sur le point de dépasser la « perte maximale quotidienne ». Ces fonctions permettent de sortir automatiquement de toutes les positions et de supprimer toutes les ordres en attente. Quant à la « perte maximale », cela dépend vraiment de votre stratégie et de votre gestion des risques, donc je ne l'ai pas mentionnée dans ce script MQL5. //+------------------------------------------------------------------+ //| Fonctions d'Aide pour Firmes Prop                                       | //+------------------------------------------------------------------+ // Supprime toutes les ordres en attente et ferme toutes les positions void ClearAll(string message) {    Comment(message);    for (int i = OrdersTotal() - 1; i >= 0; i--)    {       ulong orderTicket = OrderGetTicket(i);       if (OrderSelect(orderTicket))       {          trade.OrderDelete(orderTicket);       }    }    for (int i = PositionsTotal() - 1; i >= 0; i--)    {       ulong posTicket = PositionGetTicket(i);       trade.PositionClose(posTicket);    } } // Vérifie si nous avons atteint l'objectif de profit bool isPassed() {    return AccountInfoDouble(ACCOUNT_EQUITY) > PASS_CRITERIA; } // Vérifie si nous allons dépasser la perte maximale quotidienne bool isDailyLimit() {    MqlDateTime date_time;    TimeToStruct(TimeCurrent(), date_time);    int current_day = date_time.day, current_month = date_time.mon, current_year = date_time.year;       // Solde actuel    double current_balance = AccountInfoDouble(ACCOUNT_BALANCE);       // Obtenir le PL des trades fermés aujourd'hui    HistorySelect(0, TimeCurrent());    int orders = HistoryDealsTotal();       double PL = 0.0;    for (int i = orders - 1; i >= 0; i--)    {       ulong ticket=HistoryDealGetTicket(i);       if(ticket==0)       {          Print("Échec de HistoryDealGetTicket, aucune historique de trade");          break;       }       double profit = HistoryDealGetDouble(ticket,DEAL_PROFIT);       if (profit != 0)       {          // Obtenir la date et l'heure de la transaction          MqlDateTime deal_time;          TimeToStruct(HistoryDealGetInteger(ticket, DEAL_TIME), deal_time);          // Vérifier la date de la transaction          if (deal_time.day == current_day && deal_time.mon == current_month && deal_time.year == current_year)          {             PL += profit;          }          else             break;       }    }    double starting_balance = current_balance - PL;    double current_equity   = AccountInfoDouble(ACCOUNT_EQUITY);    return current_equity < starting_balance - DAILY_LOSS_LIMIT; } Les paramètres à spécifier sont : input string dd = "-------------DÉFI DE LA FIRM PROP-----------------"; input bool   isChallenge = false; input double PASS_CRITERIA = 110100.; input double DAILY_LOSS_LIMIT = 4500.; J'espère que vous trouverez de la valeur dans ce script.

2024.05.11
Vérifiez les Dernières Transactions Closes sur MetaTrader 5
MetaTrader5
Vérifiez les Dernières Transactions Closes sur MetaTrader 5

Salut les traders ! Aujourd'hui, je vais vous montrer comment obtenir les données de votre dernière transaction fermée sans avoir à utiliser de boucles dans votre code. C'est super pratique pour garder un œil sur vos performances ! Comment procéder ? Créez une variable pour définir l'heure de début de la journée. (Ce n'est pas une obligation, mais c'est un bon point de départ.) Créez d'autres variables pour afficher des résultats sur le graphique et les utiliser dans d'autres blocs de code. (Encore une fois, ce n'est pas nécessaire, mais c'est utile.) En utilisant ce code dans la fonction OnTick();, vous obtiendrez les résultats à chaque tick. Vous pouvez également le configurer pour qu'il s'exécute à chaque barre. Le Code // variables string DayStart = "00:00"; // Heure de Début de la Journée double LastClosed_Profit; // Profit de la Dernière Transaction Fermée string TradeSymbol, TradeType; // Initialisation de l'Expert -------------------- int OnInit()   {    return(INIT_SUCCEEDED);   } // Désinitialisation de l'Expert ------------------- void OnDeinit(const int reason)   {   } // Fonction OnTick -------------------------- void OnTick()   { // Vérification de la dernière transaction fermée.    CheckLastClosed();   } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ void CheckLastClosed()   {    datetime HistoryTime = StringToTime(DayStart); // Historique de "Début de la Journée à l'heure actuelle"    if(HistorySelect(HistoryTime,TimeCurrent()))      {       int Total = HistoryDealsTotal();       // Obtenez le numéro de ticket de la dernière transaction et sélectionnez-le pour un traitement ultérieur.       ulong Ticket = HistoryDealGetTicket(Total -1);       // Obtenez les informations nécessaires.       LastClosed_Profit = NormalizeDouble(HistoryDealGetDouble(Ticket,DEAL_PROFIT),2);       TradeSymbol = HistoryOrderGetString(Ticket,ORDER_SYMBOL);       // Identifier une transaction de vente.       if(HistoryDealGetInteger(Ticket,DEAL_TYPE) == DEAL_TYPE_BUY)         {          TradeType = "Vente";         }       // Identifier une transaction d'achat       if(HistoryDealGetInteger(Ticket,DEAL_TYPE) == DEAL_TYPE_SELL)         {          TradeType = "Achat";         }       // Affichage sur le graphique.       Comment("\n","Total des Transactions - :  ", Total,               "\n","Numéro du Dernier Ticket - :  ", Ticket,               "\n", "Profit de la Dernière Transaction -:  ", LastClosed_Profit,               "\n", "La Dernière Transaction était -:  ", TradeType);      }   } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ N'oubliez pas, vous pouvez obtenir l'ensemble de l'historique des transactions (depuis le tout début de votre compte) en utilisant la fonction HistorySelect(); comme ceci : // Obtenez tout l'historique HistorySelect(0,TimeCurrent());

2024.04.22
Optimisez vos Trades avec le Système de Trailing et de Fermeture Automatique sur MetaTrader 5
MetaTrader5
Optimisez vos Trades avec le Système de Trailing et de Fermeture Automatique sur MetaTrader 5

Salut à tous les traders ! Aujourd'hui, je vais vous parler d'un outil qui pourrait bien améliorer votre expérience de trading sur MetaTrader 5 : un système de trailing et de fermeture automatique des ordres. Présentation de l'EA : Cet EA (Expert Advisor) est une modification d'un ancien système que vous pouvez consulter ici. Il offre des fonctionnalités intéressantes pour gérer vos ordres plus efficacement. Comment l'utiliser : 1. Ajoutez cet EA sur n'importe quel symbole. 2. Définissez les valeurs des variables pour vos objectifs de TP (Take Profit), SL (Stop Loss), trailing, et les seuils de profit ou de perte pour vos ordres. 3. Cet EA n'est pas basé sur un numéro magique spécifique, ce qui signifie que si vous passez une commande depuis votre mobile, l'EA adaptera automatiquement le SL, le TP et le trailing. Fonctionnalités de modification : 1. Séparation avec 5 boutons : 2. Fermeture automatique de tous les ordres lorsque le profit atteint le seuil défini par le paramètre : "CLOSE IF PROFIT-xxxx" (Remplissez avec 0 si vous ne souhaitez pas utiliser cette fonction) : Exemple : Remplir 100.0 fermera automatiquement tous les ordres lorsque le profit atteindra 100 €. Si vous remplissez 0.0, cette fonction sera désactivée. 3. Fermeture automatique de tous les ordres lorsque la perte atteint le seuil défini par le paramètre : "CLOSE IF LOSS-xxxx" (Remplissez avec 0 si vous ne souhaitez pas utiliser cette fonction) : Exemple : Remplir -70.0 fermera automatiquement tous les ordres lorsque la perte atteindra -70 €. Si vous remplissez 0.0, cette fonction sera désactivée. Alors, préparez-vous à trader avec plus de sérénité ! Historique des mises à jour : - Ajout du bouton pour fermer les ordres d'achat. - Ajout du bouton pour fermer les ordres de vente. - Suppression du paramètre non utilisé : Lots.

2024.04.21
Découvrez QuickTradeKeys123 : L'EA indispensable pour MetaTrader 5
MetaTrader5
Découvrez QuickTradeKeys123 : L'EA indispensable pour MetaTrader 5

Bienvenue dans le monde du trading efficace avec QuickTradeKeys 123 ! Cet Expert Advisor est conçu pour vous permettre de réagir rapidement et efficacement sur le marché. Grâce à une simple pression sur une touche, vous pouvez trader directement depuis votre graphique. Voici un aperçu de ses fonctionnalités : Fonctionnalités Clés Touche '1' : Ouvre une position d'achat avec une taille de lot prédéfinie. Touche '2' : Ouvre une position de vente avec une taille de lot prédéfinie. Touche '3' : Ferme toutes les positions ouvertes par l'EA en fonction du numéro magique spécifié. Que vous soyez débutant ou trader expérimenté, cet EA est très facile à utiliser et vous permet un contrôle immédiat de vos trades via le clavier. Champ d'Application Le QuickTradeKeys 123 est adapté à toutes les paires de devises et à tous les intervalles de temps. Pour des performances optimales et une exécution rapide, nous vous recommandons de viser un faible spread et un accès fluide au marché. Installation Pour l'installer, il vous suffit de glisser l'EA sur le graphique souhaité, de vous assurer que le trading automatique est activé dans MetaTrader, et que l'EA est autorisé à exécuter des trades. N'oubliez pas de configurer le numéro magique selon vos besoins dans les paramètres d'entrée. Important Attention : cet EA n'est pas destiné à être utilisé sur un compte de trading réel à moins que vous ne compreniez pleinement le concept sous-jacent et les risques associés. Il est conseillé de tester d'abord l'EA sur un compte démo pour vous familiariser avec son comportement.

2024.04.20
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
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
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
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 1 2 3 4 5 6 7 8 9 10 Suivant Dernier