Bonjour Nicolas ,
voila un petit programme dont je ne comprend pas le retour sur le graphique
a = time
b = CurrentTime
drawtext(a,barindex,high * 1.001)
drawtext(b,barindex,low * 0.999)
return
la fonction currenttime est sensé retournée l’heure système du PC (09h36 dans le cas présent) alors pourquoi ici currenttime et time sont identique tous le long du graphique ?
Pour moi en dessous de chaque bougie l’indication devrait etre 093600
Je suis sous PRTb v12 beta
merci pour tes éclaircissements
CurrentTime retourne l’heure de la bougie en cours, mais en effet dans l’historique ce sera l’heure de la bougie qui est lu à ce moment précis. Cela a été fait pour permettre de la reproductibilité dans le passé et pas uniquement dans le présent.
Pour tester des horaires précis, tu peux désormais utiliser le timestamp Unix avec l’instruction TIMESTAMP et OPENTIMESTAMP.
Merci Nicolas pour ta réponse rapide ,
mon problème c’est que je veux lancer une série d’instruction uniquement sur la dernière barre car ces instructions consomme beaucoup de temps (boucle imbriquées)
Ma question est donc comment faire puisque à chaque interaction l’indicateur pense qu’il est la dernière barre .
islastbarreupdate ne règle pas le problème et pour calculateonlastbar non plus car j’ai besoin des valeurs des 500 dernière bougie.
Existe -il une instruction qui ne lance le programme que pour la dernière bougie affichée ?
merci
Avec IsLastBarUpdate, lance une boucle sur les 500 derniers chandeliers pour récupérer tes valeurs et calculer ce que tu as à faire.
Sinon, selon ton code, je pense que
defparam calculateonlastbars=500
devrait fonctionner ?
Avec un exemple concret je pourrai mieux t’aider 🙂
Merci Nicolas pour ton aide
Voici un exemple
le but est de tracer une résistance/support (lignes rouges) quand les high ou low de 2 bougies distantes sont égaux à un pourcentage près (mavariation)
Comme tu peux le voir , j’utilise 2 boucles imbriqués ce qui consomme de la ressource .
Je n’ai besoin que de faire cela que en partant de la dernière bougie , pourtant je pense qu’il fait cela à chaque barre de l’indicateur d’où un temps trop long (malgré islastbarupdate)
defparam drawonlastbaronly= false
DEFPARAM CalculateOnLastBars = 500
nbmax = 500
mavariation = 0.001
if islastbarupdate then
for u = 1 to nbmax -4
for f = u + 2 to nbmax
maxi = highest[f-1](high)
mini = lowest[f-1](low)
if high[u] >= maxi then
if (abs(high[u] - high[f])/high[u])* 10000 < mavariation and (high[f-1] <= high[f]) then
DRAWSEGMENT (barindex [f],high[f],barindex, high[u]) coloured(255,0,0) style(line,1)
endif
endif
if low[u] <= mini then
if (abs(low[u] - low[f])/low[u])* 10000 < mavariation and (low[f-1] >= low[f]) then
DRAWSEGMENT (barindex [f],low[f],barindex, low[u]) coloured(255,0,0) style(line,1)
endif
endif
next
next
endif
return
J’ai codé exactement la même chose récemment, tu trouveras une version fonctionnelle ici: https://www.prorealcode.com/topic/droites-avec-2-restrictions/#post-200756
Cela est-il lié à une quelconque formation récente ? Simple curiosité et pour référence pour les prochaines demandes.
euh, il n’y a pas de “variation” paramétrable, et il n’y a que les LOW, mais c’est une très bonne base 🙂
Bonjour Nicolas ,
merci pour ton code.
Effectivement la structure de ton programme est de même type (2 boucles imbriquées)
Ce qui augmente rapidement le nombre de boucle et nous oblige à limiter l’analyse sur un petit nombre de bougie.
Non cela n’est pas du à une formation récente je voulais simplement me faciliter la détection des low high , mon oeil n’est pas assez aiguisé pour bien les détecter.
c