Accueil Indicateur technique Publication

Doji Hunter : L'indicateur incontournable pour MetaTrader 4

Pièce jointe
9883.zip (1.55 KB, Télécharger 0 fois)

Pour commencer, j'ai ajouté une variable RangeOfBars qui vous permet de spécifier le nombre de bougies à analyser en arrière depuis la bougie actuelle pour repérer un doji. Cela permet également de détecter des double dojis. En réglant le RangeOfBars sur 2 ou 3, vous pouvez examiner la première, la deuxième ou la troisième position de bougie pour identifier un potentiel double doji. En fait, vous pouvez créer une méthode IsDoji en vous basant uniquement sur la première position de bougie, puis créer une seconde méthode qui vérifie les première et deuxième positions pour un double doji. De cette manière, vous pouvez maintenant écrire votre code pour dire : si IsDoji, pas de trade, si IsDoubleDoji, trade sur extension, etc.

Le codage original pour le Doji Reader 2 gérait mal les conditions à 5 chiffres, désolé pour ça, mais ici vous verrez qu'il existe une méthode plus efficace pour l'écrire. Certes, la mienne n'est peut-être pas la meilleure non plus, mais c'est un pas de plus vers l'optimisation.

J'ai conservé le ShowCandleBox, car je trouvais que c'était une belle manière de placer un indicateur sur le graphique et cela a bien fonctionné lors des tests. Les indicateurs supplémentaires étaient sympas, mais je voulais garder les choses simples. Les textes supplémentaires étaient aussi intéressants et quelque peu éducatifs pour l'utilisateur sur la détection du doji, mais encore une fois, l'idée était de rester simple.

Un changement majeur a été de modifier les valeurs de configuration pour les transformer en doubles au lieu d'entiers. En les changeant en doubles, nous pouvons tirer parti de la précision à 5 chiffres et obtenir un doji plus propre et plus précis, comme vous le constaterez lors de son utilisation. Notez qu'en utilisant un indicateur basé sur un double, il ne faut jamais utiliser un entier, sauf si c'est pour compter quelque chose.

J'ai également ajouté une réinitialisation du compteur pour que les boîtes ne s'accumulent pas indéfiniment dans le processus de comptage. À chaque fois que l'indicateur se traitait, il continuait de faire grimper le même compteur. En incluant la réinitialisation, nous obtenons toujours un compte précis, mais il se remet à zéro au début de chaque cycle de traitement.

De plus, j'ai inclus un buffer et un processus de nettoyage de buffer, afin que vous puissiez passer 0 par défaut et 1 si un doji est trouvé dans le code en utilisant le buffer. En gardant la plage petite, nous n'utilisons pas de ressources CPU excessives pour traiter des données anciennes qui ne nous intéressent pas.

Voici un exemple de déclaration pour l'intégrer dans votre code :

extern string __DOJI_HUNTER_SETTINGS = "-----";
int RangeOfBars = 3;
bool ShowCandleBox = true; // false pour masquer la boîte de bougie
extern color BoxColor = MistyRose; // ajoutez votre couleur préférée

extern string __Regular_Doji_Settings = "-----";
bool FindRegularDoji = true; // false pour désactiver
extern double MinLengthOfUpTail = 0.1; // bougie avec une mèche supérieure égale ou supérieure à cela apparaîtra
extern double MinLengthOfLoTail = 0.1; // bougie avec une mèche inférieure égale ou supérieure à cela apparaîtra
extern double MaxLengthOfBody = 0.2; // bougie avec un corps inférieur ou égal à cela apparaîtra
extern string __Dragonfly_Doji_Settings = "-----";
bool FindDragonflyDoji = true; // false pour désactiver
extern double MaxLengthOfUpTail1 = 0; // bougie avec une mèche supérieure égale ou supérieure à cela apparaîtra
extern double MinLengthOfLoTail1 = 0.1; // bougie avec une mèche inférieure égale ou supérieure à cela apparaîtra
extern double MaxLengthOfBody1 = 0.2; // bougie avec un corps inférieur ou égal à cela apparaîtra
extern string __Gravestone_Doji_Settings = "-----";
bool FindGravestoneDoji = true; // false pour désactiver
extern double MinLengthOfUpTail2 = 0.1; // bougie avec une mèche supérieure égale ou supérieure à cela apparaîtra
extern double MaxLengthOfLoTail2 = 0; // bougie avec une mèche inférieure égale ou supérieure à cela apparaîtra
extern double MaxLengthOfBody2 = 0.2; // bougie avec un corps inférieur ou égal à cela apparaîtra

Voici un appel d'exemple pour obtenir les données sur le doji. Attention, placez cet appel dans la section des événements de nouvelle bougie de votre code, le placer dans l'événement de tick vous causera des problèmes :

Doji1 = iCustom(NULL, 0, "Doji_Hunter", 
       RangeOfBars, ShowCandleBox, BoxColor, FindRegularDoji, 
       MinLengthOfUpTail, MinLengthOfLoTail, MaxLengthOfBody, 
       FindDragonflyDoji, MaxLengthOfUpTail1, MinLengthOfLoTail1, 
       MaxLengthOfBody1, FindGravestoneDoji, MinLengthOfUpTail2, 
       MaxLengthOfLoTail2, MaxLengthOfBody2, 0, 0);

Le code ci-dessus obtiendra la valeur de la première position de bougie, soit 0 soit 1, où 1 = doji trouvé.

Articles connexes

Commentaire (0)