Bonjour,
J’ai une function FCT1 assez gourmande en temps de calcul.
J’aimerais afficher le résultat de cette FCT1 :
- sur les barres historiques (OK utilisation DRAWONLASTBARONLY = False)
- mais aussi différement (autre présentation) sur la dernière barre (il faudrait donc normalement l’utilisation de DRAWONLASTBARONLY = True)
Y a-t-il une autre solution que d’inclure l’indicateur 2 fois (qui double donc le temps de calcul) ?
Merci.
Hormis, si ton code retrace sans arrêt les résultats sur les chandeliers précédents, une fois l’historique lu, les calculs ne se feront plus sur les chandeliers précédents le dernier. Donc quoi qu’il arrive, les calculs de ton indicateur ne se feront toujours que sur le dernier chandelier.
Sinon, pour savoir si on est présent sur le dernier chandelier, tu peux utiliser IsLastBarUpdate.
Cette instruction est utilisée pour déterminer si la barre actuelle est la dernière mise à jour dans un graphique en temps réel. C’est particulièrement utile pour des stratégies ou des indicateurs qui nécessitent une action ou un calcul uniquement sur la dernière barre, notamment en temps réel.
Voici quelques points clés sur islastbarupdate :
- Utilisation:
islastbarupdate renvoie 1 si la barre actuelle est la dernière barre mise à jour dans un graphique. Sinon, elle renvoie 0.
- Contexte d’utilisation: C’est très utile dans les graphiques en temps réel où tu veux exécuter un calcul ou une action uniquement lorsque la dernière barre est mise à jour, sans affecter les barres historiques.
- Exemple de code:
if islastbarupdate then
// Effectue un calcul ou une action sur la dernière barre
endif
Dans cet exemple, le code à l’intérieur du bloc if ne s’exécute que lorsque la dernière barre est en train d’être mise à jour. Cela permet d’optimiser les performances en évitant des calculs inutiles sur chaque barre historique.
J’ajouterais que lorsque l’on utilise l’instruction DRAWONLASTBARONLY = True, le code efface tous les tracés précédant à chaque nouvelle bougie et ne retrace que ce qui découle de la dernière lecture du code (en relation avec la dernière bougie).
Dans ces cas là, si l’on veut garder à l’écran une partie ou la totalité des tracés précédant, il faut les enregistrer dans un tableau et utiliser une boucle qui parcours le tableau et qui permet de redessiner le résultat de cette FCT1 calculé à partir des barres historiques.
C’est le cas par exemple ici
Merci beaucoup à vous 2 c’est exactement ce que je cherchais… simple et efficace en plus
En fait j’ai toujours le même problème
J’utilise bien
DEFPARAM DRAWONLASTBARONLY=False
//je dessiner ici des ronds des triangles etc... sur l'historique
.......
if islastbarupdate then
//Je dessine ici mon indicateur représentant le statut à la dernière bougie
//mais sa géométrie est variable et donc les différentes formes/tailles etc...
//se chevauchent puisque il garde les dessins faits précédemment...
endif
Donc la seule solution que je vois c’est le tableau + DRAWONLASTBARONLY=True mais pour l’avoir déjà fait une fois sur un autre indicateur, ça consomme des ressources : les ventilos se mettent en route !
Merci
la seule solution que je vois c’est le tableau + DRAWONLASTBARONLY=True
En effet, c’est la solution la plus efficace. Concernant la consommation de ressources, tout dépend de ton code, mais c’est en général beaucoup plus rapide que de faire les calculs sur chaque bougie de l’historique.
OK merci alors je réessayerai et ferai attention à optimiser un peu le code
Merci.