Condition Scanner (cs)
Installation :
Pour démontrer ce que le scanner peut faire :

Le code commun à tous les scans :
Le code spécifique à la stratégie PP (Power Pro) :
Le code spécifique à la stratégie MAX (crossover de moyennes mobiles) :
Le code dont les identifiants commencent par csXXXX :
Comment je m'y prends pour coder une nouvelle condition :
Je décide d'un identifiant de stratégie (par exemple PB pour pinbars).
Je configure ma fenêtre comme mentionné sous "Pour démontrer ce que le scanner peut faire", en supprimant tous les indicateurs existants.
Si mon nouveau scan repose sur des indicateurs sur le graphique, je les construis en utilisant csXXXX_0.mq4 comme modèle. Je pense à 'enregistrer sous...' csPB_0.mq4. J'applique mon indicateur personnalisé sur le graphique de gauche.
Si j'ai besoin d'un indicateur dans une fenêtre séparée, je le construis aussi. Je pense à 'enregistrer sous...' csPB_1.mq4. Je l'applique au graphique de gauche.
Je construis des indicateurs personnalisés plutôt que d'utiliser des indicateurs standards pour pouvoir m'y référer ailleurs en utilisant la fonction iCustom. De cette manière, si je change d'avis sur les paramètres de base de ma stratégie (par exemple la méthode de la moyenne mobile), je n'ai qu'à modifier mes indicateurs personnalisés. Si j'avais utilisé des indicateurs standards, je devrais les changer et ensuite fouiller dans les entrailles de mon code pour adapter ce changement d'avis.
Je prends csXXXX_Chart.mq4, remplace toutes les instances de 'XXXX' par mon identifiant de stratégie 'PB', et j'enregistre le code sous csPB_Chart.mq4. Cela ne va pas encore compiler car il reste du code "inclus" à écrire.
Maintenant, fournissons le code "inclus".
Si les conditions que je veux tester sont très simples, j'utilise simplement le fichier "inclus" csXXXX_GetBarFlag.mqh, je code ce que je veux, et 'enregistrer sous...' csPB_GetBarFlag.mqh. Mais si le codage est délicat, je retourne au csPB_Chart.mq4 que j'ai créé précédemment, je commente la ligne de code qui se lit maintenant "#include <csPB_GetBarFlag.mqh>", et je construis le code que je veux directement dans le fichier csPB_Chart.mq4. Lorsque j'ai fait propre, je déplace/coller le code de recherche de conditions dans le fichier "inclus" 'csPB_GetBarFlag.mqh' et je décommente l'instruction #include dans le fichier 'csPB_Chart.mq4'.
Maintenant, le fichier 'csPB_Chart.mq4' peut être compilé et appliqué au graphique de gauche.
À ce stade, j'enregistre le modèle pour le graphique de gauche sous csPB-CHART.tpl. Cela incorpore tous les indicateurs personnalisés sur le graphique, les indicateurs personnalisés dans une fenêtre séparée, et le tracé des résultats tels qu'ils s'appliquent au graphique actuel.
Je charge le fichier 'csXXXX_Panel.mq4', remplace toutes les instances de "XXXX" par "PB", puis 'enregistrer sous...' "csPB_Panel.mq4". Ce dernier fichier est compilé et appliqué au graphique de droite. Il peut être un peu lent lors de la première application, mais n'utilise pas beaucoup de ressources par la suite.
Je stocke csPB_panel.tpl comme un modèle pour le graphique de droite.
Je vais généralement stocker csPB comme un profil.
NOTE : Lors de la création d'indicateurs personnalisés et de leur référence avec la fonction iCustom, je fais attention à ce que les noms soient exactement corrects. Vous n'obtenez pas d'avertissement si iCustom fait référence à un indicateur qui n'existe pas.
NOTE : Il peut y avoir un bug tel que lorsque l'indicateur de panneau est chargé pour la première fois, il produit des résultats qui ne sont pas cohérents avec ceux du graphique spécifique affiché. Je trouve que si je change l'échelle de temps dans la fenêtre du panneau (forçant ainsi un recalcul), tout s'affiche correctement. Je serais reconnaissant à quiconque pourrait m'aider à résoudre ce problème.
NOTE : Dans le code ...GetBarFlag.mqh que vous développez vous-même, vous pouvez retourner n'importe quel entier au programme appelant pour être affiché. Dans l'état actuel, zéro signifie 'pas de résultat' et provoque l'affichage d'un symbole gris indiquant quelle barre a été testée. Retourner un entier négatif affichera un symbole rouge, tandis qu'un entier positif affichera un symbole vert.
Quelques aspects du logiciel :
Le code a été écrit en tant qu'indicateurs de sorte que, lorsqu'un panneau est affiché et que vous voulez regarder une paire et une période de temps particulières, il vous suffit de choisir la paire dans la fenêtre de Market Watch, de la glisser et de la déposer sur l'espace graphique actuel et de changer la période de temps en conséquence. Le modèle s'occupe du reste.
Pour réduire la surcharge informatique, j'ai fait deux choses.
Premièrement, lors du traitement des tableaux de séries temporelles, je ne remonte généralement que 200 barres.
Deuxièmement, le logiciel d'affichage du panneau ne teste pas les conditions de l'utilisateur à chaque tick. Il utilise un mécanisme de minuterie de sorte que le test est appliqué à bar[0] uniquement si bar[0] est formé à 90 %, sinon le test est appliqué à bar[1]. Si bar[1] est en focus (c'est-à-dire que bar[0] est formé à moins de 90 %), il est testé une fois et un changement de temps vers bar[0] est calculé. Pour chaque tick suivant qui arrive jusqu'à ce que le temps de changement soit atteint, rien ne se passe. Je ne suis pas sûr à 100 % d'avoir bien codé cela, mais cela semble fonctionner correctement.
Articles connexes
- iMAX3 : Détecteur de Tendances Rapides pour Traders
- Découvrez l'indicateur Tymen STARC Bands MTF pour MetaTrader 5
- Découvrez le 3ème Génération XMA : L'indicateur essentiel pour MetaTrader 5
- Découvrez l'indicateur 3 en 1 Stochastic pour MetaTrader 5
- Améliorez vos graphiques avec ClearView : Indicateurs et modèles pour MetaTrader 5