Trading Systématique

MA Trend 2 : L'EA incontournable pour MetaTrader 5
MetaTrader5
MA Trend 2 : L'EA incontournable pour MetaTrader 5

Dans cette nouvelle version de MA Trend, nous avons ajouté un paramètre essentiel : le Type de trading qui vous permet de restreindre vos opérations :Seulement ACHAT - possibilité d'ouvrir uniquement des positions d'achat.Seulement VENTE - possibilité d'ouvrir uniquement des positions de vente.ACHAT et VENTE - possibilité d'ouvrir à la fois des positions d'achat et de vente.L'Expert Advisor fonctionne selon l'indicateur iMA (Moyenne Mobile, MA) et offre de nombreuses options de configuration :Une seule position - vous ne pouvez détenir qu'une seule position sur le marché.Inverser - les signaux de trading sont inversés.Fermer l'opposée - fermeture forcée des positions opposées lorsqu'un nouveau signal de trading est reçu.Voici comment se forment les signaux de trading lorsque tous les paramètres sont configurés par défaut :Le prix ASK actuel est supérieur à la valeur de l'indicateur sur la barre #1 -> signal pour ouvrir une position d'ACHAT.Le prix BID actuel est inférieur à la valeur de l'indicateur sur la barre #1 -> signal pour ouvrir une position de VENTE.Et voici comment cela se traduit dans le code MQL5 :      if(m_symbol.Ask()>ma[1])          m_need_open_buy=true;       else if(m_symbol.Bid()<ma[1])          m_need_open_sell=true;Voyons un exemple de fonctionnement avec le paramètre Une seule position activé et désactivé :Dans cet exemple, lorsque Une seule position est vrai, Inverser est faux et Fermer l'opposée est vrai : une position d'ACHAT a été ouverte. Après un certain temps, un signal pour ouvrir une position de VENTE a été reçu. Comme Fermer l'opposée est vrai, la position d'ACHAT a d'abord été fermée (puisqu'elle est opposée au signal), et ensuite, la position de VENTE a été ouverte.

2025.04.04
Optimisez votre Trading avec l'EA iCHO Trend CCIDualOnMA pour MetaTrader 5
MetaTrader5
Optimisez votre Trading avec l'EA iCHO Trend CCIDualOnMA pour MetaTrader 5

Stratégie de TradingL'Expert Advisor (EA) utilise deux indicateurs : l'iCHO (Oscillateur de Chaikin, CHO) et le CCIDualOnMA personnalisé. Le CHO sert d'indicateur de tendance et, lorsqu'il traverse zéro, il déclenche la fermeture des positions. L'indicateur CCIDualOnMA est utilisé comme filtre pour ajouter des positions. Les deux indicateurs sont basés sur le 'Temps de travail' spécifié - c'est ce même intervalle qui détermine le moment de la naissance d'une nouvelle bougie (si nécessaire pour les paramètres 'Trailing on ...' et 'Search signals on ...').Signaux de Trading :Fermeture des positions lorsque l'indicateur CHO traverse zéro :IntersectionPositions : InverserMode de TradingIntersection de bas en haut'false' -> fermer toutes les positions de VENTE('Positions d'ACHAT uniquement autorisées' OU 'Positions ACHAT et VENTE autorisées') -> ouvrir une position d'ACHAT'true' -> fermer toutes les positions d'ACHAT('Positions de VENTE uniquement autorisées' OU 'Positions ACHAT et VENTE autorisées') -> ouvrir une position de VENTEIntersection de haut en bas'false' -> fermer toutes les positions d'ACHAT('Positions de VENTE uniquement autorisées' OU 'Positions ACHAT et VENTE autorisées') -> ouvrir une position de VENTE'true' -> fermer toutes les positions de VENTE('Positions d'ACHAT uniquement autorisées' OU 'Positions ACHAT et VENTE autorisées') -> ouvrir une position d'ACHATSignaux Normaux (ajout d'une position)L'indicateur CHO est au-dessus de zéro et le CCI rapide croise le CCI lent de bas en haut, et le rapide est en dessous de zéro - signal pour ouvrir une position d'ACHAT.L'indicateur CHO est en dessous de zéro et le CCI rapide croise le CCI lent de haut en bas, et le rapide est au-dessus de zéro - signal pour ouvrir une position de VENTE.Fig. 1. Filtre iCHO Trend CCIDualOnMACaractéristiques :L'Expert Advisor peut être optimisé par le temps de travail ('Working time' frame)Il ne peut y avoir qu'un seul trade d'entrée de marché par bougie (c'est un paramètre interne, il n'est pas inclus dans les paramètres d'entrée et n'a rien à voir avec le paramètre 'Only one positions').En mode 'inside bar' (le paramètre 'Search signals on ...' est 'bar#0 (à chaque tick)') la bougie actuelle est la bougie #0, en mode 'uniquement lorsque une nouvelle bougie apparaît' (le paramètre 'Search signals on ...' est 'bar #1 (sur une nouvelle bougie)) la bougie actuelle est la bougie #1.Le paramètre 'Trade mode: '- restriction sur quel côté trader. Il peut prendre les valeurs 'Positions d'ACHAT uniquement autorisées', 'Positions de VENTE uniquement autorisées'' et 'Positions ACHAT et VENTE autorisées'.Le paramètre 'Use time control' - intervalle de temps pour rechercher des signaux de trading de 'Start Hour'::'Start Minute' à 'End Hour'::'End Minute'. La plage horaire peut être définie à la fois dans un jour et avec une transition à travers un jour.Voyons maintenant plus en détail chaque groupe de paramètres :Paramètres de Trading :'Working timeframe' -temps de travail. Le timeframe sur lequel les indicateurs sont créés et sur lequel une nouvelle bougie est recherchée.Le Stop Loss, le Take Profit et le Trailing sont définis en Points. Chacun des paramètres ('Stop Loss','Take Profit','Trailing Stop') peut être désactivé - pour cela, définissez le paramètre sélectionné à '0.0'.Le fonctionnement du trailing est montré dans les images du code TrailingStop.Gestion de la taille des positions (calcul des lots)Le lot peut être soit constant ('Money management' défini sur 'Constant lot' et la taille du lot définie dans 'The value for "Money management"') soit dynamique - en pourcentage de risque par transaction ('Money management' défini sur 'Risk in percent for a deal' et pourcentage de risque défini dans 'The value for "Money management"'). Il est également possible de définir un lot constant égal au lot minimum - 'Money management' est défini sur 'Lots Min'.Contrôle du temps :Cette section définit la plage horaire pour rechercher des signaux de trading. La plage horaire est activée via 'Use time control' et définit l'intervalle de temps pour rechercher des signaux de 'Start Hour'::'Start Minute' à 'End Hour'::'End Minute'. La plage horaire peut être définie à la fois dans un jour et avec une transition à travers un jour. N'affecte pas le trailing.Fonctionnalités supplémentaires :Le flag 'Positions: Only one' défini sur 'true' permet à l'Expert Advisor de ne pas avoir plus d'une position sur le marché.ATTENTION : 'Positions: Only one' défini sur'true' n'annule pas'Positions: Close opposite' défini sur 'true'! En d'autres termes : les positions opposées seront fermées en premier.Le flag 'Positions: Reverse' est responsable de l'inversion des signaux. Un flag intéressant 'Positions: Close opposite' - lorsqu'il est défini sur 'true' avant d'ouvrir une position, il garantit que les positions opposées sont supprimées. Le 'Print' log produit un enregistrement avancé de toutes les opérations. Le paramètre 'Freeze and StopsLevels Coefficient' définit le coefficient pour les niveaux d'arrêt et de gel dans les cas où ces niveaux pour un symbole sont égaux à zéro. Il est recommandé d'utiliser la valeur '3'.

2025.04.04
Détection de Nouveaux Bougies : Un Outil Pratique pour MetaTrader 5
MetaTrader5
Détection de Nouveaux Bougies : Un Outil Pratique pour MetaTrader 5

Salut les traders ! Aujourd'hui, je vais vous parler d'un outil super pratique qui peut vraiment vous aider dans votre trading sur MetaTrader 5. Ce robot, ou bot, est conçu pour détecter l'ouverture d'une nouvelle bougie sur n'importe quel intervalle de temps. Imaginez la simplicité de pouvoir exécuter un code en une seule fois, placer vos ordres et appeler d'autres fonctions sans tracas ! Le code est écrit dans la fonction OnTick(), ce qui signifie qu'il va s'activer chaque fois qu'un nouveau tick arrive. Pour l'utiliser, il vous suffit de définir l'intervalle de temps que vous souhaitez surveiller. Par défaut, le code utilise PERIOD_CURRENT, mais vous pouvez facilement le modifier pour l'adapter à votre stratégie de trading. Voici quelques étapes simples pour vous lancer : Choisissez votre intervalle de temps : Adaptez le code à votre style de trading en sélectionnant un timeframe qui vous convient. Intégrez le code : Insérez-le dans votre plateforme MetaTrader 5 pour commencer à l’utiliser. Testez et ajustez : N’hésitez pas à faire des ajustements pour l’optimiser selon vos besoins spécifiques. En conclusion, ce bot de détection de nouvelles bougies peut vous faire gagner un temps précieux et rendre votre expérience de trading plus fluide. N’hésitez pas à nous faire part de vos retours et expériences avec cet outil dans les commentaires ci-dessous. Bonne chance dans vos trades !

2025.04.04
Détecter le début d'un nouveau chandelier avec un EA sur MetaTrader 5
MetaTrader5
Détecter le début d'un nouveau chandelier avec un EA sur MetaTrader 5

Lorsque vous utilisez un Système de Trading (EA), chaque fois qu'une nouvelle cotation (un "tick") est reçue par MetaTrader, la fonction de gestion d'événements standard OnTick() est appelée par le terminal. Cependant, il n'existe pas de fonction de gestion d'événements standard pour le début d'un nouveau chandelier. Pour détecter cela, vous devez surveiller l'heure d'ouverture du chandelier le plus récent. Lorsque celle-ci change, cela signifie qu'un nouveau chandelier a commencé, et vous pouvez réagir à cette situation. Le code ci-dessous, compatible avec MQL4 et MQL5, illustre l'une des méthodes pour y parvenir : // Gestionnaire d'événements standard pour les ticks    void OnTick()    {       // Vérifiez s'il y a un nouveau chandelier (compatible avec MQL4 et MQL5).          static datetime dtChandelierCourant   = WRONG_VALUE;                 datetime dtChandelierPrecedent = dtChandelierCourant;                          dtChandelierCourant   = iTime( _Symbol, _Period, 0 );                 bool     bEvenementNouveauChandelier  = ( dtChandelierCourant != dtChandelierPrecedent );       // Réagissez à l'événement d'un nouveau chandelier et gérez la situation.          if( bEvenementNouveauChandelier )          {             // Détectez si c'est le premier tick reçu et gérez la situation.                /* Par exemple, lorsqu'il est appliqué pour la première fois au graphique et que le chandelier est quelque part au milieu de son évolution et ne représente pas vraiment le début d'un nouveau chandelier. */                if( dtChandelierPrecedent == WRONG_VALUE )                {                   // Faites quelque chose lors du premier tick ou au milieu d'un chandelier ...                }                else                {                   // Faites quelque chose lorsque qu'un chandelier normal apparaît ...                };             // Faites quelque chose indépendamment de la condition précédente ...          }          else          {             // Faites quelque chose d'autre ...          };       // Faites d'autres choses ...    }; Dans le code précédent, la variable statique garde en mémoire l'heure d'ouverture du chandelier, même lors du retour de la fonction OnTick(). Contrairement à une variable locale normale, elle mémorise son contenu et ne le libère pas en quittant la fonction. C'est la clé pour détecter un changement dans l'heure d'ouverture du chandelier courant. Il est également important de noter que lorsque le EA est placé sur un graphique pour la première fois, le code précédent réagit comme si le chandelier venait de s'ouvrir. Cette condition nécessite un traitement spécial si la situation doit être gérée différemment. Enfin, sachez que le code source de toutes mes publications sur CodeBase est désormais également accessible via le MetaEditor dans les Projets Publics sous le nom FMIC.

2025.04.03
RRS Tangled EA : L'Expert pour MetaTrader 4 qui Révolutionne votre Trading
MetaTrader4
RRS Tangled EA : L'Expert pour MetaTrader 4 qui Révolutionne votre Trading

Bienvenue dans le monde fascinant du trading avec l'RRS Tangled EA, une version avancée et améliorée de l'RRS Chaotic EA et de l'RRS Randomness in Nature EA. Ce robot de trading sélectionne aléatoirement des symboles de devises, des tailles de lots et des types d'ordres. Contrairement à de nombreux autres conseillers experts, il ne s'appuie ni sur des indicateurs techniques ni sur une analyse fondamentale. Au lieu de cela, il adopte une approche basée sur la Randomness in Nature pour ouvrir des positions. Avec les bons réglages comme le Take Profit, le Stop Loss, le Trailing et une bonne Gestion des Risques, cet EA peut générer des bénéfices significatifs. Il s'agit d'un EA multi-devises ou multi-actifs, ce qui signifie que même s'il est attaché à un graphique d'une seule paire de devises, il peut trader d'autres paires et gérer toutes les opérations liées aux trades qu'il a ouverts. Variable Valeurs Description minLot_Size Valeur Double Taille de lot minimale pour garantir que la taille de lot aléatoire ne descende pas en dessous de cette valeur. maxLot_Size Valeur Double Taille de lot maximale pour garantir que la taille de lot aléatoire ne dépasse pas cette valeur. StopLoss Valeur Int Définissez votre valeur de stop loss en points/pips (la plus petite unité de mouvement de prix pour votre actif). Définissez le Stop Loss à 0 pour le désactiver. TakeProfit Valeur Int Définissez votre valeur de take profit en points/pips. Définissez le Take Profit à 0 pour le désactiver. Trailing_Start Valeur Int (Points/Pips) Spécifiez le nombre de pips à partir du prix d'ouverture de la transaction où le trailing doit commencer. Définissez le Trailing Start à 0 pour désactiver l'opération de trailing. Trailing_Gap Valeur Int (Points/Pips) Définissez le gap en pips entre le prix du marché actuel et le stop loss trailing. Définissez le Trailing Gap à 0 pour désactiver l'opération de trailing. Risk_In_Money_Type FixedMoney, BalancePercentage FixedMoney : Ferme toutes les transactions ouvertes lorsque le flottant négatif atteint le montant spécifié. BalancePercentage : Calcule automatiquement en fonction de votre solde de compte et ferme toutes les transactions une fois cette limite atteinte. Money_In_Risk Valeur Int Si Risk_In_Money_Type est défini sur FixedMoney, entrez le montant d'argent que vous pouvez vous permettre de perdre. Si défini sur BalancePercentage, l'EA calculera automatiquement le risque en fonction de votre solde de compte et fermera toutes les transactions lorsque cette limite sera atteinte. Max_Spread Valeur Int (Points/Pips) Définit l'écart maximum acceptable. Si l'écart actuel dépasse cette valeur, l'EA ne prendra pas de trade et attendra que l'écart revienne dans la limite spécifiée. Slippage Valeur Int (Points/Pips) Définissez le maximum de slippage autorisé pour l'exécution des ordres. MaxOpenTrade  Valeur Int Nombre maximum de trades ouverts autorisés Bonne chance et bon trading !

2025.03.23
RRS Chaotic EA : L'Expert de Trading pour MetaTrader 4
MetaTrader4
RRS Chaotic EA : L'Expert de Trading pour MetaTrader 4

Bienvenue à tous les traders ! Aujourd'hui, je vais vous parler de l'RRS Chaotic EA, une version épurée et optimisée de l'RRS Randomness in Nature EA. Cet Expert Advisor (EA) se distingue par son approche unique : il ouvre des trades de manière aléatoire avec des paires de devises, des tailles de lots et des types d'ordres totalement imprévisibles. Pas besoin de compétences techniques ou d'analyses complexes comme les indicateurs, l'action des prix, le calendrier économique ou les motifs de chandeliers. C'est une solution simple et efficace pour diversifier vos stratégies de trading. Bien que cet EA fonctionne sur le principe du hasard, il a néanmoins réussi à générer des profits intéressants avec les bons réglages. Voici un aperçu des paramètres que vous pouvez personnaliser : Variable Valeurs Description minLot_Size Valeur Double Taille de lot minimum pour s'assurer que la taille des lots ne descende pas en dessous de cette valeur. maxLot_Size Valeur Double Taille de lot maximum pour s'assurer que la taille des lots ne dépasse pas cette valeur. StopLoss Valeur Int Définissez votre niveau de stop loss en points/pips (la plus petite unité de mouvement de prix pour votre actif). Mettez Stop Loss à 0 pour le désactiver. TakeProfit Valeur Int Définissez votre niveau de take profit en points/pips. Mettez Take Profit à 0 pour le désactiver. Risk_In_Money_Type FixedMoney, BalancePercentage FixedMoney : Ferme toutes les positions ouvertes lorsque la perte flottante atteint le montant spécifié. BalancePercentage : Calcule automatiquement en fonction de votre solde et ferme toutes les positions une fois cette limite atteinte. Money_In_Risk Valeur Int Si Risk_In_Money_Type est réglé sur FixedMoney, entrez le montant que vous pouvez vous permettre de perdre. Si réglé sur BalancePercentage, l'EA calculera automatiquement le risque basé sur votre solde de compte. Max_Spread Valeur Int (Points/Pips) Définit le spread maximum acceptable. Si le spread actuel dépasse cette valeur, l'EA n'ouvrira pas de trade et attendra que le spread revienne dans la limite spécifiée. Slippage Valeur Int (Points/Pips) Définissez la slippage maximale autorisée pour l'exécution des ordres. MaxOpenTrade Valeur Int Nombre maximum de trades ouverts autorisés. Note : Si vous rencontrez des dysfonctionnements ou des erreurs dans le fonctionnement de l'EA, supprimez #property strict de la ligne 8 du code de l'EA. Bonne chance et bon trading !

2025.03.19
Découvrez le RRS Randomness in Nature EA : un Expert Innovant pour MetaTrader 4
MetaTrader4
Découvrez le RRS Randomness in Nature EA : un Expert Innovant pour MetaTrader 4

Salut les traders ! Aujourd'hui, je vais vous parler d'un Expert Advisor (EA) vraiment unique en son genre : le RRS Randomness in Nature EA. Cet EA se distingue par son approche totalement aléatoire. Il sélectionne au hasard les paires de devises, les tailles de lots et les types d'ordres. Oubliez les compétences techniques comme les indicateurs, l'analyse des prix, ou les événements du calendrier économique, cet EA fonctionne sans tout ça ! Il propose plusieurs stratégies de trading, des plans de gestion des risques, et d'autres paramètres personnalisables. Et même s'il repose sur le hasard, il a tout de même réussi à générer de bons profits. Variable Valeurs Description Stratégie de Trading OneSide, DoubleSide OneSide : L'EA prendra une seule opération, soit un achat, soit une vente. DoubleSide : L'EA effectuera une opération d'achat et une opération de vente. Taille_Min_Lot Valeur Double Taille de lot minimale pour que la taille de lot aléatoire ne descende pas en dessous de cette valeur. Taille_Max_Lot Valeur Double Taille de lot maximale pour que la taille de lot aléatoire ne dépasse pas cette valeur. StopLoss Valeur Int Définissez votre valeur de stop loss en points/pips (la plus petite unité de mouvement de prix pour votre actif). Pour désactiver le Stop Loss, mettez-le à 0. TakeProfit Valeur Int Définissez votre valeur de take profit en points/pips. Pour désactiver le Take Profit, mettez-le à 0. Trailing_Start Valeur Int (Points/Pips) Indiquez le nombre de pips à partir du prix d'ouverture de l'opération où le trailing doit commencer. Pour désactiver l'opération de trailing, mettez-le à 0. Trailing_Gap Valeur Int (Points/Pips) Définissez l'écart en pips entre le prix actuel du marché et le stop loss en trailing. Pour désactiver l'opération de trailing, mettez-le à 0. Type_Risque_En_Argent FixedMoney, BalancePercentage FixedMoney : Ferme toutes les opérations ouvertes lorsque la perte flottante négative atteint le montant spécifié. BalancePercentage : Calcule automatiquement en fonction de votre solde et ferme toutes les opérations une fois cette limite atteinte. Argent_En_Risque Valeur Int Si Type_Risque_En_Argent est réglé sur FixedMoney, entrez le montant d'argent que vous pouvez vous permettre de perdre. Si réglé sur BalancePercentage, l'EA calculera automatiquement le risque en fonction de votre solde et fermera toutes les opérations lorsque cette limite sera atteinte. Max_Spread Valeur Int (Points/Pips) Définit le spread maximum acceptable. Si le spread actuel dépasse cette valeur, l'EA n'effectuera pas de trade et attendra que le spread revienne dans les limites spécifiées. Slippage Valeur Int (Points/Pips) Définissez le slippage maximum autorisé pour l'exécution des ordres. Note : Si vous rencontrez un problème de fonctionnement avec l'EA, retirez #property strict de la ligne 8 du code de l'EA. Bonne chance et bon trading !

2025.03.19
RRS EA Non-Directionnel : Optimisez vos Trades sur MetaTrader 4
MetaTrader4
RRS EA Non-Directionnel : Optimisez vos Trades sur MetaTrader 4

Bienvenue à tous les traders ! Aujourd'hui, nous allons plonger dans l'univers du RRS EA Non-Directionnel. Ce robot de trading est conçu pour ceux qui préfèrent une approche sans biais, sans se fier à des compétences techniques comme les indicateurs, l'analyse des prix, ou les événements du calendrier économique. Vous allez découvrir comment ce petit bijou peut vous aider à diversifier vos stratégies de trading. Ce qui est intéressant avec cet EA, c'est qu'il offre une multitude de stratégies de trading, des plans de gestion des risques, et d'autres paramètres personnalisables. En gros, il exécute des transactions de manière continue et aléatoire, selon la stratégie que vous choisissez. Bien qu'il fonctionne sur le principe du hasard, il peut tout de même générer des bénéfices si vous appliquez une bonne gestion des risques. Tableau des Paramètres Clés Variable Valeurs Description Stratégie de Trading Hedge_Style, BuySell_Random, Buy_Sell, Auto_Swap, Buy_Order, Sell_Order Hedge_Style : Ouvre simultanément des positions d'achat et de vente. BuySell_Random : Ouvre aléatoirement une position d'achat ou de vente. Buy_Sell : Ouvre une position basée sur le type de la dernière commande fermée. Auto_Swap : N’ouvre que des positions en fonction de la direction du swap positif. Buy_Order : N’ouvre que des positions d'achat. Sell_Order : N’ouvre que des positions de vente. Nouvelle_Transaction Vrai/Faux Vrai : L'EA peut prendre des transactions. Faux : L'EA ne prendra aucune transaction. Taille_Lot Double Valeur Choisissez la taille de lot souhaitée pour chaque transaction exécutée par l'EA. Type_StopLoss Virtual_SL, Classic_SL Virtual SL : L'EA fermera la transaction lorsque votre stop loss est atteint, mais ce niveau ne sera pas visible pour le serveur du broker. Classic SL : L'EA placera un stop loss visible sur le serveur du broker. StopLoss Valeur Int Définissez votre valeur de stop loss en points/pips. Réglez Stop Loss à 0 pour le désactiver. Type_TakeProfit Virtual_TP, Classic_TP Virtual TP : Le niveau de take profit n'est pas visible pour le serveur du broker. Classic TP : Le niveau de take profit est visible pour le serveur du broker. TakeProfit Valeur Int Définissez votre valeur de take profit en points/pips. Réglez Take Profit à 0 pour le désactiver. Type_Trailing Virtual_Trailing, Classic_Trailing Virtual Trailing : Les modifications du stop loss sont conservées sur votre PC local. Classic Trailing : Les modifications du stop loss sont mises à jour directement sur le serveur du broker. Trailing_Début Valeur Int (Points/Pips) Indiquez le nombre de pips à partir du prix d'ouverture à partir duquel le trailing doit commencer. Trailing_Ecart Valeur Int (Points/Pips) Définissez l'écart en pips entre le prix du marché actuel et le stop loss de trailing. Réglez Trailing Gap à 0 pour désactiver l'opération de trailing. Type_Risque_Agent FixedMoney, BalancePercentage Fixed Money : Ferme toutes les transactions ouvertes lorsque le flottant négatif atteint le montant spécifié. Balance Percentage : Calcule automatiquement en fonction de votre solde de compte. Argent_Dans_Risque Valeur Int Si Type_Risque_Agent est défini sur FixedMoney, entrez le montant que vous pouvez vous permettre de perdre. Max_Spread Valeur Int (Points/Pips) Définit le spread maximal acceptable. Si le spread actuel dépasse cette valeur, l'EA n'ouvrira pas de transaction. Slippage Valeur Int (Points/Pips) Définissez le slippage maximal autorisé pour l'exécution des ordres. Remarque : Si vous rencontrez un dysfonctionnement ou une erreur dans le fonctionnement de l'EA, retirez #property strict du code de l'EA à la ligne 6. Bonne chance et bon trading !

2025.03.17
MeanReversionTrendEA : Le Système de Trading Idéal pour MetaTrader 5
MetaTrader5
MeanReversionTrendEA : Le Système de Trading Idéal pour MetaTrader 5

1. Présentation Le MeanReversionTrendEA allie des stratégies de suivi de tendance et de retour à la moyenne en utilisant des moyennes mobiles et des mesures de volatilité basées sur l'ATR. Ce système dispose d'une validation intégrée des trades pour garantir une exécution fiable dans diverses conditions de marché. 2. Caractéristiques Principales Stratégie Double : Combine le suivi de tendance (croisements de moyennes mobiles) et le retour à la moyenne (écarts prix-MA). Signaux Adaptatifs : Utilise des moyennes mobiles rapides et lentes pour identifier les tendances. Intégration de la Volatilité : Inclut l'ATR pour mesurer la volatilité du marché pour les entrées de retour à la moyenne. Validateur Intégré : Système de validation des trades qui vérifie le volume, la marge et les niveaux de stop. Mécanisme de Sécurité : Fonctionnalité de trade de sécurité pour valider les backtests. Gestion Défensive des Positions : SL/TP fixes ou proportionnels avec validation appropriée. Compatible Multi-Actifs : Fonctionne avec les forex, matières premières, indices et actions avec un dimensionnement de lots approprié. 3. Comment Ça Fonctionne Surveille les croisements de moyennes mobiles pour détecter les changements de direction de tendance. Mesure les écarts de prix par rapport à la MA lente en utilisant des bandes de volatilité basées sur l'ATR. Génère des signaux d'achat lorsque la MA rapide croise au-dessus de la MA lente ou que le prix tombe en dessous de la bande de volatilité. Génère des signaux de vente lorsque la MA rapide croise en dessous de la MA lente ou que le prix dépasse la bande de volatilité. Valide et exécute les trades avec des paramètres de gestion des risques appropriés. 4. Paramètres d'Entrée Fast_MA_Period (20), Slow_MA_Period (50), ATR_Period (14) ATR_Multiplier (2.0) pour le calcul de la bande de retour à la moyenne LotSize (0.1) pour le dimensionnement des positions SL_Points (500), TP_Points (1000) pour la gestion des risques Magic_Number (123456) pour l'identification des ordres 5. Notes d'Utilisation Optimal pour toutes les principales paires de devises et les instruments liquides. Fonctionne sur tous les intervalles de temps, avec une recommandation pour H1-H4 pour une meilleure qualité des signaux. Nécessite suffisamment de données historiques pour un calcul correct des indicateurs. Idéal pour les marchés en tendance avec des opportunités de retour occasionnelles. Un système de validation robuste garantit une exécution correcte auprès des courtiers. 6. Structure du Code CTradeValidator : Classe de validation des trades complète. Fonctions d'initialisation d'indicateurs et de traitement des données. Génération de signaux combinant logique de tendance et de retour. Exécution des trades avec validation adéquate et gestion des risques. Mécanismes de sécurité pour l'intégrité des backtests. 7. Avertissement Fournie telle quelle à des fins éducatives. Les performances passées ne garantissent pas les résultats futurs. Testez abondamment sur des comptes démo avant de trader en direct.

2025.03.14
Tableau de Bord en Direct pour le Suivi de Plusieurs EA avec Numéros Magiques
MetaTrader5
Tableau de Bord en Direct pour le Suivi de Plusieurs EA avec Numéros Magiques

Analyse des Stratégies Individuelles Lorsque vous gérez plusieurs stratégies sur un même compte, la principale difficulté consiste à évaluer la performance de chacune d’elles. Sans numéros magiques, vous seriez contraint de vous baser sur des détails partiels ou ambigus, comme les commentaires de trade ou les plages de numéros de ticket. Les numéros magiques offrent un moyen systématique d’identifier chaque EA grâce à un tag numérique appliqué automatiquement. Suivi Précis des Performances Vous pouvez rapidement identifier quel système connaît un drawdown ou lequel affiche des performances exceptionnelles. Cette connaissance facilite la prise de décisions rapides, par exemple, décider de mettre en pause un robot qui ne performe pas ou d’allouer plus de capital à une stratégie gagnante. Analyse & Journalisation Simplifiées Au lieu de fouiller dans les journaux ou l’onglet historique, vous disposez d’un “panneau” concis qui agrège le profit total clos de chaque EA, le nombre de transactions, et les champs de commentaires pertinents. Cela aide à la gestion des enregistrements, à l’optimisation des stratégies, et même à la réalisation de rapports clients si vous gérez des comptes pour d’autres.Le code complet est joint. Conseils d'Utilisation Attachez le Script/EA à n'importe quel graphique dans MT5. Après compilation, une table s'affichera immédiatement avec chaque numéro magique. Vérifiez la Taille du Graphique: Si votre fenêtre de graphique est très étroite, une partie du texte pourrait dépasser à droite de l’écran. Élargissez le graphique ou réduisez la taille de la police pour une meilleure lisibilité. Choisissez la Police: Courier New est recommandé pour l'alignement des colonnes, mais vous pouvez la modifier dans le code si vous préférez un style différent. Ajustez les Intervalles: Par défaut, le script se met à jour toutes les 5 secondes. Modifiez EventSetTimer(5) si vous souhaitez des mises à jour plus fréquentes ou moins fréquentes.

2025.02.25
Téléchargez l'historique des ticks d'un symbole avec MetaTrader 5
MetaTrader5
Téléchargez l'historique des ticks d'un symbole avec MetaTrader 5

Ce code d'expert advisor va analyser la liste des symboles de votre courtier et télécharger tous les ticks disponibles, ou jusqu'à une date spécifiée. Cela peut vous aider à récupérer l'historique des symboles pour vos backtests ou à créer un graphique personnalisé à partir de ces ticks. Assurez-vous d'avoir suffisamment d'espace libre sur votre disque dur, car les ticks seront mis en cache dans le dossier de données de votre terminal. Pour faciliter le téléchargement des symboles, nous avons besoin d'un gestionnaire de téléchargement au préalable. La structure CDownloadManager contient toutes les informations nécessaires. struct CDownloadManager {   bool m_started, m_finished;   string m_symbols[], m_current;   int m_index;} Voici ce que nous avons : l'état du téléchargement (démarré/terminé) la liste des symboles à scanner le symbole courant et l'index du symbole en cours de scan Nous devrons également lire et écrire sur le disque dur. Comme nous travaillons avec des symboles, nous créons deux fonctions rapides pour écrire et lire des chaînes à partir de fichiers binaires. La fonction d'écriture de chaîne dans un fichier : void writeStringToFile(int f, string thestring) {   // sauvegarder la chaîne du symbole   char sysave[];   int charstotal=StringToCharArray(thestring, sysave, 0, StringLen(thestring), CP_ACP);   FileWriteInteger(f, charstotal, INT_VALUE);   for(int i=0; i < charstotal; i++) {     FileWriteInteger(f, sysave[i], CHAR_VALUE);   }} Cette fonction reçoit : le handle de fichier f, d'un fichier ouvert pour écriture avec les flags FILE_WRITE|FILE_BIN la chaîne à écrire dans le fichier Elle écrit d'abord un entier représentant la longueur de la chaîne, puis stocke chaque caractère de la chaîne. La fonction de lecture de chaîne à partir d'un fichier : string readStringFromFile(int f) {   string result="";   // charger la chaîne du symbole   char syload[];   int charstotal=(int)FileReadInteger(f, INT_VALUE);   if(charstotal > 0) {     ArrayResize(syload, charstotal, 0);     for(int i=0; i < charstotal; i++) {       syload[i]=(char)FileReadInteger(f, CHAR_VALUE);    }     result=CharArrayToString(syload, 0, charstotal, CP_ACP);   }   return(result);} Elle reçoit : le handle de fichier f d'un fichier ouvert pour lecture avec les flags FILE_READ|FILE_BIN Elle lit un entier représentant la longueur des caractères attendus dans le fichier, puis elle lit chaque caractère dans un tableau de caractères et crée une chaîne à partir de ce tableau. Passons à la structure CDownloadManager. Nous avons besoin d'une méthode pour initialiser le gestionnaire et le remplir à partir de la liste des symboles : //+------------------------------------------------------------------+//| Récupérer les symboles de la liste des symboles |//+------------------------------------------------------------------+void grab_symbols() {     //! seulement depuis la liste     int s=SymbolsTotal(true);     ArrayResize(m_symbols, s, 0);     for(int i=0; i < ArraySize(m_symbols); i++) {       m_symbols[i]=SymbolName(i, true);    }} Assez simple : demander combien de symboles sont dans la liste des symboles (actifs) redimensionner notre tableau m_symbols pour les recevoir boucler sur le total des symboles et demander le nom du symbole Nous devons également gérer le téléchargement des données des symboles, donc nous aurons besoin d'une fonction qui est essentiellement le gestionnaire : //+------------------------------------------------------------------+//| Gérer le processus de téléchargement des symboles |//+------------------------------------------------------------------+void manage(string folder, string filename) {     // essentiellement, cela démarre ou navigue vers le symbole suivant     // si défini     if(ArraySize(m_symbols) > 0) {       // si pas encore démarré       if(!m_started) {         m_started=true;         // aller au premier symbole         m_current=m_symbols[0];         m_index=1;         save(folder, filename);         if(_Symbol != m_current) {           ChartSetSymbolPeriod(ChartID(), m_current, _Period);        }       else {           ENUM_TIMEFRAMES new_period=PERIOD_M1;           for(int p=0; p<ArraySize(TFS); p++) {             if(_Period != TFS[p]) {               new_period=TFS[p];               break;            }          }           ChartSetSymbolPeriod(ChartID(), m_current, new_period);      }         return;     }     // si démarré     else {         m_index++;         if(m_index <= ArraySize(m_symbols)) {           m_current=m_symbols[m_index-1];           save(folder, filename);           if(_Symbol != m_current) {             ChartSetSymbolPeriod(ChartID(), m_current, _Period);          }         return;      }       else {           m_finished=true;           FileDelete(folder + "\" + filename);           Print("Terminé");           ExpertRemove();           return;      }    }    }    else {       Print("Veuillez d'abord récupérer les symboles");    }    } Voici comment fonctionne le système : Le graphique s'ouvre ; nous avons besoin d'un graphique et d'un minuteur. Ce minuteur s'exécute, nous annulons le minuteur. Nous vérifions s'il s'agit d'un nouveau téléchargement ou d'un téléchargement continu. S'il s'agit d'un nouveau téléchargement, nous le configurons en récupérant tous les symboles. S'il s'agit d'un téléchargement continu, nous téléchargeons les données pour le symbole courant. Voici la partie du code qui gère le téléchargement sur minuteur : //+------------------------------------------------------------------+//| Timer |//+------------------------------------------------------------------+void OnTimer() {     //--- si synchronisé     if(SymbolIsSynchronized(_Symbol) && TerminalInfoInteger(TERMINAL_CONNECTED)==1) {       EventKillTimer();       //--- charger le système ici       if(MANAGER.load(MANAGER_FOLDER, MANAGER_STATUS_FILE)) {         //--- système chargé, nous scannons un symbole ici         Comment("Système chargé et nous traitons " + MANAGER.m_current);         //--- chargement des ticks         //--- trouver le tick le plus ancien disponible chez le courtier         int attempts=0;         int ping=-1;         datetime cursor=flatten(TimeTradeServer());         long cursorMSC=((long)cursor)*1000;         long jump=2592000000;//60*60*24*30*1000;         MqlTick receiver[];         long oldest=LONG_MAX;         Comment("Veuillez patienter");         while(attempts < 5) {           ping=CopyTicks(_Symbol, receiver, COPY_TICKS_ALL, cursorMSC, 1);           if(ping==1) {             if(receiver[0].time_msc==oldest) {               attempts++;            }           else {             attempts=0;          }           if(receiver[0].time_msc<oldest) {             oldest=receiver[0].time_msc;          }           cursorMSC-=jump;           if(limitDate && receiver[0].time<=oldestLimit) {             break;          }          }           else {             attempts++;          }           Sleep(44);           Comment("Ancien Tick : " + TimeToString((datetime)(oldest/1000), TIME_DATE | TIME_MINUTES | TIME_SECONDS) + "\nCurseur(" + TimeToString((datetime)(cursorMSC/1000), TIME_DATE | TIME_MINUTES | TIME_SECONDS) + ")\nTentatives(" + IntegerToString(attempts) + ")\nVeuillez patienter pour la réponse...");      }       //--- à ce stade, nous avons le tick le plus ancien       //--- commencer à demander des ticks du plus ancien au plus récent       if(oldest!=LONG_MAX) {             ArrayFree(receiver);             datetime newest_tick=0;             //--- recevoir le temps du dernier tick pour ce symbole             datetime most_recent_candle=(datetime)SymbolInfoInteger(_Symbol, SYMBOL_TIME);             while(newest_tick<most_recent_candle) {               //--- demander un nouveau lot               int pulled=CopyTicks(_Symbol, receiver, COPY_TICKS_ALL, oldest, tick_packets);               if(pulled > 0) {                 newest_tick=receiver[pulled-1].time;                 oldest=receiver[pulled-1].time_msc;                 ArrayFree(receiver);                }               //--- délai des requêtes serveur               Sleep(44);               Comment("Tiré jusqu'à " + TimeToString(newest_tick, TIME_DATE | TIME_MINUTES | TIME_SECONDS) + " jusqu'à présent");          }      }       else {             Alert("Veuillez fermer le terminal \n allez dans le dossier des ticks \n et supprimez les dossiers vides");           ExpertRemove();      }       //--- mettre à jour le gestionnaire et passer à la suite     MANAGER.manage(MANAGER_FOLDER, MANAGER_STATUS_FILE);    }    else {       //--- récupérer les symboles pour commencer le téléchargement     Comment("Récupération de la liste et démarrage");     MANAGER.grab_symbols();     MANAGER.manage(MANAGER_FOLDER, MANAGER_STATUS_FILE);    }  }} En résumé, ce code vous permet de télécharger l'historique des ticks pour une série de symboles directement depuis votre plateforme de trading. Une fois que vous avez tout configuré, le téléchargement se fait automatiquement, ce qui vous laisse plus de temps pour analyser vos données et prendre des décisions éclairées.

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