Indicateur technique

Indicateur de Buffers Horaires pour MetaTrader 5 : Collecte de Données Efficace
MetaTrader5
Indicateur de Buffers Horaires pour MetaTrader 5 : Collecte de Données Efficace

Objectif Cet indicateur simple permet aux utilisateurs de collecter des données pour modéliser leurs analyses. Les variables temporelles sont souvent utilisées dans la modélisation économique. L'indicateur ci-dessous, facilement extensible, fournit chaque heure sous forme de tableau binaire. Un tableau final stocke l'heure elle-même. Si vous collectez des données d'autres indicateurs dans un fichier CSV, par exemple en utilisant la fonction CopyBuffer, cet indicateur permet d'ajouter des colonnes pour l'heure collectée comme données supplémentaires. C'est un code basique pour ceux qui collectent des données, par exemple pour du machine learning, afin d'avoir une variable binaire prête à l'emploi (buffers 0 à 23), ou une variable pour l'heure (buffer 24) pour l'utilisation en modélisation. Décomposition du Code On commence par déclarer le nombre de buffers et de graphiques comme étant 25 : #property indicator_chart_window #property indicator_buffers 25 #property indicator_plots 25 Étiquetage des Buffers On a défini les étiquettes des buffers pour la fenêtre de données : #property indicator_label1 "Heure 00" #property indicator_label2 "Heure 01" #property indicator_label3 "Heure 02" #property indicator_label4 "Heure 03" #property indicator_label5 "Heure 04" #property indicator_label6 "Heure 05" #property indicator_label7 "Heure 06" #property indicator_label8 "Heure 07" #property indicator_label9 "Heure 08" #property indicator_label10 "Heure 09" #property indicator_label11 "Heure 10" #property indicator_label12 "Heure 11" #property indicator_label13 "Heure 12" #property indicator_label14 "Heure 13" #property indicator_label15 "Heure 14" #property indicator_label16 "Heure 15" #property indicator_label17 "Heure 16" #property indicator_label18 "Heure 17" #property indicator_label19 "Heure 18" #property indicator_label20 "Heure 19" #property indicator_label21 "Heure 20" #property indicator_label22 "Heure 21" #property indicator_label23 "Heure 22" #property indicator_label24 "Heure 23" #property indicator_label25 "Heure" Déclarations des Buffers On procède à la déclaration des buffers ainsi qu'à une variable entière pour l'heure du jour qui sera calculée plus tard. double hourBuffer0[]; double hourBuffer1[]; double hourBuffer2[]; double hourBuffer3[]; double hourBuffer4[]; double hourBuffer5[]; double hourBuffer6[]; double hourBuffer7[]; double hourBuffer8[]; double hourBuffer9[]; double hourBuffer10[]; double hourBuffer11[]; double hourBuffer12[]; double hourBuffer13[]; double hourBuffer14[]; double hourBuffer15[]; double hourBuffer16[]; double hourBuffer17[]; double hourBuffer18[]; double hourBuffer19[]; double hourBuffer20[]; double hourBuffer21[]; double hourBuffer22[]; double hourBuffer23[]; double hourBuffer[]; int bar_hour; Indexation et Dessin des Graphiques On définit l'index de tous les buffers comme données, et on désactive le dessin en utilisant une boucle. (Essayer de faire l'indexation avec une boucle a présenté une erreur, car on ne peut pas passer par exemple hourBuffer[q] à SetIndexBuffer, donc on fait cela un par un ; mais la boucle semble fonctionner pour PlotIndexSetInteger, ce qui est pratique). // Assigner les buffers à l'index, cacher du graphique, montrer dans la fenêtre de données SetIndexBuffer(0, hourBuffer0, INDICATOR_DATA); SetIndexBuffer(1, hourBuffer1, INDICATOR_DATA); SetIndexBuffer(2, hourBuffer2, INDICATOR_DATA); SetIndexBuffer(3, hourBuffer3, INDICATOR_DATA); SetIndexBuffer(4, hourBuffer4, INDICATOR_DATA); SetIndexBuffer(5, hourBuffer5, INDICATOR_DATA); SetIndexBuffer(6, hourBuffer6, INDICATOR_DATA); SetIndexBuffer(7, hourBuffer7, INDICATOR_DATA); SetIndexBuffer(8, hourBuffer8, INDICATOR_DATA); SetIndexBuffer(9, hourBuffer9, INDICATOR_DATA); SetIndexBuffer(10, hourBuffer10, INDICATOR_DATA); SetIndexBuffer(11, hourBuffer11, INDICATOR_DATA); SetIndexBuffer(12, hourBuffer12, INDICATOR_DATA); SetIndexBuffer(13, hourBuffer13, INDICATOR_DATA); SetIndexBuffer(14, hourBuffer14, INDICATOR_DATA); SetIndexBuffer(15, hourBuffer15, INDICATOR_DATA); SetIndexBuffer(16, hourBuffer16, INDICATOR_DATA); SetIndexBuffer(17, hourBuffer17, INDICATOR_DATA); SetIndexBuffer(18, hourBuffer18, INDICATOR_DATA); SetIndexBuffer(19, hourBuffer19, INDICATOR_DATA); SetIndexBuffer(20, hourBuffer20, INDICATOR_DATA); SetIndexBuffer(21, hourBuffer21, INDICATOR_DATA); SetIndexBuffer(22, hourBuffer22, INDICATOR_DATA); SetIndexBuffer(23, hourBuffer23, INDICATOR_DATA); SetIndexBuffer(24, hourBuffer, INDICATOR_DATA); for(int i = 0; i < 24; i++) { PlotIndexSetInteger(i, PLOT_DRAW_TYPE, DRAW_NONE); PlotIndexSetInteger(i, PLOT_SHOW_DATA, true); } return(INIT_SUCCEEDED); Boucles de Fonction OnCalculate et Programme Passons à la fonction OnCalculate : Ici, nous remettons tous les buffers à zéro et ne changeons que celui correspondant à l'heure actuelle à un. Il y a peut-être un gain d'efficacité à obtenir ici, mais on en reparlera plus tard. if(rates_total 0 ? prev_calculated - 1 : 0); for(int i = start; i < rates_total; i++) { // Calculer l'heure (0..23) pour la barre i bar_hour = (int)((time[i] % 86400) / 3600); // 1) Mettre TOUTES les 24 buffers pour la barre i à 0 hourBuffer0[i] = 0.0; hourBuffer1[i] = 0.0; hourBuffer2[i] = 0.0; hourBuffer3[i] = 0.0; hourBuffer4[i] = 0.0; hourBuffer5[i] = 0.0; hourBuffer6[i] = 0.0; hourBuffer7[i] = 0.0; hourBuffer8[i] = 0.0; hourBuffer9[i] = 0.0; hourBuffer10[i] = 0.0; hourBuffer11[i] = 0.0; hourBuffer12[i] = 0.0; hourBuffer13[i] = 0.0; hourBuffer14[i] = 0.0; hourBuffer15[i] = 0.0; hourBuffer16[i] = 0.0; hourBuffer17[i] = 0.0; hourBuffer18[i] = 0.0; hourBuffer19[i] = 0.0; hourBuffer20[i] = 0.0; hourBuffer21[i] = 0.0; hourBuffer22[i] = 0.0; hourBuffer23[i] = 0.0; hourBuffer[i] = EMPTY_VALUE; // 2) Maintenant, mettre SEULEMENT le buffer correspondant à 1 switch(bar_hour) { case 0: hourBuffer0[i] = 1.0; hourBuffer[i] = bar_hour; break; case 1: hourBuffer1[i] = 1.0; hourBuffer[i] = bar_hour; break; case 2: hourBuffer2[i] = 1.0; hourBuffer[i] = bar_hour; break; case 3: hourBuffer3[i] = 1.0; hourBuffer[i] = bar_hour; break; case 4: hourBuffer4[i] = 1.0; hourBuffer[i] = bar_hour; break; case 5: hourBuffer5[i] = 1.0; hourBuffer[i] = bar_hour; break; case 6: hourBuffer6[i] = 1.0; hourBuffer[i] = bar_hour; break; case 7: hourBuffer7[i] = 1.0; hourBuffer[i] = bar_hour; break; case 8: hourBuffer8[i] = 1.0; hourBuffer[i] = bar_hour; break; case 9: hourBuffer9[i] = 1.0; hourBuffer[i] = bar_hour; break; case 10: hourBuffer10[i] = 1.0; hourBuffer[i] = bar_hour; break; case 11: hourBuffer11[i] = 1.0; hourBuffer[i] = bar_hour; break; case 12: hourBuffer12[i] = 1.0; hourBuffer[i] = bar_hour; break; case 13: hourBuffer13[i] = 1.0; hourBuffer[i] = bar_hour; break; case 14: hourBuffer14[i] = 1.0; hourBuffer[i] = bar_hour; break; case 15: hourBuffer15[i] = 1.0; hourBuffer[i] = bar_hour; break; case 16: hourBuffer16[i] = 1.0; hourBuffer[i] = bar_hour; break; case 17: hourBuffer17[i] = 1.0; hourBuffer[i] = bar_hour; break; case 18: hourBuffer18[i] = 1.0; hourBuffer[i] = bar_hour; break; case 19: hourBuffer19[i] = 1.0; hourBuffer[i] = bar_hour; break; case 20: hourBuffer20[i] = 1.0; hourBuffer[i] = bar_hour; break; case 21: hourBuffer21[i] = 1.0; hourBuffer[i] = bar_hour; break; case 22: hourBuffer22[i] = 1.0; hourBuffer[i] = bar_hour; break; case 23: hourBuffer23[i] = 1.0; hourBuffer[i] = bar_hour; break; } string localHourText = HourToText(bar_hour); Comment("L'heure est : ", localHourText); } // Retourner le nombre de barres traitées return(rates_total); Fonction pour ajouter du contexte au commentaire Et pour finir, un programme pour un commentaire : Ceci est en effet un contrôle de débogage, mais j'ai laissé le commentaire. string HourToText(int bh) { string TextHour; switch(bh) { case 0: TextHour = "12 h"; // minuit break; case 1: TextHour = "1 h"; break; case 2: TextHour = "2 h"; break; case 3: TextHour = "3 h"; break; case 4: TextHour = "4 h"; break; case 5: TextHour = "5 h"; break; case 6: TextHour = "6 h"; break; case 7: TextHour = "7 h"; break; case 8: TextHour = "8 h"; break; case 9: TextHour = "9 h"; break; case 10: TextHour = "10 h"; break; case 11: TextHour = "11 h"; break; case 12: TextHour = "12 h"; // midi break; case 13: TextHour = "13 h"; break; case 14: TextHour = "14 h"; break; case 15: TextHour = "15 h"; break; case 16: TextHour = "16 h"; break; case 17: TextHour = "17 h"; break; case 18: TextHour = "18 h"; break; case 19: TextHour = "19 h"; break; case 20: TextHour = "20 h"; break; case 21: TextHour = "21 h"; break; case 22: TextHour = "22 h"; break; case 23: TextHour = "23 h"; break; default: // Juste au cas où 'bh' est hors limites (0..23) TextHour = "Inconnu"; break; } return TextHour; } Notez que cela s'affiche uniquement à travers la fenêtre de données pour le moment. Joyeux Noël et Bonne Année 2025 à tous.

2024.12.25
Indicateur Fibonacci Bollinger Bands pour MetaTrader 5 : Optimisez Votre Analyse Technique
MetaTrader5
Indicateur Fibonacci Bollinger Bands pour MetaTrader 5 : Optimisez Votre Analyse Technique

Bienvenue sur notre blog dédié aux traders ! Aujourd'hui, nous allons plonger dans un outil fascinant : l'indicateur Fibonacci Bollinger Bands. Ce dernier est une conversion d'un script Pine (réalisé par Rashad) en langage MQL5. Il fusionne l'efficacité des Bollinger Bands avec les niveaux de Fibonacci, permettant ainsi aux traders de détecter des zones de support et de résistance dynamiques avec précision. Les caractéristiques de cet indicateur : Calcul automatique des niveaux de Fibonacci sur les Bollinger Bands. Offre une perspective unique pour les trades de breakout et de retournement. Entièrement compatible avec MetaTrader 5. Idéal pour les traders à la recherche d'outils d'analyse technique améliorés. N'attendez plus pour le télécharger et le tester dès aujourd'hui ! Voici le code en MQL5 : study(shorttitle="FBB", title="Fibonacci Bollinger Bands", overlay=true) length = input(200, minval=1) src = input(hlc3, title="Source") mult = input(3.0, minval=0.001, maxval=50) basis = vwma(src, length) dev = mult * stdev(src, length) upper_1= basis + (0.236*dev) upper_2= basis + (0.382*dev) upper_3= basis + (0.5*dev) upper_4= basis + (0.618*dev) upper_5= basis + (0.764*dev) upper_6= basis + (1*dev) lower_1= basis - (0.236*dev) lower_2= basis - (0.382*dev) lower_3= basis - (0.5*dev) lower_4= basis - (0.618*dev) lower_5= basis - (0.764*dev) lower_6= basis - (1*dev) plot(basis, color=fuchsia, linewidth=2) p1 = plot(upper_1, color=white, linewidth=1, title="0.236") p2 = plot(upper_2, color=white, linewidth=1, title="0.382") p3 = plot(upper_3, color=white, linewidth=1, title="0.5") p4 = plot(upper_4, color=white, linewidth=1, title="0.618") p5 = plot(upper_5, color=white, linewidth=1, title="0.764") p6 = plot(upper_6, color=red, linewidth=2, title="1") p13 = plot(lower_1, color=white, linewidth=1, title="0.236") p14 = plot(lower_2, color=white, linewidth=1, title="0.382") p15 = plot(lower_3, color=white, linewidth=1, title="0.5") p16 = plot(lower_4, color=white, linewidth=1, title="0.618") p17 = plot(lower_5, color=white, linewidth=1, title="0.764") p18 = plot(lower_6, color=green, linewidth=2, title="1") Exemple d'utilisation en MQL5 : Alors, êtes-vous prêt à améliorer votre stratégie de trading avec cet indicateur ? N’hésitez pas à partager vos retours d’expérience en commentaires !

2024.12.04
Optimisez vos Backtests avec un Calendrier Économique Synchronisé sur MetaTrader 5
MetaTrader5
Optimisez vos Backtests avec un Calendrier Économique Synchronisé sur MetaTrader 5

Pour faire court : le calendrier économique intégré de MetaTrader 5 n’est pas (complètement) synchronisé avec les cotations historiques.Les cotations sont marquées avec des timestamps selon les fuseaux horaires en vigueur sur le serveur au moment de la formation de chaque barre correspondante.Une fois que les barres sont formées, elles restent inchangées, y compris leurs timestamps. En revanche, le calendrier économique fournit des informations sur des événements (passés, présents et futurs) liés au fuseau horaire actuel du serveur. Comme de nombreux courtiers respectent un calendrier de fuseau horaire spécifique, y compris les changements d’heure d’été, les timestamps des événements historiques peuvent être décalés d’une heure par rapport aux barres associées, pendant environ la moitié de l’année.De plus, certains courtiers modifient les fuseaux horaires de manière plus radicale que le simple changement d’heure d’été. Les cotations historiques peuvent alors sembler décalées de plusieurs heures à gauche ou à droite par rapport à l’heure des événements économiques qui se sont initialement produits, mais qui sont maintenant rapportés par le calendrier dans le fuseau horaire mis à jour du serveur.Étant donné que les nouvelles proviennent de différents pays avec leurs propres horaires d’heure d’été, et que votre serveur peut être situé dans une région avec un autre calendrier, l’heure des publications de nouvelles peut visuellement « sauter » en avant et en arrière sur les graphiques, même de manière plus étrange (par exemple, pendant plusieurs semaines au printemps et à l’automne).Tout cela ne semble pas si important en ligne, mais que faire si nous voulons tester une stratégie basée sur les nouvelles ?Oui, vous pouvez dire que le calendrier n’est pas pris en charge dans le testeur MetaTrader de manière native, mais de nombreux traders aiment trader les nouvelles, et tous les autres doivent suivre les nouvelles pour simplement se retirer du marché avant qu’il ne devienne fou pendant les annonces. C’est pourquoi le backtesting avec le calendrier est important. C’est pourquoi il est très logique d’exporter le calendrier vers un stockage externe (fichier, base de données) puis de l’importer dans le testeur. Un de ces outils d’archivage pour vivre l’expérience du calendrier dans le testeur a été présenté dans le livre sur l’algotrading.Et ici, nous tombons sur le problème de désynchronisation des cotations historiques avec les événements historiques. Pour simplifier, ce problème a été laissé non résolu dans le livre.Maintenant, il est résolu grâce à la version étendue de CalendarCache.mqh et l’indicateur de démonstration CalendarMonitorCachedTZ.mq5. C’est juste une version légèrement modifiée de CalendarMonitorCached.mq5 du livre.L’indicateur surveille les événements d’actualité et met à jour dynamiquement un tableau sur le graphique avec plusieurs événements passés et à venir.Tout le travail lié à la correction temporelle se fait en coulisses - dans l’autre bibliothèque publique TimeServerDST.mqh. Pour mieux comprendre comment fonctionne la correction temporelle, vous pouvez utiliser le script &nbsp;CalendarCSVForDates.mq5&nbsp; et comparer les fichiers CSV avec et sans correction côte à côte.Et voici comment la bibliothèque est intégrée dans les codes sources des deux programmes - le script et cet indicateur.#include &lt;TimeServerDST.mqh&gt; // l'inclusion avant le cache de calendrier permet le support de correction de fuseau horaire #include &lt;MQL5Book/CalendarFilterCached.mqh&gt; #include &lt;MQL5Book/CalendarCache.mqh&gt;Comme dans l’indicateur original, il y a l’entrée de chaîne CalendarCacheFile, où vous pouvez fournir un nom de fichier de calendrier pour l’écriture ou la lecture.Lorsque l’indicateur est attaché à un graphique en ligne avec un CalendarCacheFile vide, il fonctionne avec le calendrier intégré à la volée.Lorsque l’indicateur est exécuté avec un nom spécifique dans CalendarCacheFile et que le fichier n’existe pas, l’indicateur exporte les enregistrements du calendrier dans le fichier de cache (crée le fichier) et se termine. C’est à ce moment que les timestamps doivent/p peuvent être corrigés (voir FixCachedTimesBySymbolHistory ci-dessous).Lorsque l’indicateur est exécuté avec un nom de fichier de cache existant dans CalendarCacheFile, il charge le cache et travaille avec cette copie de la même manière qu’avec le calendrier intégré. Cela est particulièrement utile pour le testeur.Veuillez ne pas oublier que le testeur nécessite de spécifier des fichiers supplémentaires, dans notre cas - le fichier de calendrier en ligne préparé, dans la directive #property tester_file OU vous devez placer le fichier de calendrier dans le dossier commun C:/Users/&lt;User&gt;/AppData/Roaming/MetaQuotes/Terminal/Common/.Bien sûr, le cache peut également être chargé dans un EA pendant les backtests et les optimisations.La chaîne d’entrée FixCachedTimesBySymbolHistory est traitée de la manière suivante.Si elle est vide, l’indicateur sauvegarde le cache sans corrections temporelles.Pour activer les corrections temporelles lors de l’exportation, vous devez spécifier un symbole, qui sera utilisé pour la détection empirique des fuseaux horaires historiques du serveur. Il fonctionne sur la base de l’historique des cotations H1, de préférence "XAUUSD" ou "EURUSD".Avec l’aide de cette entrée, seules quelques lignes sont ajoutées dans la nouvelle version de l’indicateur :&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(StringLen(FixCachedTimesBySymbolHistory)) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cache[].adjustTZonHistory(FixCachedTimesBySymbolHistory, true); La méthode adjustTZonHistory a été spécifiquement introduite dans la classe CalendarCache pour les ajustements des timestamps et son implémentation utilise les internes de TimeServerDST.mqh.La méthode doit être appelée en ligne uniquement (pas dans le testeur).Normalement, la méthode doit être appelée sur des objets de cache remplis à partir du calendrier intégré, immédiatement après le remplissage. Sinon, si le cache est chargé à partir d’un fichier de calendrier, ou si la méthode a déjà été appelée auparavant, le contenu du cache pourrait déjà avoir été ajusté. Ensuite, vous appliquerez une correction sur une correction et obtiendrez de faux timestamps.Le second paramètre (true) indique à la méthode d’écrire les limites des changements appliqués dans le journal. Quelque chose comme ça :La correction temporelle a commencé à 2021.07.19 00:30:00 2021.07.19 00:30:00: 148786 -10800 diff=-3600 2021.11.08 01:50:00: 135918 -7200 OK 2022.03.14 04:30:00: 161085 -10800 diff=-3600 2022.11.07 04:00:00: 165962 -7200 OK 2023.03.13 01:50:00: 168500 -10800 diff=-3600 2023.11.06 01:50:00: 169270 -7200 OK 2024.03.11 01:50:00: 181258 -10800 diff=-3600 2024.11.04 02:30:00: 208469 -7200 OK Chaque ligne contient une heure et un ID d’événement où une nouvelle divergence a été détectée, le décalage horaire du serveur à l’événement, et quelle différence doit être appliquée à tous les timestamps suivants afin d’éliminer le biais dans l’heure du serveur au moment de la mise en cache du calendrier.Les fichiers mqh joints (CalendarFilter.mqh, CalendarCache.mqh, QuickSortStructT(Ref).mqh) contiennent des corrections et des améliorations par rapport à leurs versions originales du livre.Mises à jour11.11.2024 - petite correction et mises à jour dans CalendarFilter.mqh, CalendarCache.mqh;22.11.2024 - petites corrections et améliorations dans CalendarCache.mqh.

2024.11.11
Indicateur de Prix Extremes pour MetaTrader 5 : Maximisez votre Analyse
MetaTrader5
Indicateur de Prix Extremes pour MetaTrader 5 : Maximisez votre Analyse

Vous cherchez à optimiser votre analyse des marchés ? Cet indicateur est conçu pour marquer les extrêmes avec des lignes claires. Grâce à un paramètre de période, il détermine les plus hauts et les plus bas pour cette période précise. Ce qui est intéressant, c'est que cet indicateur ne se contente pas d'utiliser les niveaux OHLC, mais inclut également les prix d'achat (bid) et de vente (ask) de chaque barre. Un chiffre de retour en arrière permet de restreindre le traitement à un nombre spécifique de barres, ce qui vous aide à garder un œil sur l'essentiel sans vous perdre dans les détails. Une autre fonctionnalité de cet indicateur est sa capacité à ne pas peindre sur les zones de rupture de structure. En d'autres termes, lorsqu'un plus haut perçu est dépassé ou qu'un plus bas est cassé, certaines sections des lignes disparaissent. Cela signifie que seules les lignes sur les véritables zones de support et de résistance sont affichées. Cette fonctionnalité est contrôlée par un paramètre, donc si vous le souhaitez, vous pouvez également voir les lignes aux prix extrêmes, ainsi que leur inclinaison lorsque le marché est en tendance haussière ou baissière. ---------------------------------------------------- Nouveautés de la version 2.0 - Utilisation d'une optimisation qui ne prend en compte que les ticks de la barre actuelle, permettant ainsi à l'indicateur de fonctionner sans accroc sur des périodes plus longues. - Suppression des buffers inutiles pour une performance améliorée.

2024.11.09
Indicateur Hammer : Détection des Points de Reversal sur MetaTrader 5
MetaTrader5
Indicateur Hammer : Détection des Points de Reversal sur MetaTrader 5

L'indicateur Hammer est un outil précieux pour les traders utilisant MetaTrader 5, car il permet d'identifier des formations de chandeliers clés, notamment les marteaux verts et rouges ainsi que les marteaux inversés. Cet indicateur met en lumière les points de retournement potentiels des prix en analysant la structure des chandeliers sur chaque bougie. Un marteau se caractérise généralement par un petit corps et une longue mèche inférieure, ce qui indique une pression d'achat potentielle après une tendance baissière. À l'inverse, un marteau inversé présente une longue mèche supérieure et peut suggérer un possible retournement après une tendance haussière. Pour détecter ces formations, l'indicateur calcule la taille et le rapport des mèches et des corps de chandeliers, en utilisant trois paramètres principaux personnalisables : MaxRatioShortWick : Définit le ratio maximum pour la mèche courte par rapport au chandelier complet, filtrant ainsi les formations avec des mèches supérieures minimales. MinRatioLongWick : Établit le ratio minimum pour la mèche longue, garantissant que les formations détectées possèdent des longueurs de mèches significatives par rapport au corps du chandelier. MinCandleSize : Spécifie la taille minimale du chandelier requise pour être qualifiée de motif marteau ou marteau inversé. Une fois un motif identifié, l'indicateur affiche une flèche de couleur (verte ou rouge) sur le graphique, positionnée près du prix le plus haut ou le plus bas du chandelier, en fonction de la direction du motif. Les fonctions dans le code gèrent la création et le positionnement de ces objets graphiques, ainsi que le nettoyage de ces objets lorsque l'indicateur est retiré du graphique. Cet indicateur est idéal pour les traders cherchant à repérer des retournements potentiels. Ses paramètres peuvent être ajustés pour s'adapter à différents intervalles de temps et conditions de marché. C'est un outil polyvalent qui peut compléter diverses stratégies de trading en offrant des signaux visuels précoces pour des changements de prix potentiels.

2024.10.31
Comprendre l'Indicateur Semaine et Jour pour MetaTrader 5 : Un Outil Incontournable
MetaTrader5
Comprendre l'Indicateur Semaine et Jour pour MetaTrader 5 : Un Outil Incontournable

L'indicateur SemaineJours est un outil précieux pour tous les traders utilisant MetaTrader 5. Il affiche le Jour de la Semaine, la Semaine de l'Année, le Jour de l'Année ou l'index de barre dans la fenêtre de données, et optionnellement dans des étiquettes sur le graphique. Comme d'habitude, les informations dans la fenêtre de données sont mises à jour dynamiquement selon les mouvements de la souris : le nom du jour est toujours rapidement actualisé dans la colonne de gauche, tandis que le contenu de la colonne de droite est défini par les paramètres, notamment les entrées PartieEntière et PartieFractionnaire. Chacune d'elles permet de choisir une des entités à afficher : Jour de la Semaine, Semaine de l'Année, Jour de l'Année, Index de Barre, ou Aucune. PartieEntière - sélecteur pour le nombre devant le point décimal ; PartieFractionnaire - sélecteur pour le nombre après le point décimal ; Les deux propriétés sélectionnées (nombres entiers) sont combinées en une seule valeur décimale pour chaque barre et stockées dans le tampon de l'indicateur. Évidemment, le tampon est rendu invisible sur le graphique grâce au style DRAW_NONE, car ses valeurs sont synthétiques. Par exemple, sur la capture d'écran ci-dessous, le nom du jour est Mar, et le tampon contenant Semaine.JdA (Index du Jour de l'Année) affiche la valeur 44.302, ce qui correspond à la 44ème semaine et au 302ème jour de l'année, respectivement. Les autres paramètres permettent à l'utilisateur de spécifier s'il souhaite afficher des Étiquettes sur le graphique, quel NomDePolice, TailleDePolice, CouleurDePolice utiliser, ainsi que le Padding des bords supérieur/inferieur, comment les Aligner (haut/milieu/bas), et un AngleDeRotation optionnel pour un alignement central. La couleur par défaut clrNONE pour la CouleurDePolice signifie que la couleur sera inversée par rapport à l'arrière-plan actuel du graphique.

2024.10.29
AutoFibo : L'indicateur ZigZag pour des niveaux de Fibonacci automatiques sur MetaTrader 5
MetaTrader5
AutoFibo : L'indicateur ZigZag pour des niveaux de Fibonacci automatiques sur MetaTrader 5

Caractéristiques : Niveaux de Fibonacci Automatiques : Cet indicateur trace dynamiquement des lignes de retracement de Fibonacci basées sur les derniers sommets et creux du ZigZag, offrant ainsi une vue claire des points de retournement potentiels. Options de Fibonacci Dynamiques et Statistiques : Les utilisateurs peuvent choisir entre des niveaux de retracement de Fibonacci dynamiques qui se mettent à jour en continu selon les derniers points du ZigZag, ou des niveaux statiques qui restent fixes sur le dernier sommet ou creux significatif. Apparence Personnalisable : Vous avez la possibilité d'ajuster la couleur, le style et la largeur des lignes de Fibonacci, tant pour les niveaux dynamiques que pour les niveaux statiques, permettant ainsi une visualisation personnalisée adaptée à différents arrière-plans de graphique. Optimisé pour MetaTrader 5 : L'indicateur exploite pleinement la gestion des objets graphiques de MT5, offrant une expérience de charting fluide et efficace. Paramètres : Réglages ZigZag (ExtDepth, ExtDeviation, ExtBackstep) : Ajustez la sensibilité du motif ZigZag pour capturer plus ou moins de mouvements de prix. Réglages de Fibonacci Dynamiques : Personnalisez la couleur, le style de ligne et la largeur des lignes de retracement de Fibonacci dynamiques. Réglages de Fibonacci Statique : Personnalisez l'apparence des lignes de Fibonacci statiques en fonction du deuxième sommet/creux le plus récent du ZigZag. Comment Utiliser : L'indicateur AutoFibo est idéal pour des stratégies de trading suivant la tendance et les retournements. En superposant les niveaux de Fibonacci sur le motif ZigZag, il permet aux traders d'évaluer visuellement les niveaux de retracement et les points d'entrée/sortie potentiels. Cet indicateur peut être utilisé sur différentes unités de temps, le rendant polyvalent tant pour le trading intrajournalier que pour le trading à long terme.

2024.10.25
Outil de Calcul du Volume de Trading - Indicateur pour MetaTrader 5
MetaTrader5
Outil de Calcul du Volume de Trading - Indicateur pour MetaTrader 5

Bienvenue à tous les traders ! Aujourd'hui, je vais vous parler d'un outil pratique qui va vous faciliter la vie : l'outil de calcul du volume de trading. Qu'est-ce que cet outil ? C'est un logiciel qui vous permet de calculer la taille de votre lot en fonction d'un pourcentage de risque et du niveau de stop loss que vous avez défini. Pour l'utiliser, il vous suffit de cliquer sur le graphique pour placer un stop loss virtuel, et l'outil se chargera de calculer automatiquement la taille du lot en fonction du pourcentage de risque que vous avez appliqué. Achat ou Vente : Comment ça marche ? Vous aurez également la possibilité de choisir entre acheter ou vendre dans la section d'entrée, selon que vous souhaitez calculer le risque à partir du prix demandé (pour les positions d'achat) ou du prix proposé (pour les positions de vente). Attention aux intervalles de temps ! Gardez à l'esprit qu'un stop loss éloigné sur des intervalles de temps plus élevés impliquera un risque plus important, car le prix est multiplié par un plus grand nombre de points. Comment utiliser cet outil ? Il devrait fonctionner pour tous les types de titres financiers. La taille du lot est calculée directement en fonction du pourcentage de risque que vous avez entré et de la distance du stop loss. Il est important de noter que ce chiffre ne prend pas en compte le nombre maximum de lots négociables sur votre compte (selon la taille de votre compte et votre effet de levier). Si vous voulez connaître la limite supérieure pour la taille de lot autorisée, je vous recommande d'utiliser mon script de volume maximal de trading.

2024.09.28
PTB : Un Indicateur Pratique pour MetaTrader 5
MetaTrader5
PTB : Un Indicateur Pratique pour MetaTrader 5

Description de l'Indicateur : PTB.mq5 Aperçu : L'indicateur PTB.mq5 est spécialement conçu pour la plateforme de trading MetaTrader 5. Il calcule et affiche les niveaux de prix élevés et bas à court et long terme, ainsi que les niveaux de retracement de Fibonacci basés sur ces extrêmes. Caractéristiques : - Prix Élevés et Bas à Court Terme : L'indicateur calcule les prix les plus élevés et les plus bas sur une période courte définie par l'utilisateur, ce qui peut aider les traders à identifier des niveaux de support et de résistance immédiats. - Prix Élevés et Bas à Long Terme : Il calcule également les prix les plus élevés et les plus bas sur une période plus longue, fournissant des perspectives sur les tendances du marché à plus grande échelle. - Niveaux de Fibonacci : L'indicateur trace des niveaux de retracement de Fibonacci importants (23,6 %, 38,2 %, 50 %, 61,8 % et 78,6 %) basés sur les niveaux élevés et bas à long terme, largement utilisés par les traders pour identifier les points de retournement potentiels sur le marché. Paramètres d'Entrée : - shortLength : Le nombre de bougies à considérer pour le calcul des prix élevés et bas à court terme. - longLength : Le nombre de bougies à considérer pour le calcul des prix élevés et bas à long terme. Représentation Visuelle : - L'indicateur utilise des couleurs et des largeurs distinctes pour les différentes lignes tracées : &nbsp; - Prix Élevé Court : Rouge (largeur : 3) &nbsp; - Prix Bas Court : Bleu (largeur : 3) &nbsp; - Prix Élevé Long : Vert (largeur : 3) &nbsp; - Prix Bas Long : Orange (largeur : 3) &nbsp; - Niveaux de Fibonacci :&nbsp; &nbsp; &nbsp; &nbsp; - 78,6 % : Violet (largeur : 1) &nbsp; &nbsp; - 23,6 % : Aqua (largeur : 1) &nbsp; &nbsp; - 38,2 % : Jaune (largeur : 1) &nbsp; &nbsp; - 61,8 % : Marron (largeur : 1) &nbsp; &nbsp; - 50 % : Blanc (largeur : 3) Logique de Calcul : - L'indicateur parcourt les données de prix pour calculer les valeurs les plus élevées et les plus basses pour les périodes courtes et longues. - Il calcule ensuite les niveaux de Fibonacci basés sur la différence entre les niveaux élevés et bas à long terme.

2024.09.22
ChartObjectsCopyPaste : L'outil ultime pour copier-coller vos objets graphiques sur MetaTrader 5
MetaTrader5
ChartObjectsCopyPaste : L'outil ultime pour copier-coller vos objets graphiques sur MetaTrader 5

Salut les traders ! Avez-vous déjà eu besoin de copier et coller des objets graphiques entre plusieurs graphiques ouverts ? Je suis sûr que oui ! Étonnamment, MetaTrader ne propose pas de fonctionnalité de "Copier &amp; Coller" pour les objets. La seule solution qui s'en rapproche est l'utilisation de templates (fichiers tpl). Cependant, ces templates enregistrent l'état complet du graphique, y compris les indicateurs, les paramètres, et tout un tas de choses qui peuvent être superflues pour ce que vous souhaitez vraiment faire. C'est pourquoi j'ai développé cet indicateur ChartObjectsCopyPaste.mq5. Il vous permet de copier les objets sélectionnés dans le presse-papiers, afin de les coller sur d'autres graphiques. Pas de complications ! Cette solution est basée sur un autre indicateur publié dans le livre d'algotrading - ObjectGroupEdit.mq5. Pour en savoir plus sur toutes les classes sous-jacentes (ObjectMonitor, MapArray et d'autres), n'hésitez pas à suivre le lien. Un petit point technique : cet indicateur n'a pas de buffers. Il doit être attaché à au moins deux graphiques : le graphique source d'où vous souhaitez copier les objets, et le graphique cible sur lequel vous prévoyez de les coller. En cours d'exécution sur un graphique, l'indicateur suit les objets graphiques existants et note lesquels sont sélectionnés. Comment utiliser les commandes "Copier &amp; Coller" : Appuyez sur la touche Ctrl+Q pour copier tous les objets sélectionnés dans le presse-papiers de Windows sous forme de texte (vous pouvez sauvegarder et visualiser cela dans n'importe quel éditeur de texte, un exemple est donné ci-dessous). Sur le graphique cible, appuyez sur Ctrl+J pour coller tous les objets depuis le presse-papiers. Pourquoi Ctrl+Q/Ctrl+J ? Ce sont simplement deux combinaisons de touches libres choisies parmi très peu. En effet, MetaTrader intercepte et ne transmet pas beaucoup de raccourcis aux programmes MQL. En particulier, les combinaisons standard Ctrl+C/Ctrl+V/Ctrl+Ins/Shift+Ins ne fonctionnent pas dans ce contexte. Comme le code source est disponible, vous pouvez modifier les raccourcis selon vos préférences. Attention : Comme l'indicateur utilise des DLL système pour accéder au presse-papiers de Windows, vous devez autoriser les imports de DLL dans la boîte de dialogue Propriétés, sur l'onglet Dépendances. Étant donné que le Codebase n'autorise pas les imports de DLL, le code lié au presse-papiers est encapsulé dans une directive de préprocesseur conditionnelle #ifdef&nbsp;DLL_LINK. Pensez donc à décommenter la ligne #define DLL_LINK avant la compilation. Sinon, vous risquez de voir des alertes en réponse à vos pressions sur les touches sans que les actions ne soient exécutées ! Options de l'indicateur : MakeAllSelectable - Un indicateur pour rendre tous les objets sélectionnables (ce qui est normalement faux pour les objets créés par programmation); LogDetails - Un drapeau pour afficher toutes les propriétés des objets transférés dans le journal; L'indicateur ne vérifie pas si les objets collés correspondent au graphique cible réel, comme le symbole, la plage de prix, le nombre de sous-fenêtres, etc. - c'est à vous de le faire. Exemple de texte du presse-papiers avec 2 objets : OBJ_VLINE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; H1 Ligne verticale 5578&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 enum ENUM_OBJECT_PROPERTY_INTEGER 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OBJPROP_COLOR&nbsp;&nbsp; 55295 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OBJPROP_STYLE&nbsp;&nbsp; 2 2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OBJPROP_WIDTH&nbsp;&nbsp; 1 3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OBJPROP_BACK&nbsp;&nbsp;&nbsp;&nbsp;0 4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OBJPROP_SELECTED&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1 7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OBJPROP_TYPE&nbsp;&nbsp;&nbsp;&nbsp;0 8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OBJPROP_TIME&nbsp;&nbsp;&nbsp;&nbsp;1726739940 10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OBJPROP_SELECTABLE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1 11&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OBJPROP_CREATETIME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1726847009 12&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OBJPROP_TIMEFRAMES&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2097151 200&nbsp;&nbsp;&nbsp;&nbsp; OBJPROP_LEVELS&nbsp;&nbsp;0 207&nbsp;&nbsp;&nbsp;&nbsp; OBJPROP_ZORDER&nbsp;&nbsp;0 208&nbsp;&nbsp;&nbsp;&nbsp; OBJPROP_HIDDEN&nbsp;&nbsp;0 1032&nbsp;&nbsp;&nbsp;&nbsp;OBJPROP_RAY&nbsp;&nbsp;&nbsp;&nbsp; 1 enum ENUM_OBJECT_PROPERTY_DOUBLE 9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OBJPROP_PRICE&nbsp;&nbsp; 1.11449 enum ENUM_OBJECT_PROPERTY_STRING 5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OBJPROP_NAME&nbsp;&nbsp;&nbsp;&nbsp;H1 Ligne verticale 5578 6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OBJPROP_TEXT&nbsp;&nbsp;&nbsp;&nbsp; 206&nbsp;&nbsp;&nbsp;&nbsp; OBJPROP_TOOLTIP OBJ_CHANNEL&nbsp;&nbsp;&nbsp;&nbsp; H1 Canal équidistant 40885&nbsp;&nbsp;&nbsp;&nbsp;5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 enum ENUM_OBJECT_PROPERTY_INTEGER 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OBJPROP_COLOR&nbsp;&nbsp; 255 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OBJPROP_STYLE&nbsp;&nbsp; 0 2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OBJPROP_WIDTH&nbsp;&nbsp; 1 3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OBJPROP_BACK&nbsp;&nbsp;&nbsp;&nbsp;0 4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OBJPROP_SELECTED&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1 7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OBJPROP_TYPE&nbsp;&nbsp;&nbsp;&nbsp;5 8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OBJPROP_TIME&nbsp;&nbsp;&nbsp;&nbsp;1726758000 8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OBJPROP_TIME.1&nbsp;&nbsp;1726797600 8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OBJPROP_TIME.2&nbsp;&nbsp;1726758000 10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OBJPROP_SELECTABLE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1 11&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OBJPROP_CREATETIME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1726847883 12&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OBJPROP_TIMEFRAMES&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2097151 200&nbsp;&nbsp;&nbsp;&nbsp; OBJPROP_LEVELS&nbsp;&nbsp;0 207&nbsp;&nbsp;&nbsp;&nbsp; OBJPROP_ZORDER&nbsp;&nbsp;0 208&nbsp;&nbsp;&nbsp;&nbsp; OBJPROP_HIDDEN&nbsp;&nbsp;0 1003&nbsp;&nbsp;&nbsp;&nbsp;OBJPROP_RAY_LEFT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0 1004&nbsp;&nbsp;&nbsp;&nbsp;OBJPROP_RAY_RIGHT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 1031&nbsp;&nbsp;&nbsp;&nbsp;OBJPROP_FILL&nbsp;&nbsp;&nbsp;&nbsp;0 enum ENUM_OBJECT_PROPERTY_DOUBLE 9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OBJPROP_PRICE&nbsp;&nbsp; -28.113879003558715 9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OBJPROP_PRICE.1 -21.708185053380777 9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OBJPROP_PRICE.2 -48.04270462633452 enum ENUM_OBJECT_PROPERTY_STRING 5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OBJPROP_NAME&nbsp;&nbsp;&nbsp;&nbsp;H1 Canal équidistant 40885 6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OBJPROP_TEXT&nbsp;&nbsp;&nbsp;&nbsp; 206&nbsp;&nbsp;&nbsp;&nbsp; OBJPROP_TOOLTIP Et voici les objets collés sur le graphique :

2024.09.21
Optimisez vos Trades avec l'Indicateur RSI EMA Engulfing Bar V3 sur MetaTrader 5
MetaTrader5
Optimisez vos Trades avec l'Indicateur RSI EMA Engulfing Bar V3 sur MetaTrader 5

Bienvenue à tous les traders passionnés ! Aujourd'hui, nous allons parler d'un outil incroyable pour améliorer vos stratégies de trading sur MetaTrader 5 : l'indicateur RSI EMA Engulfing Bar V3. Cet outil est conçu pour repérer des opportunités d'achat potentielles en se basant sur plusieurs indicateurs techniques et des modèles d'action des prix. Voici comment cela fonctionne : Conditions d'Achat 1. Condition RSI : Le Relative Strength Index (RSI) pour la période actuelle est en dessous d'un seuil bas spécifié (RsiLow). Cela indique des conditions de survente. 2. Modèle de Chandeliers : Nous vérifions un modèle de chandeliers spécifique sur trois bougies consécutives : La bougie actuelle (1) clôture au-dessus de son ouverture (haussière). La bougie précédente (2) clôture en dessous de son ouverture (baissière). La clôture de la bougie actuelle est au-dessus de l'ouverture de la bougie précédente. La clôture de la bougie actuelle est en dessous du plus haut de la bougie précédente. 3. Conditions des Moyennes Mobiles : La clôture de la bougie actuelle est en dessous de l'EMA (Moyenne Mobile Exponentielle). Une EMA à long terme (Shiftpast) est en dessous d'une EMA à court terme (Shiftnow), indiquant une potentielle tendance haussière. Vous avez la possibilité de modifier le décalage des EMA, par exemple, utiliser des chiffres comme 5-6 pour un achat, ce qui signifie que 5 bougies auparavant, l'EMA ID5 était au-dessus de l'EMA ID6. Vous pouvez également ajuster à 3-4 ou 7-9 ou 10-13. 4. Signal d'Achat : Lorsque toutes les conditions sont remplies, l'alerte génère un signal "Achat" avec une flèche vers le haut au bas de la bougie actuelle. Cette alerte est conçue pour identifier les configurations de retournement potentiels, qu'ils soient haussiers ou baissiers. Elle recherche des conditions de survente (RSI bas) combinées à un modèle de chandelier spécifique qui suggère que la pression d'achat commence à surpasser la pression de vente. Les conditions des moyennes mobiles aident à confirmer la direction générale de la tendance.

2024.09.13
Premier Précédent 4 5 6 7 8 9 10 11 12 13 14 Suivant Dernier