Rejoignez notre page de fans
- Vues:
- 36
- Note:
- Publié:
-
Besoin d'un robot ou d'un indicateur basé sur ce code ? Commandez-le sur Freelance Aller sur Freelance
Attention ! Cet indicateur est basé sur une des versions du code Just ZZ (zig-zag) et est publié ici avec la permission de l'auteur du CPP (j'ai été directement impliqué dans les tests et j'ai signalé les erreurs dans l'algorithme). Ce code est une version réécrite de l'indicateur pour la plateforme MetaTrader 4.
Attention ! La bibliothèque "AlexSTAL_OutsideBar.mqh" doit être placée dans le dossier terminal ..\MQL5\Include\.
Qu'est-ce que ZigZag ?
De mon point de vue, un ZigZag est une sorte de compression du graphique de prix. Le ZigZag peut être basé soit sur le prix d'une seule barre (par exemple, seulement la clôture), soit sur le haut et le bas (le type de construction le plus courant).
En étudiant et en travaillant avec l'indicateur ZigZag standard, certaines erreurs et lacunes de la solution typique de MetaQuotes ont été révélées. Le plus gros problème est que l'indicateur ZigZag standard ne gère pas la situation d'une barre extérieure.
En 2007, Rosh a publié une version de l'indicateur Zigzag2 R, qui était censée utiliser l'algorithme de traitement de la barre extérieure (en utilisant le style de dessin DRAW_ZIGZAG au lieu de DRAW_SECTION, qui permet de placer les extrema ZigZag sur une barre), mais pour des raisons inconnues même de lui, la version sur le site ne contient pas le code nécessaire.
Pour poursuivre la conversation, j'aimerais formuler ma définition de l'exactitude de la construction d'un ZigZag typique :
- Les Extrema High et Low doivent être strictement alternés ;
- L'extremum Haut doit avoir la valeur maximale (ou égale) parmi toutes les barres situées sur le côté droit jusqu'à l'extremum Bas suivant (opposé) ;
- L'extremum bas doit avoir la valeur minimale (ou égale) parmi toutes les barres situées à droite jusqu'à l'extremum haut suivant (opposé).
Examinons un exemple très illustratif (EURUSD H1 8-13 décembre 2006), où deux situations avec une barre extérieure se produisent simultanément, qui ne sont pas correctement traitées par les indicateurs typiques.
Figure 1 : ZigZag typique avec les paramètres [12;5;3] et [12;0;0]
Figure 2 : Zigzag2 R avec les paramètres [12;5;3]
Figure 3 : Zigzag2 R avec les paramètres [12;0;0]
À première vue, il semblerait que la figure 3 soit correcte, mais.. :
- Il s'agit de paramètres appariés, et l'exactitude de la formation devrait être préservée avec n'importe quel paramètre.
- La barre extérieure de gauche n'est pas traitée correctement car l'ordre de formation de la barre High/Low est important :
et par conséquent l'ordre des segments ZigZag.
Les ZigZag suivants ont été testés au cours de la recherche (pas seulement sur la période publiée) : ZigZag MT3, ZigZag, ZigZag R, Zigzag2 R, ZigZag_NK, ZigZag_ZUP89_nen, ZigZag_new_nen4, CZigZag, Swing_ZZZ_1, DT_ZZ_nen, ZigZag_Talex, Reverse_ZZ, Points_ZZZ_1, i_MF_Fractal_ZZ_3in1, ang_Amp_ZZZ, ZigzagFr_v1, NonLagZigZigZag_v2, ZZ_FF_v3, ZigZag Ensign, ZigZag tauber, SQZZ Commodore, ZZ_2L_nen wellx, Channel ZZ, Azzx_larryzz_3_0, RPoint, RPoint-m v2, ZigZagTF. Aucun d'entre eux n'a réussi à faire face à la tâche qui lui incombait.
Chiffres de cet indicateur sur la zone étudiée :
Figure 4. Paramètres [12;0]
Figure 5. Paramètres [23;0]
Caractéristiques et particularités du ZigZag publié :
- Passage unique ;
- Seul le dernier segment est recalculé et redessiné (le segment ne peut pas être annulé, sauf pour le téléchargement de l'historique) ;
- Il existe un mécanisme d'optimisation des calculs à l'intérieur d'une barre (il n'est pas recalculé sur un tick si le prix a changé à l'intérieur de la barre zéro ou si ses changements n'ont pas été supérieurs au seuil minimum spécifié dans la variable MinMotion) ;
- Deux algorithmes pour obtenir l'ordre de formation des barres High/Low : par type de barre (rapide, mais peu fiable) et par les données d'une période plus courte (un historique est nécessaire : contrôle indépendant de sa présence et adéquation ou modification de la bibliothèque OutsideBar).
La version ProExtra n'est pas publiée, car la question de l'exactitude des cotations dans MetaTrader 5 n'a pas encore été étudiée.
Autres exemples de fonctionnement incorrect d'autres ZigZags
Figure 6 : EURUSD H1 29 novembre-7 décembre 2010. Ligne rouge ZigZag avec paramètres [7;0;0]. Ligne bleue Zigzag2 R avec paramètres [7;0;0]
Figure 7 : EURUSD H1, 29 novembre - 7 décembre 2010. Construction correcte
Conclusion
Malheureusement, cette version n'est pas exempte de défauts. Mais j'y travaille.
Et comme cet indicateur fonctionne sur le même principe du canal iHighest/iLowest (ainsi qu'un ZigZag typique), il y a parfois des tops manqués.
Merci de signaler tous les bugs et toutes les fonctionnalités de cet indicateur.Traduit du russe par MetaQuotes Ltd.
Code original : https://www.mql5.com/ru/code/263

Set Auto TP and SL: The “Set Auto TP and SL” (Take Profit and Stop Loss) feature is a crucial tool in any trading strategy, designed to automate risk and reward management. It allows traders to define fixed price levels where a trade should be automatically closed to either secure profits (TP) or limit losses (SL), removing the need for constant manual monitoring. When this feature is enabled, each position you open will automatically include a predefined Take Profit and Stop Loss level based on your custom parameters, such as a specific number of pips, percentage of balance, or technical levels. This not only saves time but also ensures that your trades are protected from sudden market movements and emotional decision-making.

Monthly VWAP (Volume Weighted Average Price) is an essential MQL5 indicator that calculates and displays the Volume Weighted Average Price for each trading month. It's a powerful tool for understanding long-term market sentiment, identifying key monthly fair value, and informing strategic decisions.

Ce script exporte les valeurs de l'indicateur vers un fichier CSV.

La bibliothèque contient des algorithmes de fonctions de hachage à usage général : adler32, CRC-32, MaHash8v64. Elle contient également des fonctions permettant de convertir une représentation décimale en chaîne de caractères dans le système de base et vice versa.