Normalisation des Oscillateurs : Optimisez vos Indicateurs de Trading

Mike 2008.11.20 16:03 12 0 0
Pièce jointe

Dans le monde du trading, les oscillateurs peuvent parfois être un véritable casse-tête. Je me souviens des moments où je me questionnais sur l'efficacité de leur utilisation. Une des solutions que j'ai souvent explorées est la normalisation de leurs valeurs, c'est-à-dire ramener les oscillations de l'indicateur dans l'intervalle [-1;1]. Cela ouvre de nouvelles perspectives, notamment la possibilité de contrôler les valeurs de l'indicateur par des niveaux concrets (0.5, 0.8, etc.), au lieu de se fier à des valeurs approximatives fluctuantes selon le marché. Bien sûr, si votre indicateur est déjà normalisé, pas besoin de s'en préoccuper. Mais si ce n'est pas le cas, je vous encourage à l'essayer. Et ne me jugez pas trop durement pour le code brut !

Paramètres :

string Indicateur - l'indicateur lui-même qui sera passé à la fonction icustom(). Malheureusement, les outils d'automatisation MQL4 ne suffisent pas pour intégrer les indicateurs standards ici. Mais qui peut empêcher un codeur curieux de modifier une entrée dans le programme ?
int mode - le numéro de la ligne nécessaire de l'indicateur initial...
int param1
int param2 - ... ainsi que ses paramètres. Encore une fois, il faut admettre que l'imagination des développeurs MQL est limitée à écrire des fonctions avec un nombre variable de paramètres (comme Print) et à prendre en charge l'arithmétique d'adresse (qui, à mon avis, est juste là pour faire sentir les utilisateurs ordinaires inférieurs aux dieux :)))). Donc, travaillons manuellement.

Image :

Commentaires :

Les calculs se déroulent en deux étapes :

1. À l'étape d'initialisation (la fonction init(), pour ceux qui ne le savent pas :), l'ensemble du tableau de données de l'indicateur est analysé afin de déterminer la période distinctive, c'est-à-dire la période pendant laquelle la valeur quadratique moyenne de l'indicateur peut donner un aperçu de cette valeur quadratique moyenne (MSV) sur l'ensemble de l'historique.

Laissez-moi expliquer. Supposons que nous avons un oscillateur et que nous avons calculé sa moyenne quadratique sur plusieurs périodes d'oscillation consécutives. Mettons-nous d'accord sur le fait qu'il doit y avoir, par exemple, 3 périodes (comme j'ai - #define PERIODS_CHARACTERISTIC 3, je ne recommande pas d'en utiliser plus, sinon le processeur sera surchargé). L'essence du calcul consiste à déterminer combien de barres en moyenne composent une période (c'est-à-dire 2*intervalle moyen entre deux zéros de l'indicateur), et à multiplier la valeur obtenue par 3.

2. Il reste à calculer la MSV pour chaque barre (comme la racine carrée de la dispersion) sur les trois périodes obtenues, pour normaliser la valeur de notre indicateur en conséquence, et enfin, ajuster le tout au diapason dynamique [-1;1] en le faisant passer par la fonction de compression f(x)=tanh(x) (tangente hyperbolique, que j'ai dû écrire moi-même :)).

Voici un exemple purement technique. La ligne verte sur l'image est mon ancien oscillateur qui caractérise l'activité du marché (en réalité, c'est un peu comme le MACD, mais basé sur les volumes). La ligne bleue est également un oscillateur, mais déjà normalisé par le -=Normalizator=-. Les niveaux +-0.75, +-0.5, +-0.25 sont clairement visibles, et on peut également observer que tous les maximums et minimums, les zones d'augmentation et de diminution, ainsi que les points de croisement avec le niveau zéro conservent leur position.

Voilà, c'est tout ! Je ne suis pas responsable si certains n'aiment pas cela.

Liste
Commentaire 0