Voir comment télécharger gratuitement des robots de trading
Retrouvez-nous sur Twitter !
Rejoignez notre page de fans
Un script intéressant ?
Poster un lien vers celui-ci -
laisser les autres l'évaluer
Vous avez aimé le script ? Essayez-le dans le terminal MetaTrader 5
Vues:
76
Note:
(48)
Publié:
\MQL5\Include\
MQL5 Freelance 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 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 2 : Zigzag2 R avec les paramètres [12;5;3]



Figure 3 : Zigzag2 R avec les paramètres [12;0;0]

Figure 3 : Zigzag2 R avec les paramètres [12;0;0]

À première vue, il semblerait que la figure 3 soit correcte, mais.. :

  1. 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.
  2. 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 4. Paramètres [12;0]


Figure 5. Paramètres [23;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 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

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

Show Positions on Custom Chart (or standard chart) for MT5 Show Positions on Custom Chart (or standard chart) for MT5

Cet indicateur est un utilitaire qui permet d'afficher des niveaux de transaction étiquetés sur n'importe quel graphique. Si vous souhaitez remplacer vos niveaux de prix natifs sur un graphique natif, désactivez l'option "Show trade levels" dans les propriétés du graphique F8 et attachez cet indicateur. Si vous souhaitez afficher les niveaux de transaction sur un graphique personnalisé (où les niveaux de transaction natifs ne peuvent pas être affichés), attachez simplement cet indicateur. BaseSymbol - spécifie le symbole à partir duquel les données de niveau de transaction seront tirées - pratique pour les symboles personnalisés uniques. TextBarsBack - spécifie le nombre de barres en arrière dans l'historique à partir de la barre actuelle où les étiquettes de niveau seront dessinées. Note : Bien que le nombre magique soit référencé dans le code, il n'est pas actuellement inclus dans les lignes de transaction. Si vous exécutez plusieurs EA sur le même symbole, vous pouvez modifier le code pour afficher les nombres magiques et exécuter plusieurs instances de l'indicateur sur un graphique. Vous pouvez également modifier la taille des polices et l'espacement du texte dans les propriétés de l'objet en fonction des différentes résolutions d'affichage.

Baseline: iMA + ATR Bands Baseline: iMA + ATR Bands

Combine une moyenne mobile avec des bandes supérieures et inférieures basées sur l'ATR pour agir comme un filtre de tendance et un canal de volatilité.

Export Indicator's Values Export Indicator's Values

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

Bibliothèque de fonctions de hachage et de conversions vers d'autres systèmes numériques Bibliothèque de fonctions de hachage et de conversions vers d'autres systèmes numériques

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.