Description :
Oscillateur Stochastique Standards avec une fonctionnalité de sensibilité.
Ce nouvel indicateur conserve les mêmes paramètres que le Stochastique classique, mais il intègre un paramètre supplémentaire de "sensibilité" (Sens dans la fenêtre des paramètres).
Ce paramètre permet de prendre en compte uniquement les oscillations en dessous d'un certain seuil, défini en points. Cela nous aide à réduire considérablement les faux signaux.
Le Stochastique classique de Lane place le prix actuel entre un prix maximum et un prix minimum sur une période donnée, définie par la valeur %K (Kperiod), sans faire de distinction entre des extrêmes comme 1 point ou 100 points. Dans ces deux scénarios, les résultats seront identiques, ce qui nous conduit à des signaux de surachat/survente.
Mais en utilisant un seuil, nous pouvons considérer uniquement les oscillations significatives.À la Fig. 1 (EURUSD, 1M), le graphique des prix, le stochastique standard et l'indicateur proposé sont présentés.
Image :

Fig 1.
Les champs de l'indicateur sont identiques à ceux de l'iStochastic, mais la différence réside dans l'ajout du paramètre Sens - sensibilité.
Les buffers de sortie sont les mêmes : 0 - valeur Stochastique elle-même, 1 - ligne de signal.
double iCustom(string symbol, int timeframe, "_StochNR", int %Kperiod, int %Dperiod, int slowing, int method, int price_field, int mode, int shift); // StochNR ajout d'un nouveau champ Sensfield double iStochastic(string symbol, int timeframe, int %Kperiod, int %Dperiod, int slowing, int method, int price_field, int mode, int shift) // stochastique standard
Pour une utilisation pratique, il est possible de l'appeler comme indiqué ci-dessus, mais il est préférable de le faire d'une autre manière. Il suffit d'ajouter un peu de code à votre fonction Stoch :
double Stoch(int Kperiod, int Slowing, int PriceFild, double sens, int i) { // prix maximal et minimal double max,min,c; for(int j=i; j<i+Slowing; j++) { if(PriceFild==1) { // par Close max+=Close[ArrayMaximum(Close,Kperiod,j)]; min+=Close[ArrayMinimum(Close,Kperiod,j)]; } else { // par High/Low max+=High[ArrayMaximum(High,Kperiod,j)]; min+=Low[ArrayMinimum(Low,Kperiod,j)]; } c+=Close[j]; } double delta=max-min; if(delta<sens) { sens/=2; max+=sens; min-=sens; } delta=max-min; if(delta==0) double s0=1; else s0=(c-min)/delta; return(100*s0); }
Il est clair que si vous avez besoin d'une ligne de signal, vous aurez besoin d'une moyenne mobile de sa valeur. Une autre méthode consiste à l'obtenir depuis le 1er buffer de l'iCustom, mais cela sera plus lent.
Comme vous pouvez le voir, le nom est désormais plus informatif, indiquant le type de calcul du prix. Si la sensibilité est définie à une valeur supérieure à 0, cette valeur est ajoutée au nom de l'oscillateur.
Remarque de l'éditeur :
Notez qu'il s'agit d'une traduction miroir de la version originale en russe.
Si vous avez des questions pour l'auteur, des suggestions ou des commentaires, il est préférable de les poster ici.
Si vous trouvez ce code utile pour le trading ou à des fins éducatives, n'oubliez pas de remercier l'auteur.
Articles connexes
- iMAX3 : Détecteur de Tendances Rapides pour Traders
- Découvrez le 3ème Génération XMA : L'indicateur essentiel pour MetaTrader 5
- Découvrez l'indicateur Tymen STARC Bands MTF pour MetaTrader 5
- WKBIBS : L'oscillateur incontournable pour MetaTrader 5
- Découvrez l'indicateur 3 en 1 Stochastic pour MetaTrader 5