Saturday 18 February 2017

Indicateur De Moyenne Mobile Personnalisé

Moyenne mobile L'indicateur technique de la moyenne mobile indique la valeur moyenne du prix de l'instrument pour une certaine période de temps. Quand on calcule la moyenne mobile, on fait la moyenne du prix de l'instrument pour cette période. À mesure que le prix change, sa moyenne mobile augmente ou diminue. Il existe quatre types de moyennes mobiles: Simple (également appelé Arithmétique), Exponentiel. Lissé et pondéré. La moyenne mobile peut être calculée pour tout ensemble de données séquentiel, y compris les prix d'ouverture et de clôture, les prix les plus élevés et les plus bas, le volume des transactions ou tout autre indicateur. C'est souvent le cas lorsque l'on utilise des moyennes mobiles doubles. La seule chose où les moyennes mobiles de différents types divergent considérablement l'une de l'autre, est quand les coefficients de poids, qui sont affectés aux dernières données, sont différents. Dans le cas où nous parlons de moyenne mobile simple. Tous les prix de la période considérée sont égaux en valeur. La moyenne mobile exponentielle et la moyenne mobile pondérée linéaire attachent plus de valeur aux derniers prix. La façon la plus courante d'interpréter la moyenne mobile des prix est de comparer sa dynamique à celle du prix. Lorsque le prix de l'instrument s'élève au-dessus de sa moyenne mobile, un signal d'achat apparaît, si le prix tombe en dessous de sa moyenne mobile, ce que nous avons est un signal de vente. Ce système de négociation, basé sur la moyenne mobile, n'est pas conçu pour fournir une entrée sur le marché juste à son point le plus bas, et sa sortie à droite sur le pic. Il permet d'agir selon la tendance suivante: acheter peu après que les prix atteignent le fond, et vendre peu de temps après que les prix aient atteint leur sommet. Les moyennes mobiles peuvent également être appliquées aux indicateurs. C'est là que l'interprétation des moyennes mobiles des indicateurs est semblable à celle des moyennes mobiles de prix: si l'indicateur dépasse la moyenne mobile, cela signifie que le mouvement ascendant des indicateurs devrait se poursuivre: si l'indicateur tombe en dessous de sa moyenne mobile, Signifie qu'il est susceptible de continuer à aller vers le bas. Voici les types de moyennes mobiles sur le graphique: Moyenne mobile simple (SMA) Moyenne mobile exponentielle (EMA) Moyenne mobile lissée (SMMA) Moyenne mobile pondérée linéaire (LWMA) Vous pouvez tester les signaux commerciaux de cet indicateur en créant un expert Dans MQL5 Assistant. Calcul Simple moyenne mobile (SMA) Simple, en d'autres termes, la moyenne mobile arithmétique est calculée en résumant les prix de la fermeture de l'instrument sur un certain nombre de périodes simples (par exemple, 12 heures). Cette valeur est ensuite divisée par le nombre de ces périodes. SMA SOMME (FERMER (i), N) N SOMME somme CLOSE (i) période courante prix de clôture N nombre de périodes de calcul. Moyenne mobile exponentielle (EMA) La moyenne mobile exponentiellement lissée est calculée en ajoutant une certaine part du cours de clôture actuel à la valeur précédente de la moyenne mobile. Avec des moyennes mobiles exponentiellement lissées, les derniers prix de clôture ont plus de valeur. La moyenne mobile exponentielle de P-pourcentage ressemblera à: EMA (FERMER (i) P) (EMA (i - 1) (1 - P) D'une période précédente P le pourcentage d'utilisation de la valeur du prix. Moyenne mobile lissée (SMMA) La première valeur de cette moyenne mobile lissée est calculée comme la moyenne mobile simple (SMA): SUM1 SUM (CLOSE (i), N) La deuxième moyenne mobile est calculée selon cette formule: SMMA (i) (SMMA1 (N-1) FERMER (i)) N Les moyennes mobiles successives sont calculées selon la formule ci-dessous: PREVSUM SMMA (i - 1) N SMMA (i) (PREVSUM - SMMA (i - 1) N SUM somme SUM1 somme totale des prix de clôture pour N périodes elle est comptée de la barre précédente PREVSUM somme lissée de la barre précédente SMMA (i-1) moyenne mobile lissée de la barre précédente SMMA (i) moyenne mobile lissée de la barre courante (Sauf pour le premier) FERMER (i) cours de clôture courant N période de lissage. Après conversion arithmétique, la formule peut être simplifiée: SMMA (i) (SMMA (i - 1) (N - 1) FERMER (i)) N Moyenne mobile pondérée linéaire (LWMA) Dans le cas de la moyenne mobile pondérée, De plus de valeur que les premières données. La moyenne mobile pondérée est calculée en multipliant chacun des cours de clôture dans la série considérée, par un certain coefficient de pondération: LWMA SUM (FERMER i) i, N) SOMME (i, N) SOMMAIRE (i, N) somme totale des coefficients de pondération N période de lissage. Création des indicateurs personnalisés Lors de la création d'une stratégie de négociation, un développeur est souvent confronté à la nécessité de tracer graphiquement dans une fenêtre de sécurité une certaine dépendance calculée par un utilisateur. A cet effet, MQL4 offre la possibilité de créer des indicateurs personnalisés. Custom Indicator est un programme d'application codé en MQL4 qui est essentiellement destiné à l'affichage graphique des dépendances calculées au préalable. Structure de l'indicateur personnalisé Nécessité des tampons Le principe principal sous-jacent aux indicateurs personnalisés est de transmettre des valeurs de tableaux d'indicateurs à un terminal client (pour tracer des lignes d'indicateur) via des tampons d'échange. Buffer est une zone de mémoire contenant des valeurs numériques d'un tableau indicateur. La norme MQL4 implique la possibilité d'établir jusqu'à huit lignes indicatrices à l'aide d'un indicateur personnalisé. Un réseau indicateur et un tampon sont mis en correspondance avec chaque ligne indicatrice. Chaque tampon a son propre index. L'index du premier tampon est 0, du second - 1, et ainsi de suite, le dernier a l'index 7. Fig. 115 montre comment les informations d'un indicateur personnalisé sont transmises via des tampons à un terminal client pour dessiner des lignes d'indicateur. Figue. 115. Transmettre des valeurs de tableaux d'indicateurs via un tampon à un terminal client. L'ordre général des lignes indicatrices du bâtiment est le suivant: 1. Les calculs sont effectués dans un indicateur personnalisé, de sorte que les valeurs numériques sont affectées aux éléments du tableau indicateur. 2. Les valeurs des éléments du tableau indicateur sont envoyées à un terminal client via des tampons. 3. Sur la base des tableaux de valeurs reçus des tampons, un terminal client affiche des lignes indicatrices. Composants d'un indicateur personnalisé Permet d'analyser un simple indicateur personnalisé qui montre deux lignes - une ligne est construit sur la base des prix maximaux de barre, la seconde utilise des prix minimaux. Exemple d'un indicateur personnalisé simple userindicator. mq4 Permet d'analyser en détails les éléments indicateurs. Dans tout programme d'application écrit en MQL4, vous pouvez indiquer les paramètres de configuration qui assurent l'entretien correct du programme par un terminal client. Dans cet exemple, la partie principale du programme (voir Structure du programme) contient plusieurs lignes avec la propriété directives. La première directive indique dans quelle fenêtre le terminal client doit tracer les lignes indicatrices: Dans MQL4, il existe deux variantes de lignes d'indicateur de dessin: dans la fenêtre de sécurité principale et dans une fenêtre séparée. La fenêtre principale est la fenêtre contenant un diagramme de sécurité. Dans cet exemple, l'indicateur de paramètre window_indicateur dans le répertoire de propriétés indique qu'un terminal client doit dessiner des lignes d'indicateur dans la fenêtre principale. La ligne suivante indique le nombre de tampons utilisés dans l'indicateur: Dans l'exemple analysé, deux lignes d'indicateur sont dessinées. Un tampon est attribué à chaque tampon, de sorte que le nombre total de tampons est de deux. Les lignes suivantes décrivent les couleurs des lignes indicatrices. Paramètres indicatorcolor1 et indicatorcolor2 définissent le réglage de couleur pour les tampons correspondants - dans ce cas pour les tampons avec les index 0 (Bleu) et 1 (Rouge). Notez que les chiffres des noms de paramètres indicatorcolor1 et indicatorcolor2 ne sont pas des index de tampon. Ces chiffres sont des parties de noms de constantes qui sont définies en fonction des tampons. Pour chaque couleur constante peut être définie à la discrétion d'un utilisateur. Dans la ligne suivante, les tableaux d'indicateurs sont déclarés: L'indicateur est destiné à tracer deux lignes indicatrices; nous devons donc déclarer deux tableaux globaux unidimensionnels, un pour chaque ligne. Les noms des tableaux d'indicateurs sont à la portée de l'utilisateur. Dans ce cas, les noms de tableau Buf0 et Buf1 sont utilisés, dans d'autres cas, d'autres noms peuvent être utilisés, par exemple Line1, Alfa, Integral etc. Il est nécessaire de déclarer des tableaux à un niveau global car les valeurs des éléments de tableau doivent être préservées entre les appels De la fonction spéciale start (). L'indicateur personnalisé décrit est construit à partir de deux fonctions spéciales - init () et start (). La fonction init () ne contient qu'une seule fois la partie de code utilisée sur le programme (voir Fonctions spéciales). Une action très importante est effectuée dans la ligne: En utilisant la fonction SetIndexBuffer (), un buffer nécessaire (dans ce cas avec l'index 0) est mis en correspondance avec un tableau (dans ce cas Buf0). Cela signifie que pour construire la première ligne d'indicateur, un terminal client acceptera les données contenues dans le tableau Buf0 en utilisant le tampon zéro pour cela. En outre, le style de ligne est défini: Pour le tampon zéro (0), un terminal client doit utiliser les styles de dessin suivants: ligne simple (DRAWLINE), ligne pleine (STYLESOLID), largeur de ligne 2. Les deux lignes suivantes contiennent des réglages pour la deuxième ligne : Ainsi, selon le code de la fonction spéciale init (), les deux lignes d'indicateur seront tracées dans la fenêtre de sécurité principale. La première sera une ligne bleue pleine avec la largeur 2, la seconde une ligne pointillée rouge (STYLEDOT) d'une largeur habituelle. Les lignes d'indicateur peuvent également être dessinées par d'autres styles (voir Styles de lignes d'indicateurs). Calcul des valeurs des éléments du tableau indicateur (Attention) Les valeurs des éléments du tableau indicateur sont calculées dans la fonction spéciale start (). Pour bien comprendre le contenu du code start (), attention à l'ordre des barres d'indexation. La section Arrays décrit en détail la méthode d'indexation des tableaux-timeseries. Selon cette méthode, l'indexation des barres commence à zéro. La barre zéro est une barre courante mais non formée. L'index des barres les plus proches est 1. Les suivants sont 2 et ainsi de suite. Lorsque de nouvelles barres apparaissent dans une fenêtre de sécurité, les index des barres déjà formées (historiques) sont modifiés. La nouvelle barre (courante, juste formée, la plus à droite) obtient l'index zéro, celui à gauche de lui (qui vient de se former) obtient l'index 1 et les valeurs des index de toutes les barres historiques sont également augmentées d'une unité. La méthode décrite d'indexation des barres est la seule possible pour l'ensemble du système de trading en ligne MetaTrader, et elle est prise en compte lors de l'élaboration des lignes en utilisant à la fois des indicateurs techniques et personnalisés. Il a été dit plus haut que les lignes indicatrices sont construites sur la base des informations numériques contenues dans les tableaux d'indicateurs. Un tableau d'indicateurs contient des informations sur les coordonnées de points sur lesquelles une ligne d'indicateur est tracée. Et la coordonnée Y de chaque point est la valeur d'un élément tableau indicateur. Et la coordonnée X est la valeur d'un index d'élément de tableau indicateur. Dans l'exemple analysé, la première ligne d'indicateur est tracée en utilisant des valeurs maximales de barres. La figure 116 montre cette ligne indicatrice (de couleur bleue) dans une fenêtre de sécurité, elle est construite sur la base du tableau indicateur Buf0. Figue. 116. Correspondance des coordonnées d'une ligne indicatrice avec les valeurs d'un tableau indicateur. La valeur d'index d'un tableau indicateur est sortie par un terminal client en correspondance avec un index bar - ces valeurs d'index sont égales. Il faut également tenir compte du fait que le processus de construction des lignes indicatrices s'effectue en mode temps réel dans des conditions où, dans une fenêtre de sécurité, de nouvelles barres apparaissent de temps en temps. Et toutes les barres d'histoire sont décalées vers la gauche. Pour que la ligne d'indicateur soit tracée correctement (chaque point de ligne au-dessus de sa barre), elle doit également être déplacée avec des barres. Il existe donc un besoin (besoin technique) de réindexer un tableau indicateur. La différence fondamentale entre un tableau indicateur et un tableau ordinaire est la suivante: Au moment où une nouvelle barre est créée, les valeurs d'index des éléments du tableau indicateur sont automatiquement modifiées par le terminal client, à savoir - la valeur de chaque index du tableau indicateur est augmentée de Un et la taille du tableau indicateur est augmentée d'un élément (avec un indice zéro). Par exemple, la barre zéro de la Fig. 116 (période H1) a le temps d'ouverture 6:00. À 7:00 une nouvelle barre apparaîtra dans la fenêtre de sécurité. La barre ouverte à 6:00 obtient automatiquement l'index 1. Pour que la ligne d'indicateur soit tracée correctement sur cette barre, le terminal client modifiera l'index de l'élément tableau indicateur correspondant à la barre ouverte à 6:00. Dans le tableau de la Fig. Cet élément est écrit dans la première ligne. Ensemble avec que les index de tous les éléments de tableau seront augmentés par le terminal client par un. Un index de l'élément de tableau correspondant à la barre ouverte à 6:00 obtiendra la valeur 1 (avant que ce soit égal à 0). Le tableau indicateur devient plus grand d'un élément. L'indice d'un nouvel élément ajouté sera égal à 0, la valeur de cet élément sera une nouvelle valeur reflétant la coordonnée de la ligne indicatrice sur une barre zéro. Cette valeur est calculée dans la fonction spéciale start () sur chaque tick. Les calculs dans la fonction spéciale start () doivent être effectués de sorte qu'aucune action supplémentaire ne soit effectuée. Avant que l'indicateur ne soit associé à un graphique, il ne reflète aucune ligne d'indicateur (car les valeurs des tableaux d'indicateurs ne sont pas encore définies). C'est pourquoi au premier démarrage de la fonction spéciale start (), les valeurs du tableau indicateur doivent être calculées pour toutes les barres sur lesquelles la ligne d'indicateur doit être tracée. Dans l'exemple analysé, il s'agit de toutes les barres présentes sur un diagramme (les calculs initiaux peuvent être effectués non pour toutes les barres disponibles, mais pour une dernière partie de l'histoire, il est décrit dans d'autres exemples). Ar tous les autres démarrages de la fonction spéciale start (), il n'est pas nécessaire de calculer à nouveau les valeurs de tableau indicateur pour toutes les barres. Ces valeurs sont déjà calculées et sont contenues dans le tableau indicateur. Il est nécessaire de calculer la valeur courante de la ligne indicatrice uniquement sur chaque nouvelle coche de la barre zéro. Pour la mise en œuvre de la technologie décrite, il existe une fonction standard très utile dans MQL4 - IndicatorCount (). Fonction IndicatorCount () Cette fonction renvoie le nombre de barres qui n'ont pas changé depuis le dernier appel indicateur. Si l'indicateur n'a jamais été attaché à un diagramme, lors de la première exécution start (), la valeur de Countedbars sera égale à zéro: Cela signifie que le tableau indicateur ne contient aucun élément avec une valeur prédéfinie antérieure, c'est pourquoi le tableau indicateur complet Doit être calculé du début à la fin. Le tableau indicateur est calculé de la barre la plus ancienne à la valeur zéro. L'index de la barre la plus ancienne, à partir de laquelle les calculs doivent être démarrés, est calculé de la manière suivante: Supposons qu'au moment de la fixation de l'indicateur il y ait 300 bar dans une fenêtre de graphique. C'est la valeur de la variable prédéfinie Bars. Comme on l'a défini précédemment, Countedbars est égal à 0. Ainsi, on obtient que l'indice i de la première barre non comptée (la plus récente à partir de laquelle les calculs doivent être effectués) est égal à 299. Toutes les valeurs des éléments de tableau indicateur sont Calculée dans la boucle while (): Alors que i est compris dans la plage allant de la première barre non comptée (299) à la valeur courante (0) inclusivement, les valeurs des éléments de tableau indicateur sont calculées pour les deux lignes indicatrices. Notez que les valeurs manquantes des éléments du tableau indicateur sont calculées lors du premier (premier) démarrage de la fonction spéciale start (). Pendant les calculs, le terminal client se souvient des éléments pour lesquels des valeurs ont été calculées. La dernière itération dans while () est effectuée lorsque i est égal à 0, c'est-à-dire que les valeurs des tableaux d'indicateurs sont calculées pour la barre zéro. Lorsque la boucle est terminée, la fonction spéciale start () termine son exécution et le contrôle est passé au terminal client. Le terminal client à son tour dessine toutes les lignes indicatrices (dans ce cas deux) conformément aux valeurs calculées des éléments de réseau. Le prochain démarrage () démarrera à nouveau par le terminal client. D'autres actions dépendront de la situation (nous continuerons à analyser l'exemple pour 300 barres). Variante 1. Une nouvelle tique vient pendant la formation de la barre de zéro actuelle (la situation la plus courante). Figue. 117 montre deux tiques reçues par le terminal aux instants t1 et t2. La situation analysée sera la même pour les deux tiques. Ligne suivante de l'exécution de start () qui a été lancée au moment t 2. Pendant l'exécution de la fonction start (), la ligne suivante sera exécutée: IndicatorCount () retourne la valeur 299, c'est-à-dire depuis le dernier démarrage 299 barres précédentes n'ont pas été modifiées. En conséquence, la valeur d'index i sera égale à 0 (300-299-1): Cela signifie que dans la boucle next while (), les valeurs des éléments de tableau avec l'indice zéro seront calculées. En d'autres termes, la nouvelle position d'une ligne d'indicateur sur la barre de zéro sera calculée. Lorsque le cycle est terminé, start () cesse d'exécuter et passe le contrôle au terminal client. Variante 2. Une nouvelle coche est la première coche d'une barre de zéro (arrive de temps en temps). Dans ce cas, le fait d'apparition d'une nouvelle barre est important. Avant que le contrôle ne soit passé à la fonction spéciale start (), le terminal client dessine de nouveau toutes les barres présentes dans la fenêtre de sécurité et réindexe toutes les matrices indicatrices déclarées (définies en correspondance avec les tampons). En outre, le terminal client se souviendra qu'il ya déjà 301 barres, pas 300 dans une fenêtre de graphique. Figue. 118 contient la situation quand sur la dernière coche de la barre précédente (au moment t 2) la fonction start () a été démarrée et exécutée avec succès. C'est pourquoi, bien que maintenant la première barre (avec l'index 1) terminée au moment t 2 ait été calculée par l'indicateur, la fonction IndicatorCount () retournera la valeur qui était sur la barre précédente. C'est-à-dire 299: Dans l'index de ligne suivant i sera calculé, dans ce cas pour la première coche d'une nouvelle barre, il sera égal à 1 (301-299-1): Cela signifie calcul des valeurs de tableau indicateur dans while À l'apparition d'une nouvelle barre sera effectuée à la fois pour la dernière barre et pour la nouvelle barre de zéro. Un peu plus tôt lors de la réindexation des matrices d'indicateurs, le terminal client a augmenté la taille de ces matrices. Les valeurs des éléments de tableau avec zéro index n'ont pas été définies avant les calculs dans la boucle. Pendant les calculs dans la boucle, ces éléments obtiennent certaines valeurs. Lorsque les calculs dans start () sont terminés, le contrôle est retourné au terminal client. Après cela, le terminal client dessine des lignes indicatrices sur la barre de zéro basée sur des valeurs calculées juste d'éléments de tableau avec zéro index. Variante 3. Une nouvelle coche est la première coche d'une nouvelle barre zéro, mais la dernière mais une case n'est pas traitée (cas rare). Figue. 119 montre la situation où start () a été lancé sur la première coche d'une nouvelle barre au moment t 5. L'heure précédente cette fonction a été lancée au moment t 2. Cochez qui est venu au terminal au moment t 3 (flèche rouge ) N'a pas été traitée par l'indicateur. Ceci est dû au fait que le temps d'exécution t 2 - t 4 de début () est supérieur à l'intervalle entre les ticks t 2 - t 3. Ce fait sera détecté par le terminal client lors de l'exécution de start () lancé au moment t 5. Pendant Calculs dans la ligne: IndicatorCount () renverra la valeur 299 (). Cette valeur est vraie - à partir du moment du dernier appel indicateur, 299 barres n'ont pas été modifiées après (maintenant déjà) 301. C'est pourquoi l'index calculé de la première barre (à gauche) à partir de laquelle les calculs des valeurs d'éléments de tableau doivent être démarrés, Sera égal à 1 (301-299-1): cela signifie que pendant l'exécution while () deux itérations seront effectuées. Au cours de la première, on calcule des valeurs d'éléments de réseau avec l'indice i 1, c'est-à-dire Buf01 et Buf11. Non, au moment où les calculs commencent, les barres et les tableaux indicateurs sont déjà réindexés par le terminal client (car une nouvelle barre a démarré, entre les début de la fonction spéciale start ()). C'est pourquoi les calculs pour des éléments de tableaux avec index 1 seront calculés sur la base de tableaux de temps (valeurs maximales et minimales d'un prix de barres) également avec l'indice 1: Pendant la deuxième itération de while () pour les éléments avec zéro Index, c'est-à-dire pour la barre zéro, est calculée sur la base des dernières valeurs connues de tableaux-temps. L'utilisation de la technologie décrite pour le calcul d'indicateurs personnalisés permet d'abord de garantir le calcul des valeurs de tous les éléments du tableau indicateur indépendamment de la nature spécifique de l'historique des marques et d'effectuer des calculs uniquement pour les barres non comptées, . Non, une barre est considérée comme non comptabilisée si le calcul des valeurs d'élément d'un indicateur ne s'établit pas au moins pour une dernière coche de la barre n'est pas effectuée. Démarrer l'indicateur personnalisé userindicator. mq4 dans une fenêtre de graphique, vous verrez deux lignes - une ligne bleue épaisse construite sur les maximums de barre et une ligne rouge pointillée construite sur ses minimums (Figure 120). Il convient de noter que l'on peut construire un indicateur personnalisé dont les lignes indicatrices coïncideraient avec les lignes d'un indicateur technique analogue. Il peut être facilement fait si comme formules de calcul dans l'indicateur personnalisé, les mêmes formules que dans l'indicateur technique sont utilisés. Pour illustrer cela, nous pouvons améliorer le code de programme analysé dans l'exemple précédent. Laissez l'indicateur tracer des lignes sur les valeurs moyennes des maximums et des minimums de plusieurs dernières barres. Il est facile de faire les calculs nécessaires: nous avons simplement besoin de trouver des valeurs moyennes des éléments arrays-timeseries. Par exemple, on calcule la valeur d'un tableau indicateur avec l'indice 3 (c.-à-d. La coordonnée de ligne indicatrice pour la troisième barre) sur la base des cinq derniers maximums: Buf03 (High3 High4 High5 High6 High7) 5 Des calculs analogiques peuvent être effectués Pour des lignes indicatrices construites sur des minimums. Exemple d'un indicateur personnalisé simple averagevalue. mq4. Les lignes indicatrices sont construites sur des valeurs minimales et maximales moyennes de N barres. Dans cet exemple, il existe une variable externe AverBars. En utilisant cette variable, un utilisateur peut indiquer le nombre de barres pour lesquelles une valeur moyenne est calculée. Dans start (), cette valeur est utilisée pour le calcul d'une valeur moyenne. Dans la boucle pour la somme des valeurs maximales et minimales est calculé pour le nombre de barres correspondant à la valeur de la variable AverBars. Dans les deux lignes de programme suivantes, les valeurs des éléments de tableau indicateur sont calculées pour des lignes d'indicateur correspondant à des valeurs minimales et maximales. La méthode de la moyenne utilisée ici est également appliquée pour les calculs dans l'indicateur technique Moyenne mobile. Si nous joignons l'indicateur personnalisé analysé averagevalue. mq4 et l'indicateur technique Moyenne mobile, nous verrons trois lignes d'indicateurs. Si la même période de moyenne est établie pour les deux indicateurs, la ligne Moyenne mobile coïncidera avec l'une des lignes indicatrices personnalisées (à cette fin, les paramètres décrits dans la figure 121 doivent être spécifiés dans les paramètres des indicateurs techniques). Figue. 121. Lignes coïncidentes d'un indicateur technique et d'un indicateur personnalisé (ligne rouge). Ainsi, à l'aide d'un indicateur technique, un utilisateur peut construire la réflexion de toute régularité nécessaire au travail pratique. Options d'indicateur personnalisé Dessiner des lignes d'indicateurs dans des fenêtres séparées MQL4 offre un grand service pour la construction d'indicateurs personnalisés qui rend l'utilisation de leur très pratique. En particulier, les lignes indicatrices peuvent être dessinées dans une fenêtre séparée. Cela est pratique lorsque les valeurs absolues de l'amplitude de la ligne indicatrice sont sensiblement plus petites (ou plus grandes) que les prix de sécurité. Par exemple, si l'on s'intéresse à la différence entre les valeurs moyennes des maximums des barres et des minimums dans un certain intervalle historique, cette valeur sera, selon l'intervalle de temps, approximativement de 0 à 50 points (par exemple pour M15). Il n'est pas difficile de construire une ligne d'indicateur, mais dans une fenêtre de sécurité, cette ligne sera dessinée dans la fourchette de 0 à 50 points d'un prix de sécurité, c'est-à-dire sensiblement inférieure à la zone de graphique reflétée sur l'écran. C'est très gênant. Pour tracer des lignes d'indicateur dans une fenêtre séparée (qui se trouve dans la partie inférieure d'une fenêtre de sécurité), dans la propriété directive (au début du programme), le paramètre indicatorseparatewindow doit être spécifié: Au moment où un tel indicateur est attaché à une fenêtre de sécurité , Le terminal client crée une fenêtre séparée sous un graphique, dans laquelle les lignes indicatrices calculées dans l'indicateur seront tirées. Selon les réglages de couleur et les types de lignes indicatrices, ils seront dessinés dans tel ou tel style. Limitation de l'historique des calculs Dans la plupart des cas, les lignes indicatrices contiennent des informations utiles uniquement dans l'historique le plus récent. La partie des lignes indicatrices construites sur des barres anciennes (par exemple, un délai de 1 mois) ne peut guère être considérée comme utile pour prendre des décisions commerciales. En outre, s'il ya beaucoup de barres dans une fenêtre de graphique, le temps investi dans le calcul et le dessin des lignes indicatrices est déraisonnablement grand. Cela peut être critique dans le débogage du programme, lorsqu'un programme est souvent compilé puis démarré. C'est pourquoi il est nécessaire de faire des calculs non pour toute l'histoire, mais pour la partie limitée de l'histoire la plus récente bar. À cette fin, un historique de variable externe est utilisé dans le programme suivant. La valeur de cette variable est prise en compte lors du calcul de l'index de la première barre (la plus à gauche), à ​​partir de laquelle les éléments des tableaux d'indicateurs doivent être calculés. D'autres calculs dans la boucle while () seront effectués pour le nombre de barres historiques récentes ne dépassant pas la valeur Historique. Notez que la méthode analysée pour limiter un historique de calcul ne concerne que la partie des calculs effectués au premier démarrage de la fonction spéciale start (). De plus, lorsque de nouvelles barres apparaissent, de nouvelles parties des lignes indicatrices seront ajoutées dans la partie droite, tandis que l'image dans la partie gauche sera conservée. Ainsi, la longueur de la ligne indicatrice sera augmentée pendant toute la durée de fonctionnement de l'indicateur. La valeur commune du paramètre History est estimée à environ 5000 bars. Exemple d'un indicateur personnalisé simple separatewindow. mq4. Les lignes d'indicateurs sont dessinées dans une fenêtre séparée. Un calcul similaire d'une ligne d'indicateur est effectué dans l'indicateur technique RangeTable moyenne. Figue. 122 représente une ligne indicatrice construite par l'indicateur personnalisé windowwindow. mq4 séparée dans une fenêtre séparée et une ligne indicatrice construite par ATR dans une autre fenêtre. Dans ce cas, les lignes sont totalement identiques car la période de moyenne est la même pour les deux indicateurs. 5. Si ce paramètre est modifié dans l'un des indicateurs, la ligne d'indicateur correspondante changera également. Figue. 122. dessin d'une ligne d'indicateur personnalisée dans une fenêtre séparée. Lignes identiques d'un indicateur technique (ATR) et d'un indicateur personnalisé (separatewindow. mq4). Il est également évident que la ligne d'indicateur personnalisé est construite non pas pour la largeur de l'écran entier, mais pour les 50 dernières barres spécifiées dans la variable externe Historique. Si un trader doit utiliser un intervalle historique plus important, la valeur de la variable externe peut être facilement modifiée via la fenêtre des paramètres de l'indicateur personnalisé. Figue. 123 montre une fenêtre de sécurité, dans laquelle la ligne d'indicateur nous dessine dans un autre style - comme un histogramme. Pour obtenir un tel résultat, une ligne a été modifiée dans le code de programme separatewindow. mq4 - les autres styles de ligne sont indiqués: Toutes les autres parties de code sont inchangées. Figue. 123. Dessiner la ligne d'indicateur personnalisée dans une fenêtre séparée (histogramme). Similitude des dessins d'un indicateur technique (ATR) et d'un indicateur personnalisé (separatewindow. mq4). Changement des lignes d'indicateur verticalement et horizontalement Dans certains cas, il est nécessaire de décaler une ligne d'indicateur. Il peut être facilement fait par des moyens MQL4. Permet d'analyser un exemple, dans lequel la position des lignes indicatrices dans une fenêtre de sécurité est calculée en fonction des valeurs spécifiées par un utilisateur. Exemple d'un indicateur personnalisé displacement. mq4. Changement des lignes indicatrices horizontalement et verticalement. Pour ajuster le décalage de lignes dans un graphique, il existe deux variables externes: LeftRight pour le décalage horizontal de toutes les lignes et UpDown pour le décalage vertical de deux lignes pointillées. L'algorithme utilisé pour calculer les valeurs des éléments de tableau correspondants est basé sur des règles très simples: pour déplacer une ligne horizontalement, affectez la valeur calculée à un élément de tableau, dont l'index est plus grand que LeftRight (pour le décalage vers la droite et moins pour le décalage À droite) que l'index d'une barre, pour lequel des calculs sont effectués pour décaler une droite verticalement, UpDownPoint doit être ajouté (pour décaler vers le haut ou détérioré pour décaler vers le bas) à chaque valeur d'un tableau indicateur caractérisant la position de ligne initiale. Les index d'exemple sont calculés dans la ligne: Ici, i est l'index d'une barre, pour laquelle les calculs sont effectués, k est un index d'un élément de tableau indicateur. La ligne d'indicateur rouge affichée par le terminal client en fonction du tableau d'indicateurs La ligne 0 est décalée vers la gauche de 5 bars (selon les réglages personnalisés, voir la figure 124) à partir de la ligne initiale. Dans ce cas, la ligne initiale est une moyenne mobile avec la période de moyenne égale à 5 la formule de calcul MA est (HighiLowi) 2. Dans cet exemple, la position de la ligne rouge constitue la base pour le calcul des valeurs du tableau indicateur pour deux autres lignes, c'est-à-dire leur position sur le graphique. Les lignes pointillées sont calculées de la manière suivante: L'utilisation de l'index k pour les éléments de tous les tableaux d'indicateurs permet d'effectuer des calculs pour les éléments des tableaux Line1, Line2 sur la même barre utilisée pour calculer les valeurs du tableau de base Line0 correspondant. En conséquence, les lignes pointillées sont décalées par rapport à la ligne rouge par la valeur spécifiée dans la fenêtre de réglage de l'indicateur, dans ce cas de 30 points (figure 124). Figue. 124. La ligne indicatrice rouge est décalée vers la gauche de 5 bars. Les lignes d'indicateur ponctuées sont décalées de 30 points par rapport à la ligne rouge. Limitations des indicateurs personnalisés Le MQL4 présente certaines limitations qui devraient être prises en compte dans la programmation des indicateurs personnalisés. Il existe un groupe de fonctions qui ne peut être utilisé que dans les indicateurs personnalisés et ne peut pas être utilisé dans les experts conseillers et les scripts: IndicatorBuffers (), IndicatorCount (), IndicatorDigits (), IndicatorShortName (), SetIndexArrow (), SetIndexBuffer (), SetIndexDrawBegin ), SetIndexEmptyValue (), SetIndexLabel (), SetIndexShift (), SetIndexStyle (), SetLevelStyle (), SetLevelValue (). D'autre part, les fonctions commerciales ne peuvent pas être utilisées dans les indicateurs: OrderSend (), OrderClose (), OrderCloseBy (), OrderDelete () et OrderModify (). C'est parce que les indicateurs fonctionnent dans le flux d'interface (à la différence des conseillers experts et des scripts qui fonctionnent dans leur propre flux). C'est aussi pourquoi les algorithmes basés sur la boucle ne peuvent pas être utilisés dans les indicateurs personnalisés. Le démarrage d'un indicateur personnalisé contenant une boucle sans fin (en termes de temps d'exécution réel) peut entraîner le raccrochage du terminal client avec la nécessité de redémarrer un ordinateur. Le tableau 2 présente les caractéristiques comparatives générales des experts conseillers, des scripts et des indicateurs. Par David Williams mdash Le 25 janvier 2014 Comment construire un indicateur personnalisé Crossover mobile moyen MetaTrader à l'aide du plug-in VTS EA to Custom Indicator Cette vidéo montre comment Pour créer un MetaTrader Moving-Average Crossover Indicateur personnalisé qui montre acheter et vendre des signaux basés sur un crossover moyen mobile. The EA-Indicator VTS plug-in allows you to create a custom indicator from any VTS Expert Advisor. Within VTS, you simply change the target from 8220Expert Advisor8221 to 8220Ea Indicator8221 and press 8220build8221. This will create a custom indicator in the MetaTrader platform8217s custom indicator folder. A custom indicator created by the EA-Indicator plug-in draws two lines. A blue line to show open and close BUY signals. And a red line to show open and close SELL signals. A line greater than zero means there is an OPEN signal. A line less than zero means there is a CLOSE signal. A line at zero means there is no signal. This example uses a moving average crossover of a fast moving average and a slow moving average. When the fast MA crosses up through the slow MA a BUY signal is generated. When the fast MA crosses down through the slow MA a SELL signal is generated. The process used to create this indicator was to create the Expert Advisor first and then change the VTS target to 8220Ea Indicator8221 and build the custom indicator. For any VTS Expert Advisor that has already been created, the process is to simply set the VTS target to 8220Ea Indicator8221 and press 8220build8221. Watch This Short Video to how to Create a Moving-Average Crossover Custom Indicator (enjoy the music


No comments:

Post a Comment