Merci pour votre réponse Iván,
Malheureusement cela ne fonctionne pas. J’ai eu la même idée précédemment, et la partie de code qui vérifie la tendance du 1H renvoie systématiquement 0, alors que la même portion de code appliquée en indicateur sur le graphique 1H fonctionne parfaitement.
De la même façon, la partie de code qui vérifie la tendance du 15mn a un comportement erratique, en particulier lorsque les bougies du 15mn sont proches de la MME200. Le reste du temps, l’indicateur fonctionne mieux que le 1H, mais sans êtrte fiable pour autant.
À mon avis, le logiciel ProRealTime prend en compte la dernière bougie de l’intervalle utilisé dans TimeFrame pour faire les calculs, et non les valeurs exprimées dans le graphique en 15mn. Je m’explique :
La bougie 14h00 (Time vaut donc 140100) en 15mn est constituée de plusieurs bougies en 1mn s’étalant de 134600 (13h45) jusqu’à 140100 (14h00).
Sur le graphique en 15mn, des fonctions invisibles pour l’utilisateur enregistrent le cours d’ouverture, le cours de clôture, le high et le low de chaque bougie 15mn. Quand un programme s’exécute sur le 15mn il fait appel à ces valeurs.
Lors de l’utilisation de TimeFrame 15mn sur un graphique en 1mn, le programme prend les valeurs de la dernière bougie 1mn constituant la bougie en 15mn, qui n’a donc pas les mêmes valeurs Close Open High Low que la bougie 15mn.
De fait, le programma devient faussé.
Je ne suis pas certain s’il s’agit d’un bug du programme ou s’il a été conçu exprès de cette manière. Et je ne sais pas si une bougie en 15mn chargée via TimeFrame en 1mn s’appuie véritablement sur la dernière bougie en 1mn la constituant ou s’il s’appuie sur la première, des recherches plus approfondies me donneront sûrement la réponse.
De là, je vois plusieurs solutions, mais je ne sais pas si ProRealTime embarque les fonctions nécessaires pour les rendre concrètes.
1. Utiliser des variables super globales. En programmation “classique”, ce sont des variables accessibles depuis n’importe quel endroit du code. Ainsi un indicateur dans un graphique 15mn pourrait générer une variable SuperGlobal = x, et je pourrais faire appel à cette variable dans le code d’un autre indicateur sur un autre graphique, par exemple dans le 1mn : IF SuperGlobal > 2 THEN…
2. Écrire les valeurs de l’indicateur du graphique en 15mn dans un fichier, puis lire ce fichier depuis un autre programme.
3. Trouver le moyen d’appeler un autre programme depuis mon programme principal ou de faire fonctionner TimeFrame correctement.
4. Ne travailler que dans le graphique en 1mn, et reconstituer à la main les calculs faits dans les autres graphiques. Cela implique de créer des fonctions pour repérer les Open Close High Low de chaque tranche horaire et de les stocker dans un array, puis de faire pareil pour les 15mn, puis de recalculer les MME200 selon ces tableaux, etc. J’aimerais éviter d’employer cette méthode beaucoup plus chronophage.
Si vous avez des informations, même partielles, à propos des solutions que j’ai évoquées, je vous serai infiniment reconnaissant de me les partager.