Trading Systématique

Maîtriser les Moyennes Mobiles avec un EA sur MetaTrader 4 : Guide Pratique
MetaTrader4
Maîtriser les Moyennes Mobiles avec un EA sur MetaTrader 4 : Guide Pratique

1. RÈGLE D'ENTRÉE Entrée Long : Nous allons ouvrir des positions longues lors d'un Croisement Haussier. La valeur de la moyenne mobile précédente est supérieure à celle de la moyenne mobile à plus court terme. La valeur de la moyenne mobile il y a deux périodes est inférieure à celle de la moyenne mobile à plus court terme. La valeur de la moyenne mobile il y a deux périodes est inférieure à la valeur de la moyenne mobile précédente à plus court terme. Si ces trois conditions sont remplies, nous considérons cela comme un Croisement Haussier et nous entrons en position longue. Entrée Court : Nous allons ouvrir des positions courtes lors d'un Croisement Baissier. La valeur de la moyenne mobile précédente est inférieure à celle de la moyenne mobile à plus court terme. La valeur de la moyenne mobile il y a deux périodes est supérieure à celle de la moyenne mobile à plus court terme. La valeur de la moyenne mobile il y a deux périodes est supérieure à la valeur de la moyenne mobile précédente à plus court terme. Si ces trois conditions sont remplies, nous considérons cela comme un Croisement Baissier et nous entrons en position courte. 2. RÈGLE DE SORTIE Les ordres d'entrée sont gérés uniquement avec des ordres de stop loss et des ordres de take profit. Le point de stop loss est fixé à une distance équivalente à la valeur de Stoploss par rapport à la moyenne mobile à moyen terme. Les ordres de take profit sont placés à la même distance que les ordres de stop, mais du côté positif, afin d'assurer l'équité. 3. RÉSULTATS DE BACKTEST

2023.09.16
Découvrez MaybeAwo EA : votre allié sur MetaTrader 4
MetaTrader4
Découvrez MaybeAwo EA : votre allié sur MetaTrader 4

Caractéristiques Clés : Entrée sur Moyenne Mobile : Cet Expert Advisor utilise une moyenne mobile simple pour identifier les points d'entrée potentiels. Lorsque les conditions du marché s'alignent avec la stratégie de croisement de moyennes mobiles, il peut ouvrir des ordres d'achat ou de vente. Paramètres Personnalisables : Vous pouvez ajuster le comportement de l'EA en utilisant des paramètres d'entrée tels que la période de la moyenne mobile, la taille des lots, le stop loss, le take profit, les niveaux de breakeven, les distances de breakeven souhaitées et les heures de trading. Ces paramètres vous permettent d'adapter l'EA à différents styles de trading et classes d'actifs. Fonctionnalité de Breakeven : L'EA inclut deux niveaux de breakeven. Une fois qu'un trade est en profit, il peut automatiquement déplacer le stop loss au niveau de breakeven pour protéger vos gains. Les distances de breakeven souhaitées peuvent être ajustées selon vos préférences. Trailing Stop : L'EA peut faire suivre les niveaux de stop loss à mesure que le trade évolue en votre faveur, vous aidant ainsi à sécuriser des profits lors de tendances fortes. Heures de Début et de Fin : Vous pouvez spécifier les heures durant lesquelles l'EA doit trader activement. Cette fonctionnalité vous permet de concentrer vos activités de trading sur des sessions de marché spécifiques. À faire : Examinez attentivement et optimisez les paramètres d'entrée pour aligner l'EA avec votre stratégie de trading. Testez l'EA sur un compte démo avant de l'utiliser en environnement réel. Surveillez les performances de l'EA et ajustez les paramètres si nécessaire pour vous adapter aux conditions changeantes du marché. # Le trading comporte des risques, et cet EA ne garantit pas de profits. Utilisez-le de manière responsable et soyez conscient des risques associés au trading automatisé.

2023.09.10
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 4 5 6 7 8 9 10 11 12 13 14 Suivant Dernier