Trading Systématique

AK-47 Scalper EA : L'Expert Indispensable pour MetaTrader 4
MetaTrader4
AK-47 Scalper EA : L'Expert Indispensable pour MetaTrader 4

1. Paramètres d'entrée #define ExtBotName "AK-47 Scalper EA" //Nom du Bot #define  Version "1.00" //--- paramètres d'entrée extern string  EASettings        = "---------------------------------------------"; //-------- <Paramètres EA> -------- input int      InpMagicNumber    = 124656;   //Numéro Magique extern string  TradingSettings   = "---------------------------------------------"; //-------- <Paramètres de Trading> -------- input double   Inpuser_lot       = 0.01;     //Lots input double   InpSL_Pips        = 3.5;      //Stoploss (en Pips) input double   InpMax_spread     = 0.5;      //Spread maximum autorisé (en Pips) (0 = flottant) extern string  MoneySettings     = "---------------------------------------------"; //-------- <Paramètres Financiers> -------- input bool     isVolume_Percent  = true;     //Autoriser le Volume en Pourcentage input double   InpRisk           = 3;        //Pourcentage de Risque du Solde (%) input string   TimeSettings      = "---------------------------------------------"; //-------- <Paramètres de Temps de Trading> -------- 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;               // glissement  3 pips    3=points    30=points double   Pips2Double;               // Stoploss 15 pips    0.015      0.0150 int      InpMax_slippage   = 3;     // Glissement maximum autorisé en Pips. bool     isOrder           = false; // ouvrir juste 1 ordre int      slippage; string   strComment        = ""; 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;    }    //---    return(INIT_SUCCEEDED);   } b/ Fonction de tick de l'Expert void OnTick()   { //---      if(IsTradeAllowed() == false)      {       Comment("AK-47 EA\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);               double acSpread = MarketInfo(Symbol(), MODE_SPREAD);        StopLevel = MarketInfo(Symbol(), MODE_STOPLEVEL);              strComment = "\n" + ExtBotName + " - v." + (string)Version;       strComment += "\nHeure GMT = " + TimeToString(TimeGMT(),TIME_DATE|TIME_SECONDS);       strComment += "\nHeure de Trading = [" + (string)InpStartHour + "h" + (string)InpStartMinute + " --> " +  (string)InpEndHour + "h" + (string)InpEndMinute + "]";              strComment += "\nSpread actuel = " + (string)acSpread + " Points";       strComment += "\nNiveau d'arrêt actuel = " + (string)StopLevel + " Points";              Comment(strComment);          //Mettre à jour les valeurs       UpdateOrders();              TrailingStop();              //Vérifier l'heure de trading       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(){       //int OrdType = OP_SELL;//-1;    double TP = 0;    double SL = 0;    string comment = ExtBotName;    //Calculer les Lots    double lot1 = CalculateVolume();       //if(OrdType == OP_SELL){       double OpenPrice = NormalizeDouble(Bid - (StopLevel * _Point) - (InpSL_Pips/2) * Pips2Double, Digits);       SL = NormalizeDouble(Ask + StopLevel * _Point + InpSL_Pips/2 * Pips2Double, Digits);                if(CheckSpreadAllow())                                    //Vérifier le Spread       {          if(!OrderSend(_Symbol, OP_SELLSTOP, lot1, OpenPrice, slippage, SL, TP, comment, InpMagicNumber, 0, clrRed))          Print(__FUNCTION__,"--> Erreur d'envoi de l'ordre ",GetLastError());       }    //} } 3.2 Calculer le Volume double CalculateVolume()   {    double LotSize = 0;    if(isVolume_Percent == false)      {       LotSize = Inpuser_lot;      }    else      {       LotSize = (InpRisk) * AccountFreeMargin();       LotSize = LotSize /100000;       double n = MathFloor(LotSize/Inpuser_lot);       //Comment((string)n);       LotSize = n * Inpuser_lot;       if(LotSize < Inpuser_lot)          LotSize = Inpuser_lot;       if(LotSize > MarketInfo(Symbol(),MODE_MAXLOT))          LotSize = MarketInfo(Symbol(),MODE_MAXLOT);       if(LotSize < MarketInfo(Symbol(),MODE_MINLOT))          LotSize = MarketInfo(Symbol(),MODE_MINLOT);      }    return(LotSize);   } 3.3 L'EA dispose d'une fonction "Trailing Stop", SL changera chaque fois que le prix change (à la baisse) void TrailingStop()   {    for(int i = OrdersTotal() - 1; i >= 0; i--)      {       if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))         {          if((OrderMagicNumber() == InpMagicNumber) && (OrderSymbol() == Symbol()))   //_Symbol))            {             //Pour l'Ordre de Vente             if(OrderType() == OP_SELL)               {                   //--Calculer SL lorsque le prix change                   double SL_in_Pip = NormalizeDouble(OrderStopLoss() - (StopLevel * _Point) - Ask, Digits) / Pips2Double;                   if(SL_in_Pip > InpSL_Pips){                         double newSL = NormalizeDouble(Ask + (StopLevel * _Point) + InpSL_Pips * Pips2Double, Digits);                         if(!OrderModify(OrderTicket(), OrderOpenPrice(), newSL, OrderTakeProfit(), 0, clrRed))                         {                            Print(__FUNCTION__,"--> Erreur de modification de l'ordre ",GetLastError());                         }                         }           }                        //Pour l'Ordre de Vente Stop             else if(OrderType() == OP_SELLSTOP)               {                   double SL_in_Pip = NormalizeDouble(OrderStopLoss() - (StopLevel * _Point) - Ask, Digits) / Pips2Double;                                      if(SL_in_Pip < InpSL_Pips/2){                      double newOP = NormalizeDouble(Bid - (StopLevel * _Point) - (InpSL_Pips/2) * Pips2Double, Digits);                      double newSL = NormalizeDouble(Ask + (StopLevel * _Point) + (InpSL_Pips/2) * Pips2Double, Digits);                                           if(!OrderModify(OrderTicket(), newOP, newSL, OrderTakeProfit(), 0, clrRed))                          {                             Print(__FUNCTION__,"--> Erreur de modification de l'ordre en attente !", GetLastError());                         continue;                          }                         }                           }         }      }   }

2023.01.14
Gestionnaire de Trades Forex MT5 : Optimisez vos Ordres sur MetaTrader 5
MetaTrader5
Gestionnaire de Trades Forex MT5 : Optimisez vos Ordres sur MetaTrader 5

Le Gestionnaire de Trades Forex MT5 simplifie la gestion de vos ordres ouverts sur MetaTrader 5. Lors de l'ouverture d'un nouvel ordre, le gestionnaire configure automatiquement le Stop Loss et le Take Profit. Lorsque le prix évolue, le programme peut ajuster le Stop Loss à Break Even (stop loss = prix d'ouverture) ou utiliser un Trailing Stop pour protéger vos gains. Ce gestionnaire peut contrôler les ordres pour les symboles actuels (où l'EA fonctionne) ou pour tous les ordres ouverts, peu importe le symbole, et même cacher le Stop Loss et le Take Profit aux brokers. C'est une stratégie efficace pour gérer vos trades manuels (ouverts sur tous les symboles ou seulement celui du graphique actuel) en : - définissant le Stop Loss et/ou le Take Profit pour les trades en pips - utilisant la fonction Trailing Stop qui ajuste le SL en fonction du prix - activant le Break Even qui déplace le SL au niveau du BE à une distance choisie Le SL/TP peut être géré de manière standard par le broker ou en mode furtif – caché du broker. Paramètres : “SLTP Params” Stop Loss – stop loss en pips pour les trades Take Profit – take profit en pips pour les trades “Break even” UseBreakEven (true/false) – permet d'utiliser uniquement la fonction de break-even pour les trades ouverts BEActivation – profit en pips lorsque la fonction de break-even est activée BELevel – distance supplémentaire à partir du BE en pips lorsque le SL est placé par la fonction de break-even “Trailing Stop” UseTrailingStop (true/false) – permet d'utiliser uniquement la fonction de trailing stop pour les trades ouverts TSStart – profit en pips lorsque la fonction de trailing stop est activée TSStep – différence minimum en pips entre le nouveau SL et le SL actuel pour permettre le mouvement du SL par la fonction de trailing stop TSDistance – distance par rapport au prix actuel en pips lorsque le SL est placé par la fonction de trailing stop “Comportement” StealthMode(true/false) – cacher les niveaux SL/TP au broker tandis que l'EA ferme les trades à ces niveaux de manière programmatique OnlyCurrentPair(true/false) – permettre la gestion des trades uniquement pour le symbole du graphique actuel (true) ou pour tous les symboles (false) Infos : Tous les paramètres pour les trades et les fonctions peuvent être configurés dans les paramètres de l'EA. Le Gestionnaire de Trades Forex affiche également sur le graphique des informations sur le profit/perte quotidien actuel en pips et en devise de compte.

2023.01.10
Gérez vos trades avec le Forex Trade Manager Grid MT5 pour MetaTrader 5
MetaTrader5
Gérez vos trades avec le Forex Trade Manager Grid MT5 pour MetaTrader 5

Bonjour à tous les traders ! Aujourd'hui, parlons d'un outil qui pourrait bien changer votre façon de gérer vos ordres : le Forex Trade Manager Grid MT5. Cet outil est conçu pour vous aider à atteindre vos objectifs de trading de manière efficace. Avec ce System Trading, il vous suffit de passer votre première commande avec un Take Profit, de lancer l'EA et de définir le profit (en pips) que vous souhaitez réaliser. L'EA se chargera de gérer vos positions et de rassembler le nombre de pips que vous avez défini. C'est une stratégie pensée pour la gestion des trades manuels ouverts sur la paire en cours. Le système ajoute des positions aux trades déjà ouverts en utilisant une gestion en grille (avec une distance choisie en pips entre les trades) - jusqu'à 15 trades (ou moins). Pour les trois premières positions, l'EA gère des Take Profits individuels, et à partir de la quatrième position, il ferme toute la grille à un niveau commun (break-even). Après avoir clôturé un trade sur le TP, celui-ci peut être renouvelé. Le cycle peut être interrompu si la perte dépasse le pourcentage de risque autorisé sur le solde. Paramètres : Paramètres de trade additionnels : AddNewTradeAfter : distance en pips depuis le dernier trade après laquelle de nouveaux trades sont ajoutés à la grille. Take Profit : TakeProfit1Total (nombre) – TP total en pips requis depuis la première position. TakeProfit1Partitive – TP initial en pips pour la première position dans le cycle. TakeProfit1Offset – distance minimale en pips depuis le TP de la dernière position fermée nécessaire pour renouveler ce premier trade. TakeProfit 2/3 – TP individuels en pips pour la deuxième/troisième position dans le cycle. TakeProfit 4/5/6/...15Total – TP total en pips pour toutes les positions dans le cycle (pour 4 trades ou plus ouverts). Paramètres de trade : MaxOrders : nombre maximum de trades autorisés dans la grille. Risk Balance % : perte maximum autorisée en pourcentage du solde du compte (ferme toutes les positions ouvertes). Lots : taille des lots pour les trades ouverts par l'EA. Slippage : slippage autorisé en points. Info : Tous les paramètres pour les trades et les fonctions sont configurables dans les paramètres de l'EA. Le Forex Trade Manager Grid affiche également sur le graphique des informations sur le profit/perte du cycle actuel en pips et en devise du compte.

2023.01.10
Gestion des Ordres Simplifiée avec XP Forex Trade Manager pour MetaTrader 4
MetaTrader4
Gestion des Ordres Simplifiée avec XP Forex Trade Manager pour MetaTrader 4

Bienvenue, traders ! Aujourd'hui, je vous parle d'un outil qui pourrait bien révolutionner votre expérience de trading sur MetaTrader 4 : le Forex Trade Manager MT4. Cet expert-conseil (ou EA) vous simplifie la vie en gérant automatiquement vos ordres ouverts. Quand vous ouvrez un nouvel ordre, le Trade Manager s'occupe de tout. Il configure automatiquement votre Stop Loss et votre Take Profit. Mais ce n'est pas tout ! Lorsqu'un mouvement de prix se produit, le programme peut ajuster votre Stop Loss à Break Even (c'est-à-dire le prix d'ouverture) ou même le déplacer en mode Trailing Stop pour protéger vos gains. Le Forex Trade Manager peut gérer les ordres pour les symboles actuels (là où l'EA opère) ou pour tous les ordres ouverts, peu importe le symbole. Et cerise sur le gâteau, il peut masquer vos niveaux de Stop Loss et de Take Profit des brokers, un vrai plus pour vos stratégies de trading ! Fonctionnalités Clés Définition des niveaux de Stop Loss et/ou Take Profit en pips. Fonction Trailing Stop qui permet de suivre le prix. Option Break Even qui déplace le SL à BE selon une distance choisie. Les niveaux de SL et TP peuvent être gérés de manière standard par le broker ou en mode stealth, cachés du broker. Paramètres de l'EA Params SLTP : Stop Loss – niveau de stop loss en pips pour les ordres. Take Profit – niveau de take profit en pips pour les ordres. Break Even : UseBreakEven (true/false) – active la fonction break-even pour les ordres ouverts. BEActivation – profit en pips pour activer la fonction break-even. BELevel – distance supplémentaire en pips pour placer le SL avec la fonction break-even. Trailing Stop : UseTrailingStop (true/false) – active la fonction trailing stop pour les ordres ouverts. TSStart – profit en pips pour activer la fonction trailing stop. TSStep – différence minimum en pips entre le nouveau et l'ancien SL pour déplacer le SL avec la fonction trailing stop. TSDistance – distance en pips à partir du prix actuel lorsque le SL est placé par la fonction trailing stop. Comportement : StealthMode (true/false) – masque les niveaux SL/TP du broker. OnlyCurrentPair (true/false) – gère uniquement les ordres du symbole actuel (true) ou de tous les symboles (false). Informations Supplémentaires Tous les paramètres pour les ordres et les fonctions sont configurables dans les paramètres de l'EA. Le Forex Trade Manager affiche également sur le graphique des informations sur le profit/perte quotidien en pips et dans la devise du compte.

2023.01.10
Gérez Vos Trades Comme un Pro avec le Forex Trade Manager Grid MT4
MetaTrader4
Gérez Vos Trades Comme un Pro avec le Forex Trade Manager Grid MT4

Le Forex Trade Manager Grid MT4 est un outil incontournable pour tous les traders souhaitant optimiser la gestion de leurs ordres. Il vous suffit de passer votre première commande avec un objectif de Take Profit, de lancer l'Expert Advisor (EA) et de définir dans les paramètres le nombre de pips que vous souhaitez gagner. L'EA se chargera de gérer vos positions tout en rassemblant le nombre de pips désigné. C'est une stratégie efficace pour la gestion des trades manuels ouverts sur la paire en cours. Le système ajoute des positions aux trades déjà ouverts, en utilisant une gestion en grille (avec une distance choisie en pips entre les trades) - jusqu'à 15 trades (ou moins). Les trois premières positions sont gérées avec des Take Profits individuels, tandis qu'à partir de la quatrième position, l'EA fermera l'ensemble de la grille à un niveau commun (break-even). Une fois qu'un trade est clos sur TP, il peut être renouvelé. Le cycle complet peut être arrêté si la perte dépasse le pourcentage de risque autorisé sur le solde. Paramètres : "Paramètres de Trade Additionnels" : AddNewTradeAfter – distance en pips à partir de la dernière trade après laquelle de nouveaux trades sont ajoutés à la grille. “Take Profit” : TakeProfit1Total (nombre) – TP total en pips requis depuis la première position. TakeProfit1Partitive – TP initial en pips pour la première position dans le cycle. TakeProfit1Offset – distance minimale en pips entre le TP de la dernière position fermée et le renouvellement de cette première trade. TakeProfit 2/3 – TP individuel en pips pour la deuxième/troisième position dans le cycle. TakeProfit 4/5/6/...15Total – TP total en pips depuis toutes les positions dans le cycle (pour 4 trades ou plus ouverts). “Paramètres de Trade” : MaxOrders – nombre maximum de trades autorisés dans la grille. Risk Balance % – perte maximale autorisée sous forme de pourcentage du solde du compte (ferme toutes les positions ouvertes). Lots – taille de lot pour les trades ouverts par l'EA. Slippage – slippage autorisé en points. Infos : Tous les paramètres pour les trades et les fonctions sont configurables dans les paramètres de l'EA. Le Forex Trade Manager Grid affiche également sur le graphique des informations sur le profit/perte du cycle actuel en pips et en devise du compte.

2023.01.10
Lazy Bot MT5 : L'EA idéal pour le trading quotidien sur MetaTrader 5
MetaTrader5
Lazy Bot MT5 : L'EA idéal pour le trading quotidien sur MetaTrader 5

Bienvenue à tous les traders ! Aujourd'hui, on va parler d'un outil pratique pour tous ceux qui utilisent MetaTrader 5 : le Lazy Bot MT5, un Expert Advisor (EA) qui gère vos transactions de manière efficace. 1. Paramètres d'entrée // Importer les classes externes #include <Trade\PositionInfo.mqh> #include <Trade\Trade.mqh> #include <Trade\SymbolInfo.mqh> #include <Trade\AccountInfo.mqh> #include <Trade\OrderInfo.mqh> //--- Définir des variables prédéfinies pour la lisibilité du code #define Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK) #define Bid SymbolInfoDouble(_Symbol, SYMBOL_BID) //--- paramètres d'entrée input string EASettings = "---------------------------------------------"; input int InpMagicNumber = 123456; // Numéro magique input string InpBotName = "LazyBot_V1"; // Nom du bot input double Inpuser_lot = 0.01; // Lots input double Inpuser_SL = 5.0; // Stoploss (en Pips) input double InpAddPrice_pip = 0; // Distance de [H], [L] au prix d'OP (en Pips) input int Inpuser_SLippage = 3; // Glissement maximum autorisé (en Pips) input double InpMax_spread = 0; // Spread maximum autorisé (en Pips) (0 = flottant) input bool isTradingTime = true; // Autoriser le temps de trading input int InpStartHour = 7; // Heure de début input int InpEndHour = 22; // Heure de fin input bool isVolume_Percent = false; // Autoriser le volume en pourcentage input double InpRisk = 1; // Pourcentage de risque sur le solde (%) 2. Initialisation des variables locales // Paramètres locaux datetime last; int totalBars; int Pips2Points; // glissement 3 pips (3=points, 30=points) double Pips2Double; // Stoploss 15 pips (0.015) double slippage; double acSpread; string strComment = ""; CPositionInfo m_position; // objet position de trading CTrade m_trade; // objet de trading CSymbolInfo m_symbol; // objet info symbole CAccountInfo m_account; // wrapper info compte COrderInfo m_order; // objet commandes en attente 3. Code principal Voici comment fonctionne notre stratégie : chaque jour, le bot supprimera toutes les anciennes commandes et trouvera les valeurs les plus élevées et les plus basses de la barre quotidienne précédente pour envoyer deux ordres en attente : BUY_STOP et SELL_STOP. (Pas de TakeProfit). a/ Fonction d'initialisation de l'Expert int OnInit() { //--- if(_Digits % 2 == 1) { Pips2Double = _Point * 10; Pips2Points = 10; slippage = 10 * Inpuser_SLippage; } else { Pips2Double = _Point; Pips2Points = 1; slippage = Inpuser_SLippage; } if(!m_symbol.Name(Symbol())) 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 de tick de l'Expert void OnTick() { if(TerminalInfoInteger(TERMINAL_TRADE_ALLOWED) == false) { Comment("LazyBot\nTrading non autorisé."); return; } // Obtenir le temps de trading MqlDateTime timeLocal; MqlDateTime timeServer; TimeLocal(timeLocal); TimeCurrent(timeServer); // Ne pas travailler les jours fériés. if(timeServer.day_of_week == 0 || timeServer.day_of_week == 6) return; int hourLocal = timeLocal.hour; int hourCurrent = timeServer.hour; acSpread = SymbolInfoInteger(_Symbol, SYMBOL_SPREAD); strComment = "\nHeure locale = " + hourLocal; strComment += "\nHeure actuelle = " + hourCurrent; strComment += "\nSpread = " + (string)acSpread; strComment += "\nTotal de barres = " + (string)totalBars; Comment(strComment); // Vérifier le Trailing TrailingSL(); //--- if(last != iTime(m_symbol.Name(), PERIOD_D1, 0)) { if(isTradingTime) { if(hourCurrent >= InpStartHour) { DeleteOldOrds(); OpenOrder(); last = iTime(m_symbol.Name(), PERIOD_D1, 0); } } else { DeleteOldOrds(); OpenOrder(); last = iTime(m_symbol.Name(), PERIOD_D1, 0); } } } 3.1 Calculer le signal et envoyer des ordres void OpenOrder() { double TP_Buy = 0, TP_Sell = 0; double SL_Buy = 0, SL_Sell = 0; // Vérifier le Spread maximum if(InpMax_spread != 0) { if(acSpread > InpMax_spread) { Print(__FUNCTION__, " > Le spread actuel est supérieur au spread autorisé !..."); return; } } double Bar1High = m_symbol.NormalizePrice(iHigh(m_symbol.Name(), PERIOD_D1, 1)); double Bar1Low = m_symbol.NormalizePrice(iLow(m_symbol.Name(), PERIOD_D1, 1)); double lot1 = CalculateVolume(); double OpenPrice = m_symbol.NormalizePrice(Bar1High + InpAddPrice_pip * Pips2Double); // Pour BUY_STOP SL_Buy = m_symbol.NormalizePrice(OpenPrice - Inpuser_SL * Pips2Double); totalBars = iBars(m_symbol.Name(), PERIOD_D1); string comment = InpBotName + ";" + m_symbol.Name() + ";" + totalBars; if(CheckVolumeValue(lot1) && CheckOrderForFREEZE_LEVEL(ORDER_TYPE_BUY_STOP, OpenPrice) && CheckMoneyForTrade(m_symbol.Name(), lot1, ORDER_TYPE_BUY) && CheckStopLoss(OpenPrice, SL_Buy)) { if(!m_trade.BuyStop(lot1, OpenPrice, m_symbol.Name(), SL_Buy, TP_Buy, ORDER_TIME_GTC, 0, comment)) Print(__FUNCTION__, "--> Erreur d'achat"); } // Pour SELL_STOP OpenPrice = m_symbol.NormalizePrice(Bar1Low - InpAddPrice_pip * Pips2Double); SL_Sell = m_symbol.NormalizePrice(OpenPrice + Inpuser_SL * Pips2Double); if(CheckVolumeValue(lot1) && CheckOrderForFREEZE_LEVEL(ORDER_TYPE_SELL_STOP, OpenPrice) && CheckMoneyForTrade(m_symbol.Name(), lot1, ORDER_TYPE_SELL) && CheckStopLoss(OpenPrice, SL_Sell)) { if(!m_trade.SellStop(lot1, OpenPrice, m_symbol.Name(), SL_Sell, TP_Sell, ORDER_TIME_GTC, 0, comment)) Print(__FUNCTION__, "--> Erreur de vente"); } } 3.2 Nouveau jour, supprimer toutes les anciennes commandes void DeleteOldOrds() { string sep=";"; // Un séparateur comme caractère ushort u_sep; // Le code du caractère séparateur string result[]; // Un tableau pour obtenir des chaînes for(int i = OrdersTotal() - 1; i >= 0; i--) { if(m_order.SelectByIndex(i)) { u_sep = StringGetCharacter(sep, 0); string Ordcomment = m_order.Comment(); int k = StringSplit(Ordcomment, u_sep, result); if(k > 2) { string sym = m_symbol.Name(); if((m_order.Magic() == InpMagicNumber) && (sym == result[1])) { m_trade.OrderDelete(m_order.Ticket()); } } } } } 3.3 Le bot a une fonction "trailing StopLoss" qui ajuste le SL en fonction des mouvements de prix void TrailingSL() { 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())) { double order_stoploss1 = m_position.StopLoss(); // Pour les ordres d'achat if(m_position.PositionType() == POSITION_TYPE_BUY) { SL_in_Pip = NormalizeDouble((Bid - order_stoploss1), _Digits) / Pips2Double; if(SL_in_Pip > Inpuser_SL) { order_stoploss1 = NormalizeDouble(Bid - (Inpuser_SL * Pips2Double), _Digits); m_trade.PositionModify(m_position.Ticket(), order_stoploss1, m_position.TakeProfit()); } } // Pour les ordres de vente if(m_position.PositionType() == POSITION_TYPE_SELL) { SL_in_Pip = NormalizeDouble((m_position.StopLoss() - Ask), _Digits) / Pips2Double; if(SL_in_Pip > Inpuser_SL) { order_stoploss1 = NormalizeDouble(Ask + (Inpuser_SL * Pips2Double), _Digits); m_trade.PositionModify(m_position.Ticket(), order_stoploss1, m_position.TakeProfit()); } } } } } } Conclusion Le Lazy Bot MT5 est un outil formidable pour tous ceux qui souhaitent automatiser leurs transactions sur MetaTrader 5. Grâce à sa capacité à gérer les ordres en fonction des fluctuations du marché, il peut vous faire gagner un temps précieux tout en maximisant vos chances de succès. N'hésitez pas à l'essayer et à partager vos retours !

2022.12.14
Stratégie de Mean Reversion pour MetaTrader 4 : Optimisez vos trades
MetaTrader4
Stratégie de Mean Reversion pour MetaTrader 4 : Optimisez vos trades

La stratégie de Mean Reversion fonctionne le mieux sur des paires de devises majeures en timeframe quotidienne. Conseils pour bien démarrer Testez-la d'abord sur un compte démo. Cet Expert Advisor (EA) ne traite qu'avec le prix de la bougie d'ouverture ! Si vous ne souhaitez pas augmenter la taille de vos lots lors de pertes, réglez : IncreaseFactor=0. Voici quelques paramètres importants à configurer pour optimiser votre EA :Paramètres Use_TP_In_Money - Utiliser un Take Profit en valeur monétaire (valeurs : vrai/faux). TP_In_Money - Valeur du Take Profit en argent (valeurs : 10-100). Use_TP_In_percent - Utiliser un Take Profit en pourcentage (valeurs : vrai/faux). TP_In_Percent - Valeur du Take Profit en pourcentage (valeurs : 10-100). ------------[Stop suiveur monétaire pour plusieurs transactions]---------------------- Enable_Trailing - Activer le trailing stop (valeurs : vrai/faux). Take Profit en argent (dans la devise actuelle) (valeurs : 25-200). Stop Loss en argent (dans la devise actuelle) (valeurs : 1-20). -------------------------------------------------------------------------------------- Exit - Clôturer les trades si la tendance est contre vous et gérer le drawdown (valeurs : vrai/faux). BarsToCount - Nombre de barres à compter (valeurs : 1-20). Lots - Taille des lots (valeurs : 0.01-1). Lots size Exponent (valeurs : 1.01-2). IncreaseFactor - Montant à ajouter aux lots en cas de perte (valeurs : 0.001-0.1). Stop_Loss - Stop Loss (valeurs : 30-500). /réglez à 600 pour plusieurs trades. MagicNumber - Numéro magique (valeurs : 1-100000). TakeProfit - Take Profit (valeurs : 50-200). /réglez à 600 pour plusieurs trades. FastMA - Moyenne mobile rapide (valeurs : 1-20). SlowMA - Moyenne mobile lente (valeurs : 50-200). Mom_Sell - Déclencheur de vente par momentum (valeurs : 0.1-0.9). Mom_Buy - Déclencheur d'achat par momentum (valeurs : 0.1-0.9). ---------------------GESTION DU DRAW DOWN----------------------------- UseEquityStop - (valeurs : vrai/faux). TotalEquityRisk - (valeurs : 0.01-20). ------------------------------------------------------------------------------- Max_Trades (1-12). FractalNum - Nombre de hauts et bas (valeurs : 1-10). ----------------SI VOUS UTILISEZ UN SEUL TRADE :----------------------- ///////////////////////////////////////////////////////////////////// USETRAILINGSTOP - Si vous utilisez un trailing stop (valeurs : vrai/faux). WHENTOTRAIL - Quand activer le trailing (valeurs : 40-100). TRAILAMOUNT - Montant à suivre (valeurs : 40-100). Distance From Candle - Distance par rapport à la bougie (valeurs : 1-100). USECANDELTRAIL - Si vous utilisez un trailing stop (valeurs : vrai/faux). X = 2 - nombre de bougies (valeurs : 1-100). USEMOVETOBREAKEVEN - Activer le "break even" (valeurs : vrai/faux). WHENTOMOVETOBE - Quand déplacer vers le break even (valeurs : 1-30). PIPSTOMOVESL = 30 - Combien de pips déplacer le stop loss (valeurs : 1-30). Il est recommandé d'optimiser cet EA tous les quelques mois en utilisant les mêmes paramètres que ci-dessus.Vous pouvez l'utiliser comme un EA de couverture ou un EA à trade unique.Pour effectuer un backtest, consultez ce lien : https://bit.ly/2CD7XWD

2022.10.26
Premier Précédent 6 7 8 9 10 11 12 13 14 15 16 Suivant Dernier