MetaTrader 4 Indicateurs Kagi Charts indicateur pour MetaTrader 4 Les graphiques Kagi sont censés paraître dans les années 70 du 20ème siècle, à la première étape du développement boursier japonais. Les cartes Kagi représentent une série de lignes verticales interconnectées. L'épaisseur et la direction d'incrément de ces lignes sont déterminées par la dynamique des prix. Les cartes Kagi ne tiennent pas compte du temps. Si le prix se déplace dans la même direction, la ligne verticale dans le graphique devient plus longue. Si le prix tourne d'une valeur prédéfinie (coefficient inverse), une nouvelle ligne verticale dans une nouvelle colonne sera tracée dans le graphique. L'épaisseur des lignes Kagi varie lorsque les prix dépassent leurs valeurs minimales maximales précédentes. Les cartes de Kagi sont devenues connues aux Etats Unis en raison du livre de Steve Nisons appelé quotBeyond Candlesticksquot. Les graphiques de Kagi illustrent comment les forces de la demande et de l'offre agissent. Une séquence de lignes épaisses parle de ce que la demande est au dessus de l'offre (le marché se développe). Une séquence de lignes fines signifie que l'offre est au dessus de la demande (le marché baisse). L'échange de lignes épaisses et fines parle pour que le marché soit équilibré (l'offre est égale à la demande). Le signal commercial de base sur un diagramme de Kagi est l'épaisseur de ligne: Si une ligne mince devient épais, vous devriez acheter, si vice versa, vous devriez vendre. Une séquence de maximums et de minimums croissants parle de la puissance du mouvement ascendant, des maximums décroissants et des minimums parlent pour le marché faible. Exemple d 'indicateur pour Kagi Charting Introduction L' article Indicator for Point and Figure Charting a décrit l 'une des méthodes de programmation de la création d' un diagramme de points et de figures. Ce tableau est connu depuis le 19ème siècle. Cependant, ce n'est pas le seul graphique du passé lointain. Un autre représentant notable des premiers types de la représentation du marché financier est graphique Kagi. Ce tableau sera discuté dans le présent article. L'institution financière boursière inconnue du Japon du 19e siècle a été créée en mai 1878. Elle est connue sous le nom de Tokyo Stock Exchange de nos jours. Cet événement a joué un rôle vital dans la création et le développement ultérieur des cartes Kagi. L'Europe et les États Unis sont venus à connaître les cartes de Kagi après la publication de Steve Nisons Beyond Candlesticks: nouvelles techniques japonaises de cartographie révélées en 1994. Les mots japonais Kagi signifie une clé en forme de L qui était en service au moment du développement du graphique. En outre, il existe une version modifiée du tableau de clés de noms. Dans Steve Nisons Au delà des chandeliers, vous pouvez également trouver d'autres noms du graphique: tableau de la fourchette de prix, crochet graphique, delta ou chaîne graphique. Ce qui est si spécial sur ce graphique Sa caractéristique principale est qu'il ignore l'échelle de temps laissant seulement le prix un (contrairement aux chandeliers japonais, des barres et des lignes). Ainsi, le graphique cache des fluctuations de prix négligeables laissant seulement les plus significatives. Le graphique représente un ensemble de Yang épais et minces lignes Yin se substituent en fonction de la situation du marché. Dans le cas où le marché se déplace dans la même direction, la ligne est étendue atteignant une nouvelle gamme de prix. Toutefois, si le marché revient et atteint un montant prédéfini, la ligne Kagi est dessinée dans la direction opposée dans la nouvelle colonne. Le montant prédéfini est défini soit en points (généralement utilisé pour les paires de devises), soit en pourcentage du prix courant (généralement utilisé pour les actions). L'épaisseur de la ligne varie en fonction de la percée la plus haute ou la plus basse. 1. Exemple de graphique Utilise les données historiques sur EURUSD, H1 du 8 au 11 octobre. Un exemple d'imagerie standard avec un seuil inverse de 15 points est affiché sur la Fig. 1: Fig. 1. Kagi chart, EURUSD H1 Comme nous pouvons le voir, le prix a commencé à tomber à 17:00. Le mouvement descendant s'est poursuivi jusqu'à 21 heures. À 22:00, le prix monte de 1.3566 et est fermé à 1.3574. En d'autres termes, le prix passe 11 points. Ce n'est pas suffisant pour un renversement, mais le nouveau bas n'a pas été atteint non plus. Au cours des deux prochaines heures, le prix baisse et finalement, à 01:00 (9 octobre), nous voyons un fort mouvement ascendant, qui est fermé à 1.3591 comprenant 25 points (1.3591 1.3566). Cela signifie que le prix s'est inversé. La tendance haussière se poursuit l'heure suivante. Le prix atteint 1,3599 renforçant la ligne épaisse de Yang. À 03:00, le prix chute brusquement à 1.3578, soit 21 points par rapport au précédent précédent (1.3599 1.3578). C'est plus que suffisant pour le renversement. La ligne descend mais conserve sa forme (ligne Yang épaisse). Jusqu'à 16:00, le prix se déplace vers le bas et finalement il casse le minimum le plus proche et passe du Yang épais à la ligne Yin mince. La valeur basse mentionnée précédemment de 1.3566 avait servi comme un prix de percée ici. Le prix continue à se déplacer comme une ligne de Yin et est changé à Yang à 14:00 le 10 octobre cassant à travers le plus proche Haut de 1.3524 formé à 23:00 (9 octobre). Ce petit exemple montre comment le diagramme de Kagi est formé. 2. Principe de l'indicateur Kagi Afin de rendre l'indicateur indépendant de l'échéancier actuel, il a été décidé de copier séparément les données de l'intervalle de temps auquel l'indicateur devait être formé, puis de créer l'indicateur en utilisant les données obtenues. Cela permet d'examiner plusieurs périodes simultanément sur un seul diagramme en élargissant les limites de l'analyse technique sur les graphiques Kagi. L'indicateur lui même se trouve dans une fenêtre distincte, mais il est également possible d'afficher les données sur le graphique principal. En d'autres termes, la formation de base (aspect standard ou modifié) est effectuée dans la fenêtre indicatrice. L'indicateur est copié sur le graphique principal, et les marques de prix et de temps (en fonction des paramètres) sont dessinées. Comme mentionné précédemment, l'indicateur trace le graphique à la fois en version standard et version modifiée. La norme a été décrite ci dessus. Maintenant, considérons la version modifiée. Je ne sais pas si c'est une nouvelle idée, mais je n'ai pas entendu parler d'une telle version. L'idée du filtre supplémentaire est que non seulement les points inverses, mais chaque déplacement du graphique est filtré maintenant. En d'autres termes, le prix devrait se déplacer une certaine distance spécifiée afin que le nouveau haut ou bas (à ne pas confondre avec l'épaulière) pour être formé. Généralement, partout où le prix se déplace, il doit d'abord couvrir une distance spécifiée. Après cela, il est défini si c'était une continuation de tendance ou un renversement. Figue. 2 montre comment fonctionne le principe. Le graphique modifié est affiché en bleu, tandis que le standard en rouge. Comme nous pouvons le voir, l'aspect modifié répond aux changements de mouvement des prix filtrant plus lentement la plupart des signaux mineurs. Figue. 2. Modification (ligne bleue) et version standard (ligne rouge) de la création du graphique Kagi En plus du graphique Kagi, l'indicateur fournit des éléments supplémentaires à la fois dans la fenêtre d'indicateur et dans le graphique principal. Selon les paramètres, les marques peuvent être définies dans la fenêtre d'indicateur. Ces marques fournissent des données sur les prix de revirement. La même fonction est mise en œuvre en utilisant des niveaux de prix qui, selon les paramètres, peuvent répartir uniformément le long de la fenêtre à l'échelle de prix entière utilisée pour former l'indicateur ou à chaque inversion de graphique. Les couleurs peuvent être réglées en trois versions: selon le type d 'inversion (haut bas), le type de ligne (Yin Yang) ou pas de changement de couleur. Les marques de prix d'annulation, y compris temporaires, figurent sur le graphique principal. Ces marques (selon les paramètres) peuvent être d'une seule couleur ou changer la couleur selon les couleurs de ligne Yin ou Yang. L'ensemble du code d'indicateur est implémenté en utilisant les fonctions communiquant entre elles par l'intermédiaire de variables globales. Le code peut être divisé en trois fonctions principales et onze supplémentaires. Le principal fardeau des calculs et des remplissages tampons des constructions graphiques de base et des tableaux tampons supplémentaires repose sur la fonction de la formation des diagrammes Kagi dans la fenêtre indicatrice. Les deux autres fonctions sont chargées de fournir les données: la première copie les données de temps, tandis que l'autre les données sur les prix de chaque barre de la période de temps sélectionnée. Les autres fonctions auxiliaires sont chargées d'exécuter toutes les constructions, de supprimer les objets, de décharger l'indicateur accompagné de la suppression de tous les objets indicateurs, de calculer les paramètres d'inversion, de dessiner sur le graphique principal et la fenêtre d'indicateur, de créer des objets graphiques de type Tendance, Kagi sur le graphique principal, ainsi que la définition de l'arrivée de la nouvelle barre pour lancer la formation de l'indicateur. 3. Code indicateur et algorithme Maintenant, examine le code indicateur et l'algorithme de sa formation en détails. Le code est assez grand et il peut être assez difficile pour les programmeurs novices de le comprendre. Les fonctions qui communiquent entre elles via les variables globales rendent le code assez confus. Dans cette partie de l'article, je vais expliquer chaque fonction et une partie du code séparément. Tout d'abord, je vais décrire les paramètres de l'indicateur et puis il y aura des clarifications concernant la copie des données des fonctions initiales, le calcul des paramètres d'inversion, la fonction principale de la formation du graphique Kagi et le calcul et d'autres fonctions auxiliaires. 3.1. Paramètres d'entrée de l'indicateur Le code commence par la déclaration de l'indicateur dans une fenêtre distincte, ainsi que de 12 mémoires tampon et 8 constructions graphiques d'indicateur. Tout d'abord, permet de définir pourquoi 8 constructions graphiques, y compris deux histogrammes et six lignes. ont été utilisées. Chaque histogramme construit sa propre ligne verticale. Une des lignes est responsable de la ligne Yin, tandis que l'autre est pour la ligne Yang. Le cas est un peu plus compliqué avec les lignes, car il ya trois d'entre eux pour chaque ligne. Cela est dû au fait que la ligne est tracée si un autre point est tiré près du premier. En d'autres termes, nous avons besoin que deux constructions graphiques de type ligne soient tournées pour tracer deux lignes adjacentes les unes aux autres. Cependant, si nous avons besoin de ces lignes pour sauter les points nécessaires, nous avons besoin de la troisième construction pour être tournée avec les deux autres. Ceci est expliqué dans la figure 3, où vous pouvez voir ce qui se passe si seulement deux constructions graphiques de type ligne sont utilisées: Fig. 3. Exemple d'utilisation de deux et trois constructions graphiques de type ligne pour afficher les lignes d'épaule et de taille Ensuite, le menu de réglages est créé. Il ya cinq énumérations ici (permet de les examiner dans les paramètres d'entrée). La première période de paramètre d 'entrée est une période au cours de laquelle la construction est exécutée, elle est suivie par la période de mise à jour de la construction de la période de temporisation et le dernier paramètre de temps est startdata la construction de temps commence à partir. Ces paramètres sont suivis de la construction de diagrammes et de l'étiquetage supplémentaire: type de construction de diagramme kagitype défini par l'utilisateur, standard ou type de pricetype modifié du prix utilisé pour la construction: Close, Open, High et Low typedoorstep utilisé inversion type: point et pourcentage (Spécifié en points ou en pourcentage en fonction du paramètre ci dessus) coloryin Yin couleur de ligne dans la fenêtre indicateur coloryang Yang couleur de ligne dans la fenêtre indicateur widthyin Yin largeur ligne dans la fenêtre indicateur widthyang Yang ligne largeur dans la fenêtre indicateur levelsonoff si les niveaux de prix devrait Être tracée dans la fenêtre indicatrice niveau types types de niveaux de prix dans la fenêtre indicateur. Il ya deux valeurs à choisir: à chaque inversion ou uniformément dans toute la gamme de prixnuméro nombre de niveaux de prix dans la fenêtre indicateur levelschangecolor permet de changer la couleur des lignes de niveau de prix les options sont des renversements supérieur et inférieur, Yin et Yang lignes ou pas de changements Colorsfirstcolor la première couleur d'un level de prixsecondcolor la deuxième couleur d'un label de prix label1 étiquettes de prix d'inversion de diagramme de dessin dans la fenêtre indicatrice label1number nombre d'étiquettes affichées dans la fenêtre indicatrice label1color couleur des étiquettes de prix dans la fenêtre indicatrice2 dessiner des étiquettes de prix sur le Diagramme principal label2color couleur de l'étiquette sur le graphique principal timelinedraw dessin inversion lignes de temps sur le graphique principal timeseparatewindows dessin continuation des lignes de temps d'inversion du graphique principal timelinechangecolor changer la couleur de la ligne de temps en fonction de l'étiquette d'inversion à Yin ou Yang line timefirstcolor the first Couleur de la ligne de temps sur le graphique principal de la couleur de la seconde ligne de temps de la ligne de temps sur le tableau principal kagimainchart si Kagi devrait être dessiné sur le tableau principal de la couleur de la ligne principale Yin sur le tableau principal couleur de la ligne Yang sur la ligne principale Yin ligne Largeur sur la largeur de la largeur du tableau principal widthangmain Yang sur le tableau principal magicnumb numéro magique utilisé pour construire des objets et leur suppression, ainsi que dans le nom de l'indicateur afin de lancer plusieurs indicateurs sur un seul graphique. Ces paramètres sont à leur tour suivis des déclarations des buffers indicateurs, des tampons auxiliaires pour stocker les valeurs de prix et de temps, des variables auxiliaires (stopdata, barscopied, barscopiedtime, copyhistory, copytime), des tableaux pour stocker des données sur ce que Yin ou Yang Le mouvement du graphique s'est produit, le temps et le prix de ce changement, le prix central (si Yin est remplacé par Yang sur la barre ou vice versa). Enfin, l'une des variables globales les plus utilisées contenant des données sur le nombre de changements de mouvement du graphique est déclarée. 3.2. Fonction d'initialisation de l'indicateur La suivante est la fonction d'initialisation de l'indicateur. Les tampons indicateurs et leur indexation (principalement sous forme de séries chronologiques car le diagramme de Kagi est plus court que le principal, il est préférable de le dessiner vers l'arrière) y sont spécifiés. En outre, les valeurs qui ne doivent pas être affichées à l'écran sont définies (EMPTYVALUE 1). Maintenant, nous assignons le nom de l'indicateur et la précision de l'affichage. Comme mentionné précédemment, le nombre magique est ajouté au nom. Cela est effectué pour fournir un fonctionnement correct de la fonction ChartWindowFind (). Sinon, l'objet graphique dessiné dans la fenêtre d'indicateur s'affiche uniquement au premier indicateur lancé (si plusieurs indicateurs sur un même diagramme sont utilisés). Ensuite, nous assignons des noms aux lignes de construction, interdisons l'affichage des valeurs numériques actuelles dans la fenêtre indicatrice, définissons la couleur et la largeur des lignes Yin et Yang, définissons le nombre de niveaux de prix affichés dans la fenêtre indicatrice. 3.3. Fonction de copie de données Maintenant, permet d'examiner les fonctions de copie de données. Il y en a deux ici. Le premier est pour la copie des prix, tandis que le second est pour la copie de chaque barres de temps ouvert. Les deux fonctions conservent leurs valeurs dans les tampons de calcul des indicateurs précédemment déclarés. Tout d'abord, permet de considérer la fonction de copie des prix. Paramètres d'entrée de fonction: tableau pour le stockage des données, copie de données heure de début et de fin (heure actuelle). Le corps de la fonction contient les variables pour répondre à la fonction, le nombre de données (barres) copiées dans le tableau intermédiaire, le tableau dynamique intermédiaire lui même et le nombre de barres qui doivent être copiées dans le tableau intermédiaire. Le nombre de barres est calculé en fonction du nombre total de barres dans la période donnée et du nombre de barres (variable globale) copié à l'appel de fonction précédent. Si ce n'est pas la première fois que les données ont été copiées, les données de la dernière barre copiée doivent être mises à jour. Pour ce faire, nous réduisons le nombre de barres copiées par un et augmentons le nombre de barres nouvellement copiées par un. Nous changeons également la taille du tableau intermédiaire en le préparant pour la copie des barres. Selon les paramètres, nous copions les prix dans le tableau intermédiaire. Si la copie est réussie, les données sont copiées du tableau intermédiaire à la fin du tableau tampon (tableau réponse de fonction), attribuez la réponse positive à la fonction et mettez à jour la variable globale stockant les données sur le nombre de barres copiées. Ce type de copie permet de copier seulement quelques dernières barres réduisant le temps de copie. La fonction suivante est celle pour copier les données de temps. Elle est différente de la précédente en ce qu'elle traite d'un autre type de variable datetime (qui est converti en double lors de sa copie dans la matrice de mémoire tampon de temps). Une autre différence est que l'instruction switch () n'est pas utilisée, car il n'est pas nécessaire de sélectionner les données copiées. 3.4. Fonction de calcul des paramètres d'annulation Puisque le paramètre d'inversion peut être un point ou un pourcentage un, nous avons besoin de la fonction qui calculera le paramètre d'inversion en fonction des paramètres de l'indicateur. La fonction n'a qu'un seul paramètre de prix pour calculer le pourcentage d'inversion. La variable de la réponse est d'abord initialisée par double type et après les calculs, elle est indirectement convertie en type int pour la réponse. Cela est fait parce que les nombres à virgule flottante sont utilisés dans les calculs, tandis que la réponse doit être présentée sous forme d'entiers. La sélection est implémentée dans la fonction par l'instruction conditionnelle if else. La comparaison s'effectue directement avec une variable d'entrée externe (paramètres indicateurs). Le calcul des points est effectué en utilisant une équation simple. Tout d'abord, le nombre total de points passés par le prix est défini. Ensuite, le pourcentage spécifié est calculé sur la base de ce nombre et affecté à la variable retournée. 3.5. La fonction principale Dessiner le diagramme de Kagi Nous avons déjà examiné toutes les fonctions nécessaires au fonctionnement de la fonction principale dessin du diagramme de Kagi dans la fenêtre d'indicateur (c'est à dire remplissage des tampons indicateurs). Les paramètres d'entrée des fonctions sont constitués de tableaux de données. Deux d'entre eux sont les tampons de calcul décrits ci dessus (préalablement copiés Prix et Heure), tous les autres sont les tableaux des tampons graphiques de construction de l'indicateur. Les variables nécessaires pour stocker les données sur la construction du diagramme sont déclarées à l'intérieur de la fonction. Puisque le graphique est construit à l'aide de l'instruction de boucle, nous devrions avoir les données sur l'étape de la passe précédente terminée à. Cela peut être réalisé par six variables: linemove où le prix a bougé au passe précédent, linegauge ligne de calibre (largeur de ligne) Yin ou Yang, price1 et price2 prix précédent et actuel étant considéré, priceown et priceup previous price of Une épaule et la taille. Comme on peut le voir, price1 est immédiatement égal au premier élément du tableau des prix copiés du fait que cette variable est impliquée dans les calculs avant la comparaison depuis le tout début de la boucle. Étant donné que les tableaux tampons de la construction graphique indicateur ont ASSERIES indicateur d'indexation, ils doivent être remplis dans l'ordre inverse. Pour ce faire, des matrices de temps ayant la taille appropriée sont mises en oeuvre. Les variables globales pour stocker les données sur le temps, les types de ligne, l'épaule et la taille, ainsi que les prix d'inversion sont ensuite convertis de la même manière. Ensuite, tous les tableaux doivent être remplis avec des valeurs vides ( 1). Cela se fait en utilisant deux petites boucles. Il est possible de joindre tout en une seule boucle. Mais l'utilisation de deux rend toutes les actions effectuées beaucoup plus clair, tandis que le temps d'exécution n'est pas beaucoup changé. En d'autres termes, les tampons graphiques et les tableaux de temps de calcul sont remplis séparément. Maintenant, toutes les variables sont déclarées, converties et remplies, de sorte que la boucle principale puisse être lancée. Il est assez grand (bien que le calcul est effectué assez rapidement) et comprend la numérisation de toutes les barres précédemment copiées. La boucle passe par toutes les barres copiées et remplit les matrices précédemment déclarées nécessaires pour travailler avec elles. Tout d'abord, permet de définir tous les tableaux utilisés dans la boucle: yinint1 valeur primaire du prix Yin linéaire vertical (si ligne Yin verticale est dessinée et le graphique se déplace vers le bas, c'est la valeur supérieure du prix si le graphique se déplace vers le haut Ont le cas contraire) yinint2 valeur secondaire du prix vertical de la ligne Yin (si la ligne ascendante est tracée, c'est la valeur supérieure si la ligne est vers le bas, nous avons le cas contraire) yangint1 valeur primaire du prix de la ligne Yang verticale yangint2 Valeur linéaire de la ligne verticale Yang linyin valeur horizontale de la ligne Yin (prix de l'inversion à la ligne Yin) linyang horizontale valeur de la ligne Yang (prix de l'inversion à la ligne Yang) timechange temps de l'inversion du graphique (construction d'une épaule ou d'une taille ) Timeline la ligne au cours de l'inversion Yin 0 ou Yang 1 timecentralprice la valeur du prix central, le prix au moment où la ligne Yin se transforme en Yang ou vice versa timechangeprice la valeur de renversement (épaule ou taille) Variable est un commun qui ne dépend pas des types de ligne Yin ou Yang. La valeur du prix analysé actuel du tampon de prix est affectée à la variable price2 avant chaque passe de boucle pour une comparaison ultérieure dans les instructions conditionnelles if else. Ensuite, le tableau tampon des données copiées est analysé étape par étape et les matrices mentionnées ci dessus sont remplies. Chaque instruction conditionnelle if else exécute certaines actions selon les conditions: direction précédente des lignes de diagramme (haut ou bas) et apparence précédente des lignes (Yin ou Yang). Ensuite, les conditions de déplacement (si le prix a dépassé un certain nombre de points) sont vérifiées selon le type de construction (standard ou modifié). Si tout va bien, les nouvelles variables (éléments de tableau) sont réaffectées ou définies. Le type de ligne (Yin ou Yang) est défini au tout début. En fonction du mouvement et des actions précédentes, la distribution supplémentaire est effectuée. Il y a deux mouvements de prix possibles: Il y a aussi quatre types d'actions précédentes dans chaque direction: La ligne précédente était Yin et elle remontait La ligne précédente était Yang et elle remontait La ligne précédente était Yin et elle descendait La ligne précédente était Yang Et il est descendu. Ainsi, nous avons huit cas à part les deux premières définitions du mouvement initial des diagrammes (apparence de première ligne). Après cela, la boucle principale est terminée. La réaffectation (renversement) et le remplissage des tampons sont effectués pour construire le diagramme dans une boucle plus petite comprenant le nombre d'inversions de diagramme de Kagi précédemment définies dans la boucle principale et écrites dans une variable. En ce qui concerne la distribution des valeurs de prix supérieurs et inférieurs et des lignes verticales, tout est très simple: un simple renversement est effectué. En d'autres termes, les valeurs primaires précédemment obtenues (matrices ayant des indices 0,1,2,3) sont affectées aux valeurs finales des tampons (élément à indice, ie, 1, 2, 3. valeur). Pour éviter que les lignes inversées (horizontales) ne collent ensemble, la rotation en utilisant l'instruction de commutation est effectuée comme mentionné ci dessus. À cela, le travail de la fonction principale de la construction Kagi graphique est terminée. 3.6. Fonction pour créer l'objet graphique de ligne de tendance Maintenant, examine la fonction pour créer l'objet graphique de ligne de tendance. Cette fonction est nécessaire pour dessiner Kagi sur la carte principale. La fonction est très simple. Il contient les paramètres d'entrée nécessaires pour créer l'objet graphique de la ligne de tendance: nom de l'objet, premier et deuxième prix et points de temps, ainsi que la largeur et la couleur des lignes. Le corps de fonction contient la fonction de création d'objet graphique et six fonctions de modification des propriétés des objets graphiques. 3.7. Dessin Kagi sur la grille principale La fonction suivante qui s'applique à la précédente plusieurs fois est la fonction de construction Kagi sur le graphique principal. Les variables globales remplies dans la fonction principale examinée précédemment de la construction du diagramme de Kagi sont utilisées comme variables d'entrée: le tableau des prix d'inversion (épaules et cotes), le tableau de changement et les prix centraux (le prix auquel la ligne de Yin se transforme en Yang ou Inversement), la matrice de temps d'inversion (située en temps réel, l'indice de matrice z 1 est utilisée pour marquer le début d'inversion), la matrice du type de la ligne à laquelle l'inversion s'est produite (c'est aussi un élément en avant comme Le tableau temporel). Le corps de fonction est constitué d'une boucle. La boucle est divisée en deux parties: dessin des lignes verticales et horizontales. Le premier est également divisé en deux: dessiner les verticales en considérant le changement de ligne (changement de prix central) et l'absence de changement. Notez les paramètres transférés de la fonction de création d'objet de ligne de tendance. Les noms sont répétés. Le nom de l'objet commence par un nombre magique (nécessaire pour supprimer des objets d'un certain indicateur), puis son type est fixe et finalement l'index est assigné. L'index est mis à jour à chaque passage de la boucle. 3.8. Implémentation d'étiquettes supplémentaires Comme je l'ai déjà mentionné ci dessus, l'indicateur implémente des étiquettes supplémentaires. Examinons la fonction fournissant ces étiquettes sur le graphique principal. Il n'y a que deux types d'étiquettes ici: les étiquettes de prix d'inversion et d'inversion de temps sont affichées via l'étiquette de prix et l'étiquette verticale. Les paramètres suivants sont transmis en entrée: attribut du dessin d'étiquette de prix d'inversion et couleur des étiquettes, attributs du dessin d'étiquette de temps d'inversion et du changement de couleur d'étiquettes, les première et deuxième couleurs du temps d'inversion. La fonction entière est divisée en deux parties: la première partie est responsable des étiquettes de temps, tandis que la seconde est des étiquettes de prix. Les deux parties de la fonction sont constituées des boucles limitées par le nombre d'inversions de diagrammes (une variable). L'instruction conditionnelle if else est définie avant la boucle. L'instruction vérifie la nécessité de leur dessin en fonction des paramètres de l'indicateur. La première boucle crée des étiquettes de temps, la définition de nom d'objet est effectuée au début de la boucle (le principe de génération de nom a été décrit ci dessus). Ensuite, la couleur est sélectionnée en fonction de la ligne du tableau de type de ligne déclaré globalement (si le paramètre est défini) et d'autres paramètres sont appliqués à la ligne. La deuxième boucle est responsable de la création d'étiquettes de prix d'inversion. Tout d'abord, le nom de l'objet est généré. Ensuite, la sélection de l'indice de matrice temporelle est définie selon que Kagi doit être construit sur le diagramme principal ou non. Si cela n'est pas fait, les étiquettes seront situées dans l'air et il ne sera pas assez clair à partir de quel endroit l'inversion a eu lieu. Ensuite, l'objet de type étiquette de prix est créé et configuré. Maintenant, voyons comment nous pouvons définir les étiquettes dans la fenêtre d'indicateur. Toutes les étiquettes dans la fenêtre d'indicateur sont principalement des prix, et il n'y a que deux types d'eux: les étiquettes de prix de renversement et les niveaux de prix. Il existe deux types de tirage des niveaux de prix: sur les inversions de graphique et à une distance égale de la plage de prix entière du graphique. Le premier type peut changer la couleur des niveaux de deux façons: selon le type de ligne (Yin ou Yang) et selon l'inversion (haut ou bas). Ainsi, la fonction elle même est divisée en deux boucles: la première est responsable de la création d'étiquettes de prix d'inversion, la seconde traite de la désignation des niveaux de prix. Ce dernier est ensuite divisé en deux types: étiquette à chaque renversement ou étiquettes sur toute la gamme de prix sur un niveau égal. Cette fonction est différente de la précédente en ce qu'elle a des limitations sur le nombre d'étiquettes de prix et de niveaux en raison du fait que, en grand nombre, ils surchargent le graphique compliquant sa compréhension. En raison de cette fonctionnalité, les deux boucles sont limitées par le nombre de passages spécifiés dans les paramètres d'indicateur (nombre d'étiquettes de prix et niveaux). Une telle approche est dangereuse car le nombre de retournements peut s'avérer beaucoup plus petit que le nombre d'étiquettes de prix fixées dans les paramètres. Pour cette raison, la présence d'inversion au cours de chaque passe de boucle est vérifiée pour établir une étiquette de prix ou un niveau. La seule exception est de dessiner les niveaux de prix sur l'ensemble de la fourchette de prix sur une distance égale. La génération d'objets graphiques de type étiquette de prix est effectuée dans les coordonnées dans l'ordre inverse, c'est à dire que les étiquettes sont placées de la date courante au passé. Il en va de même pour les niveaux de prix: les niveaux de prix actuels sont générés en premier, suivis des niveaux précédents. Les exceptions sont des niveaux de prix qui ne dépendent pas des inversions de graphique. Les changements de couleur de niveau de prix sont effectués en utilisant des instructions conditionnelles if else en fonction des paramètres. 3.9. Suppression d'objets graphiques créés précédemment Nous savons déjà que cet indicateur est riche en objets graphiques. Il est temps de penser comment nous pouvons les supprimer rapidement et efficacement. Cette tâche est exécutée par la fonction de suppression des objets graphiques. Le nom initial et le nombre d'objets sont utilisés comme paramètres de fonction. Comme lors de la création, le nom de l'objet doit contenir le numéro magique et le nom d'un type d'objet. L'appel de fonction dans le programme est limité par le nombre d'objets dépassant leur existence possible. Cependant, cela n'affecte pas la fonctionnalité des indicateurs. 3.10. Maintenant, après avoir examiné toutes les fonctions de calcul et de construction du diagramme de Kagi, ainsi que pour créer et supprimer des objets, nous devrions envisager une autre petite fonction pour vérifier l'arrivée des nouveaux barres. La fonction est assez simple et a une période d'analyse des paramètres d'entrée. La réponse des fonctions est également très simple. Il a le type de bool et contient la réponse sur si une nouvelle barre est présente ou non. La base du corps de fonction est l'instruction switch qui transmet le contrôle à ses différents états en fonction de la période. Dans l'exemple, la fonction couvre toute la plage de période, mais une seule période peut également être utilisée. L'algorithme de fonction a été pris à partir du code IsNewBar: l'heure de la dernière ouverture de barre est comparée à la valeur de temps précédemment définie. Si les valeurs sont différentes, il y a une nouvelle barre. La nouvelle valeur est affectée comme précédemment définie et la réponse des fonctions est considérée positive. Si le dernier temps d'ouverture de la barre coïncide avec la valeur temporelle préalablement déterminée, alors la nouvelle barre n'a pas encore apparu et la réponse des fonctions est négative. 3.11. Fonctions OnCalculate () et OnChartEvent () Toutes les fonctions décrites ci dessus sont consolidées dans la fonction portant le même nom Func Consolidation. Cette fonction est lancée chaque fois qu'une nouvelle barre apparaît dans la fonction OnCalculate () et lorsque la touche R est pressée depuis la fonction OnChartEvent (). Avant de générer ou de mettre à jour le graphique, la fonction de suppression de tous les objets graphiques est appelée dans la fonction de consolidation (Consolidation de fonction). Étant donné qu'il ya beaucoup d'objets et ils sont divisés en diagramme principal s et les fenêtres indicateur des étiquettes de prix, les lignes verticales indiquant le temps d'inversion, ainsi que Yin et Yang lignes de tendance verticales et horizontales, le nombre général d'appels de fonction est 7. Ensuite , Les données historiques sont copiées par le prix et le temps. La fonction principale pour la construction de Kagi graphique est lancé par la suite. Après cela, la fonction pour placer toutes les étiquettes de prix sur le diagramme principal et la fenêtre d'indicateur est appelée. Enfin, Kagi est généré sur le graphique principal et la fonction de redessiner les objets est lancée. 3.12. Fonction OnDeinit () La suppression de tous les objets est effectuée dans la fonction de désinitialisation de l'indicateur. Maintenant, passons à l'utilisation de l'indicateur dans la pratique. 4. Utilisation de Kagi Chart en pratique Il existe de nombreuses stratégies de négociation basées sur le graphique Kagi. Nous en examinerons quelques unes. Commençons par la stratégie la plus populaire: vendre quand Yang change de Yin et acheter dans le cas contraire. Ceci est montré sur la Fig. 4: Fig. 4. Vendre lorsque Yang change de Yin et d'acheter dans le cas contraire Comme on peut le voir sur la Fig. 4 (EURUSD M30, 5 points), cette stratégie affiche de bons résultats. The figure displays 8 points for 4 signals, the first one (1) shows that the long position should be opened at 1.3518, which seems to be correct as the price then reaches about 1.3560 comprising 42 points per day. This is a good result. The next point (2) recommends selling at 1.3519. As we can see, the price actually moves down crossing the level of 1.3485 (and covering 34 points) approximately for two hours. Lets move to point (3). The long position is opened at 1.3538 and the price moves up reaching 1.3695. Thus, the profit comprises 157 points already for one day and a half. Of course, these are the highest possible profits but the result is still good enough. The next trading strategy is rolling back from the trend line shown in Fig. 5 (EURUSD M30, 5 points), October 7 18: Fig. 5. Rolling back from the trend line We can move further and trade following the channels. An example of searching for a channel can be examined on Fig. 6 (EURUSD H1, 5 points), roughly the same period: Fig. 6. Trading by channels The less popular strategy based on the fact that after 7 10 successively increasing shoulders or decreasing waists, there will certainly be a reversal (fall ot rise). This is displayed in Figure 7 (GBPUSD H4, 25 points), July 10 October 18: Fig. 7. 7 10 successively increasing shoulders or decreasing waists As can be seen in the image, seven ascending shoulders are followed by quite a considerable fall roughly equal to the half of the previous rise (about 300 points). Lets examine Trading through a price label strategy to show the necessity of using additional indicator parameters. The idea is to enter the market when the price exceeds (buy) or moves below (sell) the previous price label. The strategy is shown in Fig. 8 (GBPUSD H4, 30 points, modified construction): Fig. 8. Trading through a price label Red arrows on Fig. 8 display when to buy or to sell. The arrows are moving from the previous price label displaying the locations the previous price labels were broken through. Time labels serve mainly as trend direction pointers. Since the color of time labels can be changed relative to the line type, and Yin or Yang line type shows trend direction or reversal, the color may help us define the current market mood. For example, lets take IBM stock chart (H4, 1, standard construction) shown in Fig. 9: Fig. 9. Defining trend direction using time labels The chart shows that blue lines are mainly located on the charts tops, while red ones at the bottoms. Conclusion The Kagi chart can be successfully used for market trading as a strategy basis or as an auxiliary tool for more precise analysis. In this article, I have examined the code itself and some specificities of constructing the indicator. The main objective has been creation of the multi functional indicator containing all necessary elements with some extra features that can be disabled. I will be glad to consider new ideas and improvements for the indicator and, perhaps, implement them in the future. Also, please provide me with your feedback. I will be happy to answer your questions concerning the indicator. This article continues the series devoted to developing indicators for constructing the charts from the past. The previous article can be found here. The series is to be continued and I hope to meet you again soon. Thank you for your interest I wish you successful trading, as well as optimized and stable codes.
No comments:
Post a Comment