Trading Systématique

Automatisation du Trading avec MQL5 : Guide Pratique des Experts pour MetaTrader 5
MetaTrader5
Automatisation du Trading avec MQL5 : Guide Pratique des Experts pour MetaTrader 5

Partie 6. Automatisation du Trading Dans "Partie 6. Automatisation du Trading" du livre "Programmation MQL5 pour les Traders", nous allons explorer un élément clé du langage MQL5. Nous commencerons par une description des entités fondamentales, telles que les spécifications des instruments financiers et les paramètres des comptes de trading. Ces éléments sont essentiels pour créer des Systèmes de Trading (Expert Advisors) qui fonctionnent correctement. Ensuite, nous passerons aux fonctions intégrées et aux structures de données, ainsi qu'aux événements spécifiques aux robots. Nous aborderons également les aspects essentiels des opérations des Systèmes de Trading dans le testeur de stratégie. Le Testeur de Stratégie de MetaTrader 5 est un outil crucial dans le développement de robots de trading, car il permet d'évaluer la performance financière et d'optimiser les stratégies de trading. Nous examinerons également une autre représentation des données de marché : la Profondeur de Marché et son interface logicielle. MetaTrader 5 offre la possibilité d'analyser et de trader des instruments financiers (symboles), qui constituent la base de tous les sous-systèmes du terminal. Les utilisateurs peuvent sélectionner des symboles dans la liste fournie par leur courtier et les surveiller dans le Market Watch. Grâce à l'API MQL5, vous pouvez visualiser et analyser les caractéristiques de tous les symboles, en les ajoutant ou en les retirant du Market Watch. En plus des symboles standards fournis par les courtiers, MetaTrader 5 prend en charge la création de symboles personnalisés, en chargeant leurs propriétés et l'historique des cotations à partir de sources de données arbitraires ou en les calculant à l'aide de formules et de programmes MQL5.

2023.12.16
Programmer en MQL5 pour les Traders : Créez vos Propre Applications
MetaTrader5
Programmer en MQL5 pour les Traders : Créez vos Propre Applications

Partie 5 : Créer des programmes en MQL5 Dans "Partie 5 : Créer des programmes d'application" du livre sur la programmation MQL5 pour les traders, nous allons plonger plus en profondeur dans les API liées au trading algorithmique, y compris l'analyse et le traitement des données financières, la visualisation des graphiques, l'automatisation et les interactions avec les utilisateurs. Nous commencerons par les principes généraux de la création de programmes MQL et nous examinerons les types d'événements, les fonctionnalités et les modèles dans le terminal. Ensuite, nous explorerons l'accès aux séries temporelles, les opérations avec les graphiques et les objets graphiques, ainsi que les principes de création et d'application de chaque type de programme MQL séparément. Le terminal MetaTrader 5 supporte cinq types de programmes : les indicateurs techniques, les Conseillers Experts (CE) pour le trading automatique ou semi-automatique, les scripts pour effectuer des tâches uniques, les services pour les opérations en arrière-plan, et les bibliothèques pour des modules fonctionnels individuels. Nous allons approfondir le travail avec les indicateurs et les graphiques et apprendre des techniques qui sont également applicables aux Conseillers Experts. Le développement de ces derniers sera abordé dans la prochaine partie du livre, où nous explorerons l'exécution automatique des ordres, la formalisation des stratégies de trading, ainsi que leur test et optimisation à l'aide de données historiques. Nous apprendrons à utiliser les indicateurs intégrés standard et à créer nos propres applications à partir de zéro ou en nous basant sur d'autres indicateurs. Tous les programmes compilés sont affichés dans le Navigateur de MetaTrader 5, à l'exception des bibliothèques EX5, qui sont utilisées par d'autres programmes mais n'ont pas de représentation séparée dans le Navigateur. En fin de compte, nous allons acquérir une compréhension plus complète des capacités du langage MQL5 et de son application dans le trading algorithmique. Cela nous permettra de travailler efficacement avec les données financières et de créer des indicateurs de trading ainsi que des Conseillers Experts.

2023.12.16
Maîtrisez les APIs MQL5 : Guide Pratique pour les Traders
MetaTrader5
Maîtrisez les APIs MQL5 : Guide Pratique pour les Traders

Partie 4 : Les APIs MQL5 courantes Dans les sections précédentes de notre guide, nous avons exploré les bases du langage de programmation MQL5, en étudiant sa syntaxe, ses règles d'utilisation et ses concepts clés. Cependant, pour écrire des programmes qui traitent des données et automatisent le trading, il est essentiel d'exploiter de nombreuses fonctions intégrées qui permettent d'interagir avec le terminal MetaTrader 5. Dans "Partie 4 : Les APIs MQL5 courantes", nous allons nous concentrer sur la maîtrise des fonctions intégrées (MQL5 API) et nous plonger progressivement dans des sous-systèmes spécialisés. Chaque programme MQL5 peut tirer parti d'une multitude de technologies et de fonctionnalités. Il est donc judicieux de commencer par les fonctions les plus simples et utiles, que l'on peut utiliser dans la plupart des programmes. Parmi les sujets principaux, nous étudierons les opérations sur les tableaux, le traitement des chaînes de caractères, les interactions avec les fichiers, la conversion de données et les fonctions d'interaction utilisateur. Nous explorerons également les fonctions mathématiques et la gestion de l'environnement de programme. Contrairement à certains autres langages de programmation, l'utilisation des fonctions intégrées de l'API MQL5 ne nécessite pas de directives de préprocesseur supplémentaires. Les noms de toutes les fonctions de l'API MQL5 sont disponibles dans le contexte global (espace de noms) et peuvent toujours être accessibles sans condition. Nous aborderons également la possibilité d'utiliser des noms similaires dans différents contextes de programme, comme les noms de méthodes de classe ou les espaces de noms personnalisés. Dans ces cas, il est nécessaire d'utiliser l'opérateur de résolution de contexte pour appeler la fonction globale, comme nous en avons discuté dans la section sur les types imbriqués, les espaces de noms et l'opérateur de contexte '::'. La programmation nécessite souvent des opérations avec divers types de données. Dans les sections précédentes, nous avons déjà vu les mécanismes de conversion explicite et implicite des types de données intégrés. Cependant, ces mécanismes peuvent ne pas toujours être adaptés pour différentes raisons. Pour fournir une conversion de données plus fine entre différents types, l'API MQL5 inclut un ensemble de fonctions de conversion. Une attention particulière est accordée aux fonctions de conversion entre chaînes et autres types, tels que les nombres, les dates et heures, les couleurs, les structures et les énumérations.

2023.12.15
Programmation MQL5 : Plongée dans la Programmation Orientée Objet pour Traders
MetaTrader5
Programmation MQL5 : Plongée dans la Programmation Orientée Objet pour Traders

Partie 3 : Programmation Orientée Objet en MQL5 "Partie 3 : Programmation Orientée Objet en MQL5" vous plonge dans l'univers de la programmation orientée objet (POO) avec le langage MQL5. Le développement logiciel implique souvent une certaine complexité, notamment en ce qui concerne la gestion de plusieurs entités, nécessitant des technologies avancées pour optimiser la commodité, la productivité et la qualité de la programmation. La technologie POO repose sur le concept d'objets, qui sont des variables de type personnalisé définies par le programmeur en utilisant les outils MQL5. Créer des types personnalisés permet de modéliser des objets et simplifie l'écriture et la maintenance des programmes. Cette partie examine diverses manières de définir de nouveaux types, notamment les classes, les structures et les unions. Ces types personnalisés peuvent combiner des données et des algorithmes pour décrire l'état et le comportement des objets d'application. L'auteur met en avant le principe du "diviser pour régner", montrant que les objets sont de mini-programmes, chacun responsable de la résolution d'une petite tâche logiquement complète. Vous pouvez combiner ces objets en un système unique et créer des produits et services d'une complexité arbitraire. Pour aider les utilisateurs à explorer les capacités du MQL5, la partie "Programmation Orientée Objet en MQL5" introduit les principes de la POO accompagnés d'exemples pratiques d'implémentation. Le livre aborde également les modèles, les interfaces et les espaces de noms, dévoilant la flexibilité et la puissance de la POO dans le développement de programmes en MQL5.

2023.12.15
MQL5 : Introduction au langage et à l'environnement de développement
MetaTrader5
MQL5 : Introduction au langage et à l'environnement de développement

Partie 1 : Introduction à MQL5 et à l'environnement de développement Dans cette première partie, intitulée "Introduction à MQL5 et à l'environnement de développement", nous allons explorer les bases du langage MQL5 et de son environnement de développement. Parmi les nouveautés que MQL5 apporte par rapport à son prédécesseur MQL4 (le langage de MetaTrader 4), on trouve le support de la programmation orientée objet (POO), ce qui le rend semblable à C++. Bien que certaines fonctions de la POO aient déjà été intégrées à MQL4, il est vrai que ceux qui n'ont pas l'habitude de programmer peuvent trouver cela un peu déroutant. L'objectif de ce livre est de rendre cette approche claire et accessible. Il sert de complément au manuel de référence MQL5, en abordant tous les aspects de la programmation MQL5 et en détaillant chaque processus. Les développeurs peuvent choisir entre un style de programmation orienté objet et un style procédural, ou même combiner les deux. Pour ceux d'entre vous qui ont déjà une expérience en programmation, vous pouvez passer les bases. Les programmeurs C++ trouveront MQL5 plus facile à maîtriser, mais attention aux différences de langage pour éviter les erreurs. Avec MQL5, vous pouvez créer différents types de programmes, tels que des indicateurs pour afficher graphiquement des données, des systèmes de trading pour automatiser vos opérations, des scripts pour des actions ponctuelles, ainsi que des services pour des tâches en arrière-plan. Une caractéristique distinctive de MetaTrader 5 est la gestion complète du système de trading depuis le terminal client, où les programmes MQL5 s'exécutent et envoient des ordres de trading au serveur. Les applications MQL5 ne sont pas installées sur le serveur. Cette première partie explique comment éditer, compiler et exécuter des programmes, ainsi que les différents types de données, variables, expressions, tableaux, débogage et affichage des résultats.

2023.12.15
Utiliser un Modèle ONNX pour Reconnaître des Chiffres Manuscrits sur MetaTrader 5
MetaTrader5
Utiliser un Modèle ONNX pour Reconnaître des Chiffres Manuscrits sur MetaTrader 5

Un Expert Advisor pour la Reconnaissance de Chiffres Manuscrits La base de données MNIST contient 60 000 images pour l'entraînement et 10 000 images pour les tests. Ces images proviennent d'un ensemble original de 20x20 pixels en noir et blanc, créé par le NIST, puis enrichi avec des échantillons de lycéens américains. Les échantillons ont été normalisés à une taille de 28x28 pixels, ce qui a introduit des niveaux de gris grâce à un traitement anti-aliasing. Le modèle entraîné pour la reconnaissance de chiffres manuscrits, mnist.onnx, a été téléchargé depuis GitHub à partir de la Model Zoo (opset 8). Si vous êtes curieux, n'hésitez pas à télécharger et essayer d'autres modèles, en évitant ceux avec opset 1 qui ne sont plus supportés par le dernier runtime ONNX. Fait surprenant, le vecteur de sortie n'a pas été traité avec la fonction d'activation Softmax, ce qui est pourtant courant dans les modèles de classification. Pas de panique, nous pouvons facilement l'implémenter nous-mêmes. int PredictNumber(void)  {   static matrixf image(28,28);   static vectorf result(10);   PrepareMatrix(image);   if(!OnnxRun(ExtModel,ONNX_DEFAULT,image,result))     {      Print("OnnxRun error ",GetLastError());      return(-1);     }   result.Activation(result,AF_SOFTMAX);   int predict=int(result.ArgMax());   if(result[predict]<0.8)      Print(result);      Print("valeur ",predict," prédite avec probabilité ",result[predict]);   return(predict);  } Pour dessiner des chiffres, utilisez la souris tout en maintenant le bouton gauche enfoncé. Pour reconnaître le chiffre dessiné, appuyez sur le bouton CLASSIFIER. Si la probabilité obtenue pour le chiffre reconnu est inférieure à 0.8, le vecteur de résultats avec les probabilités pour chaque classe est affiché dans le journal. Par exemple, essayez de classifier un champ de saisie vide. [0.095331445,0.10048489,0.10673151,0.10274081,0.087865397,0.11471312,0.094342403,0.094900772,0.10847695,0.09441267]valeur 5 prédite avec probabilité 0.11471312493085861 En raison de certaines raisons, la précision de reconnaissance est particulièrement plus basse pour le chiffre neuf (9). Les chiffres inclinés vers la gauche sont reconnus avec plus de précision.

2023.11.23
Stratégie Martin Gale Breakout pour MT5 : Optimisez vos Trades
MetaTrader5
Stratégie Martin Gale Breakout pour MT5 : Optimisez vos Trades

La stratégie "Martin Gale Breakout" est un système de trading (EA) conçu spécialement pour le marché des devises. Cet EA combine une approche de trading par breakout avec des éléments du système de gestion de capital Martin Gale pour maximiser vos performances de trading. Paramètres d'entrée : TakeProfPoints : Ce paramètre vous permet de définir le niveau de Take Profit en points pour chaque trade. BalancePercentageAvailable : Spécifiez le pourcentage de votre solde de compte qui sera utilisé pour le trading. TP_Percentage_of_Balance : Il détermine le pourcentage de votre solde de compte à utiliser comme Take Profit pour chaque trade. SL_Percentage_of_Balance : Cela fixe le pourcentage de votre solde à allouer comme Stop Loss pour les trades. Start_The_Recovery : Ce paramètre joue un rôle crucial dans le processus de récupération, en contrôlant quand et comment les mesures de récupération sont activées. TP_Points_Multiplier : Un multiplicateur pour les points de Take Profit, permettant des stratégies de prise de bénéfices flexibles. MagicNumber : Un identifiant unique à cet EA, garantissant qu'il peut gérer ses propres trades de manière indépendante. Points Forts de la Stratégie : Trading par Breakout : L'EA se spécialise dans l'identification des opportunités de breakout sur le marché, lorsque les mouvements de prix franchissent des niveaux clés. Dimensionnement Dynamique des Lots : Les tailles de lots sont ajustées dynamiquement en fonction de votre solde de compte et de vos préférences en matière de risque, suivant les principes de gestion de capital de Martin Gale. Récupération des Pertes : L'EA comprend un mécanisme de récupération puissant conçu pour compenser les pertes en modifiant de manière adaptative les paramètres de trade lorsque c'est nécessaire. La fonction principale utilisée dans cet EA est CalcLotWithTP(), qui a trois paramètres d'entrée : Takeprofit, Startprice, et Endprice. Elle calcule le volume nécessaire pour le trade afin d'atteindre l'objectif de bénéfice lorsque vous entrez dans un trade au Startprice et sortez au Endprice. Tout dans le code est commenté, ce qui facilite la compréhension.

2023.09.26
Comprendre la Politique de Remplissage des Symboles dans MetaTrader 5
MetaTrader5
Comprendre la Politique de Remplissage des Symboles dans MetaTrader 5

Pour les traders utilisant MetaTrader 5, il est essentiel de comprendre comment fonctionne la politique de remplissage des symboles. Cela peut avoir un impact significatif sur vos décisions de trading. 1. Qu'est-ce que le symbole d'entrée ? Le symbole d'entrée (symbol) est simplement le nom de l'instrument financier dont vous souhaitez déterminer la politique de remplissage. C'est la première étape pour mieux gérer vos ordres de trading. 2. Obtention du type de politique de remplissage La fonction utilise SymbolInfoInteger pour récupérer des informations sur la politique de remplissage du symbole fourni. Ces informations sont stockées dans une variable nommée filling, sous forme de valeur numérique. 3. Comparaison des politiques de remplissage Ensuite, la valeur numérique (filling) est comparée à des constantes prédéfinies qui représentent différentes politiques de remplissage. Voici quelques exemples : Fill or Kill (SYMBOL_FILLING_FOK) Immediate or Cancel (SYMBOL_FILLING_IOC) Return (SYMBOL_FILLING_RETURN) 4. Retourner le type de politique de remplissage La fonction détermine le type de politique de remplissage en fonction de la comparaison. Si cela correspond à Fill or Kill, elle renvoie ORDER_FILLING_FOK. Si cela correspond à Immediate or Cancel, elle renvoie ORDER_FILLING_IOC. Si aucune de ces conditions n'est remplie, elle renvoie ORDER_FILLING_RETURN. En résumé, cette fonction vous permet de récupérer et de retourner la politique de remplissage d'un symbole dans MetaTrader 5. C'est un outil précieux pour prendre des décisions éclairées sur le trading, en fonction de la politique de remplissage d'un instrument financier spécifique.

2023.09.26
Tout savoir sur le Trailing Take Profit : un nouvel outil pour MetaTrader 5
MetaTrader5
Tout savoir sur le Trailing Take Profit : un nouvel outil pour MetaTrader 5

Salut à tous, traders ! Aujourd'hui, je vais vous parler d'un concept qui pourrait bien changer votre approche du trading : le Trailing Take Profit. Alors que le Trailing Stop suit le prix jusqu'à atteindre un niveau de perte acceptable, le Trailing Take Profit, lui, s'ajuste pour limiter les pertes lorsque le marché ne va pas dans notre sens. Pour vous donner un exemple concret : imaginez que vous ayez une position en perte. Si le prix atteint un certain seuil, que l'on peut appeler TrailingTPStart (par exemple, 500 points), alors le take profit commence à suivre le prix. La TrailingTPDistance représente la distance maximale entre le take profit et le prix actuel. Je ne sais pas si ce concept vous sera utile, mais il peut être intégré dans certains EA sans stop loss, afin de réduire les pertes à quelques points. Comment utiliser le Trailing Take Profit dans MetaTrader 5 ? Démarrez l'EA TrailingTakeProfit. Assurez-vous que TrailingTP_Mode est activé pour que l'EA fonctionne. Indiquez le symbole de votre paire, par exemple, GBPUSD, dans l'EA. Définissez TrailingTPStart, qui est le nombre de points à partir du prix actuel où le take profit commence à suivre le prix en cas de perte. Configurez TrailingTPDistance, qui détermine la distance maximale en points entre le take profit et le prix actuel. Voilà, c'est tout pour aujourd'hui ! J'espère que ce nouvel outil vous aidera à mieux gérer vos positions. N'hésitez pas à partager vos expériences avec le Trailing Take Profit !

2023.07.11
AK-47 Scalper EA : L'Expert Indispensable pour MetaTrader 5
MetaTrader5
AK-47 Scalper EA : L'Expert Indispensable pour MetaTrader 5

Bienvenue à 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 : l'AK-47 Scalper EA. Cet expert, ou robot de trading, est conçu pour optimiser vos opérations de scalping avec efficacité. 1. Paramètres d'entrée #define ExtBotName "AK-47 EA" // Nom du Bot #define Version "1.00" // Import des classes nécessaires #include &lt;Trade\PositionInfo.mqh&gt; #include &lt;Trade\Trade.mqh&gt; #include &lt;Trade\SymbolInfo.mqh&gt; #include &lt;Trade\AccountInfo.mqh&gt; #include &lt;Trade\OrderInfo.mqh&gt; // Variables prédéfinies pour une meilleure lisibilité du code #define Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK) #define Bid SymbolInfoDouble(_Symbol, SYMBOL_BID) // Paramètres d'entrée input string EASettings = "---------------------------------------------"; // -------- &lt;Paramètres EA&gt; -------- input int InpMagicNumber = 124656; // Numéro magique input string MoneySettings = "---------------------------------------------"; // -------- &lt;Paramètres de gestion de l'argent&gt; -------- input bool isVolume_Percent = true; // Autoriser le volume en pourcentage input double InpRisk = 3; // Pourcentage de risque sur le solde (%) input string TradingSettings = "---------------------------------------------"; // -------- &lt;Paramètres de trading&gt; -------- input double Inpuser_lot = 0.01; // Lots input double InpSL_Pips = 3.5; // Stop loss (en Pips) input double InpTP_Pips = 7; // Take Profit (en Pips) (0 = Pas de TP) input int InpMax_slippage = 3; // Glissement maximum autorisé en Pips. input double InpMax_spread = 5; // Spread maximum autorisé (en Points) (0 = flottant) input string TimeSettings = "---------------------------------------------"; // -------- &lt;Paramètres de temps de trading&gt; -------- input bool InpTimeFilter = true; // Filtre de temps de trading input int InpStartHour = 2; // Heure de début input int InpStartMinute = 30; // Minute de début input int InpEndHour = 21; // Heure de fin input int InpEndMinute = 0; // Minute de fin 2. Initialisation des variables locales //--- Variables int Pips2Points; // slippage 3 pips 3=points 30=points double Pips2Double; // Stop loss 15 pips 0.015 bool isOrder = false; int slippage; long acSpread; string strComment = ""; CPositionInfo m_position; // objet de position de trading CTrade m_trade; // objet de trading CSymbolInfo m_symbol; // objet d'information sur le symbole CAccountInfo m_account; // wrapper d'information sur le compte COrderInfo m_order; // objet des ordres en attente 3. Code Principal a/ Fonction d'initialisation de l'Expert int OnInit() { // Détection de 3 ou 5 chiffres // Pip et point if(_Digits % 2 == 1) { Pips2Double = _Point * 10; Pips2Points = 10; slippage = 10 * InpMax_slippage; } else { Pips2Double = _Point; Pips2Points = 1; slippage = InpMax_slippage; } if(!m_symbol.Name(Symbol())) // définit le nom du symbole return(INIT_FAILED); RefreshRates(); //--- m_trade.SetExpertMagicNumber(InpMagicNumber); m_trade.SetMarginMode(); m_trade.SetTypeFillingBySymbol(m_symbol.Name()); m_trade.SetDeviationInPoints(slippage); //--- return(INIT_SUCCEEDED); } b/ Fonction Tick de l'Expert void OnTick() { if(TerminalInfoInteger(TERMINAL_TRADE_ALLOWED) == false) { Comment("LazyBot\nTrading non autorisé."); return; } MqlDateTime structTime; TimeCurrent(structTime); structTime.sec = 0; // Définir l'heure de début structTime.hour = InpStartHour; structTime.min = InpStartMinute; datetime timeStart = StructToTime(structTime); // Définir l'heure de fin structTime.hour = InpEndHour; structTime.min = InpEndMinute; datetime timeEnd = StructToTime(structTime); acSpread = SymbolInfoInteger(_Symbol, SYMBOL_SPREAD); strComment = "\n" + ExtBotName + " - v." + (string)Version; strComment += "\nHeure serveur = " + TimeToString(TimeCurrent(), TIME_DATE|TIME_SECONDS) + " - " + DayOfWeekDescription(structTime.day_of_week); strComment += "\nTemps de trading = [" + (string)InpStartHour + "h" + (string)InpStartMinute + " --&gt; " + (string)InpEndHour + "h" + (string)InpEndMinute + "]"; strComment += "\nSpread actuel = " + (string)acSpread + " Points"; Comment(strComment); // Mise à jour des valeurs UpdateOrders(); TrailingStop(); // Conditions de trading selon la session if(InpTimeFilter) { if(TimeCurrent() >= timeStart && TimeCurrent() < timeEnd) { if(!isOrder) OpenOrder(); } } else { if(!isOrder) OpenOrder(); } } 3.1 Calculer le signal pour envoyer des ordres void OpenOrder() { ENUM_ORDER_TYPE OrdType = ORDER_TYPE_SELL; //-1; double TP = 0; double SL = 0; string comment = ExtBotName; // Calculer les lots double lot1 = CalculateVolume(); if(OrdType == ORDER_TYPE_SELL) { double OpenPrice = Bid - NormalizeDouble(InpSL_Pips/2 * Pips2Double, _Digits); TP = OpenPrice - NormalizeDouble(InpTP_Pips * Pips2Double, _Digits); SL = Ask + NormalizeDouble(InpSL_Pips/2 * Pips2Double, _Digits); if(CheckSpreadAllow() && CheckVolumeValue(lot1) && CheckOrderForFREEZE_LEVEL(ORDER_TYPE_SELL_STOP, OpenPrice) && CheckStopLoss(OpenPrice, SL, TP) && CheckMoneyForTrade(m_symbol.Name(), lot1, ORDER_TYPE_SELL)) { if(!m_trade.SellStop(lot1, OpenPrice, m_symbol.Name(), SL, TP, ORDER_TIME_GTC, 0, comment)) Print(__FUNCTION__, "--> Erreur d'envoi de commande ", m_trade.ResultComment()); } } else if(OrdType == ORDER_TYPE_BUY) { double OpenPrice = Ask + NormalizeDouble(InpSL_Pips/2 * Pips2Double, _Digits); SL = Bid - NormalizeDouble(InpSL_Pips/2 * Pips2Double, _Digits); if(CheckSpreadAllow() && CheckVolumeValue(lot1) && CheckOrderForFREEZE_LEVEL(ORDER_TYPE_BUY_STOP, OpenPrice) && CheckStopLoss(OpenPrice, SL, TP) && CheckMoneyForTrade(m_symbol.Name(), lot1, ORDER_TYPE_BUY)) { if(!m_trade.BuyStop(lot1, OpenPrice, m_symbol.Name(), SL, TP, ORDER_TIME_GTC, 0, comment)) Print(__FUNCTION__, "--> Erreur d'envoi de commande ", m_trade.ResultComment()); } } } 3.2 Calculer le Volume double CalculateVolume() { double LotSize = 0; if(isVolume_Percent == false) { LotSize = Inpuser_lot; } else { LotSize = (InpRisk) * m_account.FreeMargin(); LotSize = LotSize / 100000; double n = MathFloor(LotSize / Inpuser_lot); LotSize = n * Inpuser_lot; if(LotSize < Inpuser_lot) LotSize = Inpuser_lot; if(LotSize > m_symbol.LotsMax()) LotSize = m_symbol.LotsMax(); if(LotSize < m_symbol.LotsMin()) LotSize = m_symbol.LotsMin(); } return(LotSize); } 3.3 Fonction de Trailing Stop void TrailingStop() { double SL_in_Pip = 0; for(int i = PositionsTotal() - 1; i >= 0; i--) { if(m_position.SelectByIndex(i)) { if((m_position.Magic() == InpMagicNumber) && (m_position.Symbol() == m_symbol.Name())) { // Pour les ordres d'achat if(m_position.PositionType() == POSITION_TYPE_BUY) { SL_in_Pip = NormalizeDouble(Bid - m_position.StopLoss(), _Digits) / Pips2Double; if(SL_in_Pip > InpSL_Pips) { double newSL = NormalizeDouble(Bid - InpSL_Pips * Pips2Double, _Digits); if(!m_trade.PositionModify(m_position.Ticket(), newSL, m_position.TakeProfit())) { Print(__FUNCTION__, "--> Erreur de modification de commande ", m_trade.ResultComment()); continue; } } } else if(m_position.PositionType() == POSITION_TYPE_SELL) { SL_in_Pip = NormalizeDouble(m_position.StopLoss() - Bid, _Digits) / Pips2Double; if(SL_in_Pip > InpSL_Pips) { double newSL = NormalizeDouble(Bid + (InpSL_Pips) * Pips2Double, _Digits); if(!m_trade.PositionModify(m_position.Ticket(), newSL, m_position.TakeProfit())) { Print(__FUNCTION__, "--> Erreur de modification de commande ", m_trade.ResultComment()); continue; } } } } } } //--- Modifier les ordres en attente for(int i = OrdersTotal() - 1; i >= 0; i--) { if(m_order.SelectByIndex(i)) { if(m_order.Symbol() == m_symbol.Name() && m_order.Magic() == InpMagicNumber) { if(m_order.OrderType() == ORDER_TYPE_BUY_STOP) { SL_in_Pip = NormalizeDouble(Bid - m_order.StopLoss(), _Digits) / Pips2Double; if(SL_in_Pip < InpSL_Pips / 2) { double newOP = NormalizeDouble(Bid + (InpSL_Pips / 2) * Pips2Double, _Digits); double newTP = NormalizeDouble(newOP + InpTP_Pips * Pips2Double, _Digits); double newSL = NormalizeDouble(Bid - (InpSL_Pips / 2) * Pips2Double, _Digits); if(!m_trade.OrderModify(m_order.Ticket(), newOP, newSL, newTP, ORDER_TIME_GTC, 0)) { Print(__FUNCTION__, "--> Erreur de modification d'ordre en attente !", m_trade.ResultComment()); continue; } } } else if(m_order.OrderType() == ORDER_TYPE_SELL_STOP) { SL_in_Pip = NormalizeDouble(m_order.StopLoss() - Ask, _Digits) / Pips2Double; if(SL_in_Pip < InpSL_Pips / 2) { double newOP = NormalizeDouble(Ask - (InpSL_Pips / 2) * Pips2Double, _Digits); double newTP = NormalizeDouble(newOP - InpTP_Pips * Pips2Double, _Digits); double newSL = NormalizeDouble(Ask + (InpSL_Pips / 2) * Pips2Double, _Digits); if(!m_trade.OrderModify(m_order.Ticket(), newOP, newSL, newTP, ORDER_TIME_GTC, 0)) { Print(__FUNCTION__, "--> Erreur de modification d'ordre en attente !", m_trade.ResultComment()); continue; } } } } } } }

2023.06.12
Gestion de l'Argent avec la Martingale : Optimisez vos Positions sur MetaTrader 5
MetaTrader5
Gestion de l'Argent avec la Martingale : Optimisez vos Positions sur MetaTrader 5

Salut les traders ! Aujourd'hui, on va parler d'un algorithme de gestion de l'argent qui pourrait vraiment vous faciliter la vie : le System Trading Martingale. Cet EA (Expert Advisor) est conçu pour ouvrir et fermer vos positions de manière stratégique tout en utilisant un multiplicateur martingale. Voici quelques conseils pour tirer le meilleur parti de cet outil : Avant d'ouvrir des positions, exécutez votre EA pour maximiser les résultats. Utilisez le MartingaleEA-5Levels sur n'importe quel graphique. Assurez-vous que le mode martingale est activé (true). Indiquez les symboles que vous souhaitez trader, par exemple EURUSD ou GBPUSD. Choisissez un multiplicateur martingale et entrez-le dans le champ Martingale Volume Multiplier. Par exemple, si vous mettez 2, et que le volume de la première position est de 1 lot, la deuxième position s'ouvrira avec 2 lots et la troisième avec 4 lots. Ce EA peut ouvrir un maximum de 5 positions martingale, alors indiquez un nombre entre 1 et 5 dans le champ Number Of Martingale Trading. Dans les champs de distance (distance 1 à distance 5), vous devez entrer les pips ou points entre chaque position à ouvrir. Dans le champ Close all positions when total take profit is, entrez un montant comme 100. Lorsque toutes les positions martingale atteignent 100€, toutes les positions ouvertes seront fermées. Pour le champ Close all positions when total stop loss is, mettez un montant comme -500. Quand toutes les positions martingale atteignent -500€, toutes les positions ouvertes seront fermées. Voilà, ça vous donne un bon aperçu de la manière dont vous pouvez utiliser cet EA pour gérer vos positions efficacement. N'hésitez pas à partager vos expériences et questions dans les commentaires !

2023.05.24
Gestion Dynamique du Stop Loss et des Objectifs de Profit - Système de Trading pour MetaTrader 5
MetaTrader5
Gestion Dynamique du Stop Loss et des Objectifs de Profit - Système de Trading pour MetaTrader 5

Salut les traders ! Aujourd'hui, je voulais vous parler d'une stratégie de gestion des risques que j'ai récemment intégrée dans un Système de Trading pour MetaTrader 5. Cette approche vise à gérer vos trades existants selon des paramètres d'entrée bien définis. L'idée principale est de clôturer vos positions dès qu'un seuil de profit ou de perte est atteint, tout en utilisant un stop loss dynamique pour sécuriser vos gains au fur et à mesure que le trade évolue en votre faveur. Voici un aperçu rapide du code : Les fichiers d'en-tête nécessaires pour les classes d'informations sur les trades et les symboles sont inclus. Les paramètres d'entrée sont définis pour le pourcentage de risque, le pourcentage de profit et les points de stop loss dynamique. Des variables globales sont déclarées pour les objets d'informations sur les trades et les symboles. La fonction OnInit initialise l'objet d'informations sur le symbole et vérifie les erreurs. La fonction OnDeinit ne fait rien dans ce cas. La fonction OnTick est appelée chaque fois qu'un nouveau tick est reçu et appelle la fonction CheckTrades. La fonction CheckTrades parcourt toutes les positions ouvertes et vérifie si la position appartient au symbole actuel. Si c'est le cas, elle calcule le profit actuel et détermine si les seuils de profit ou de perte sont atteints. Si l'un ou l'autre seuil est atteint, la position est clôturée. Si aucun seuil n'est atteint, le code vérifie si le type de position est un ordre d'achat ou de vente et met à jour le niveau de stop loss avec un stop loss dynamique. Si le nouveau niveau de stop loss est plus favorable que l'actuel, la position est modifiée avec ce nouveau niveau. Ce code offre une stratégie de gestion des risques assez simple pour gérer vos trades en ajustant dynamiquement le niveau de stop loss et en clôturant les positions lorsque les seuils de profit ou de perte sont atteints. À vous de jouer maintenant et n'oubliez pas de toujours gérer vos risques !

2023.04.28
Utiliser un EA pour Ouvrir Plusieurs Ordres d'Achat et de Vente sur MetaTrader 5
MetaTrader5
Utiliser un EA pour Ouvrir Plusieurs Ordres d'Achat et de Vente sur MetaTrader 5

Salut les traders ! Aujourd'hui, je vais vous parler d'un outil super pratique : un Expert Advisor (EA) pour MetaTrader 5 qui vous permet d'ouvrir plusieurs ordres d'achat et de vente en fonction de vos préférences. Ce EA est conçu avec des variables d'entrée qui vous permettent de définir le nombre d'ordres d'achat et de vente, le pourcentage de risque par trade, le stop loss, le take profit et la slippage. En plus, il est doté d'une interface utilisateur simple avec des boutons Acheter et Vendre qui déclenchent l'ouverture des ordres. Il calcule la taille de lot appropriée en fonction du pourcentage de risque spécifié et du stop loss. Avant de passer des ordres, il vérifie également le spread par rapport à la slippage configurée. Ainsi, il ouvrira des ordres d'achat si le prix moyen est au-dessus du prix d'offre actuel et des ordres de vente si le prix moyen est en dessous du prix de vente actuel. Lorsque vous cliquez sur le bouton Acheter ou Vendre, le EA ouvrira le nombre d'ordres spécifié avec la taille de lot calculée, le stop loss et le take profit que vous avez définis. Attention ! Ce EA est un exemple simple et pourrait ne pas être adapté pour le trading en réel sans modifications et optimisations supplémentaires. Il est crucial de tester tout algorithme de trading dans un environnement sécurisé, comme un compte de démonstration, avant de l'utiliser avec des fonds réels.

2023.04.27
CheckTrades : Un Système de Gestion des Risques sur MetaTrader 5
MetaTrader5
CheckTrades : Un Système de Gestion des Risques sur MetaTrader 5

Bienvenue dans le monde du trading ! Aujourd'hui, nous allons parler d'un script MQL5, nommé CheckTrades, qui a pour objectif principal de gérer vos positions ouvertes en fonction de seuils de profit et de perte que vous définissez vous-même.Ce Système Trading ne fournit aucune indication d'entrée ni règles de timing sur le marché ; son rôle est de minimiser les risques en fermant vos positions lorsque vous atteignez un certain seuil de profit ou de perte.Variables externes utilisées dans le code :RiskPercentage : Cette variable représente la perte maximale autorisée par trade, exprimée en pourcentage du solde de votre compte. Si la perte actuelle d'une position ouverte atteint ce pourcentage, la position sera fermée pour limiter le risque.ProfitPercentage : Cette variable définit le profit souhaité par trade, également en pourcentage du solde de votre compte. Lorsque le profit actuel d'une position ouverte atteint cette valeur, la position sera fermée pour sécuriser le gain.Étant donné que ce Système Trading est centré sur la gestion des risques et ne s'appuie sur aucun indicateur de marché spécifique, il peut être utilisé sur n'importe quel symbole ou timeframe. Cependant, il est crucial de l'intégrer dans une stratégie de trading qui inclut des signaux d'entrée et d'autres règles de gestion de trade pour en faire un système complet.Si vous souhaitez utiliser ce code comme un fichier d'inclusion (en le plaçant dans le dossier MQL5\Include), son but principal sera la gestion des risques en fermant les positions selon vos seuils de profit et de perte définis.Vous pouvez également combiner ce fichier d'inclusion avec d'autres fichiers qui ont des objectifs spécifiques, comme le calcul de la taille des positions en fonction du risque du compte, les stops suiveurs, et plus encore. Pour cela, utilisez la directive #include dans votre fichier EA principal pour y inclure ce fichier, puis appelez la fonction CheckTrades() lorsque vous avez besoin de gérer vos positions ouvertes.

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