utiliser valeur retournée par même indicateur

Forum d'entraide ProRealTime : prise en main, réglages, indicateurs, programmation ProBuilder et ProOrder, astuces entre utilisateurs de la plateforme.
jerbrux
Messages : 8
Enregistré le : 28 mars 2015 16:20

utiliser valeur retournée par même indicateur

Message non lu par jerbrux »

Bonjour à tous,

J'ai un petit problème de programmation PRT qui me dérange depuis quelques temps maintenant et je n'arrive pas à comprendre comment en venir à bout.

Donc, voilà je vous explique ce que je souhaiterais faire:
- Je voudrais créer un indicateur qui utilise la valeur retournée à la bougie précédente et réutilise cette valeur pour calculer la valeur de la bougie présente. Le code ci-dessous (qui n'a rien le fait correctement:

Code : #

highlow = high-low
openclose = close - open

coef = highlow / 2


result = result + coef * openclose
return result
Cependant, si j'utilise une variable d'une bougie précédente dans le code, il n'y a plus de valeur retournée, cela donne n/d. cf code ci dessous (j'ai juste remplacé 2 par highlow[1]):

Code : #

highlow = high-low
openclose = close - open

coef = highlow / highlow[1]


result = result + coef * openclose
return result
Est-ce que l'un d'entre vous aurait une idée comment contourner ce problème ?

Merci par avance de votre aide !
Aarnii
Padawan
Messages : 302
Enregistré le : 29 mai 2012 15:35

Re: utiliser valeur retournée par même indicateur

Message non lu par Aarnii »

Là comme ça, je dirai que PRT ne sait pas ce qu'est ton highlow[1], car une telle variable n'existe pas dans PRT.

Je modifierais le code comme suit:

Code : #

highlow = high-low
prev_highlow = high[1] - low[1]
openclose = close - open

coef = highlow / prev_highlow

result = result + coef * openclose
return result
jerbrux
Messages : 8
Enregistré le : 28 mars 2015 16:20

Re: utiliser valeur retournée par même indicateur

Message non lu par jerbrux »

Merci pour ta réponse Aarnii,

Je viens d'essayer avec ta modification mais j'obtiens le même résultat qu'avec mon code, il n'y a rien de retourné, résultat reste à n/d.
(Aussi, il semble que les noms de variables avec un underscore ne soit pas acceptées apparemment).

Peut-être que le problème de ce code est que pour la première valeur utilisée dans le calcul, il ne peut pas trouver une version de la bougie précédente puisque c'est la première valeur possible?
klintistwood
Ewok
Messages : 45
Enregistré le : 21 mars 2015 16:39

Re: utiliser valeur retournée par même indicateur

Message non lu par klintistwood »

jerbrux, le problème est lié à ta variable result qui n'est pas connue au premier moment où tu l'utilises. Si tu fais un return sur toutes tes autres variables, tu verras que les valeurs ressortent sur le graphique.

Vu que ta variable contient toujours la même formule, tu pourrais éviter le problème en faisant ceci:

highlow = high-low
openclose = close - open

coef = highlow / highlow[1]

if not result then
result = coef * openclose
else
result = coef * openclose + coef[1] * openclose[1]
endif
return result

ce n'est probablement pas la solution la plus élégante mais ça a l'air de fonctionner vu que je vois un graphique. Comme je ne sais pas ce que tu veux montrer avec ton indicateur, je ne sais pas si le graphique est correct.
jerbrux
Messages : 8
Enregistré le : 28 mars 2015 16:20

Re: utiliser valeur retournée par même indicateur

Message non lu par jerbrux »

Merci klintistwood !
C'est exactement ce que je cherchais, l'instruction "if not result" §.
Pour l'indicateur que j'essaie de créer, il n'y a pas (encore) de solution élégante, je suis dans le test sur papier/démo ;-)
klintistwood
Ewok
Messages : 45
Enregistré le : 21 mars 2015 16:39

Re: utiliser valeur retournée par même indicateur

Message non lu par klintistwood »

content d'avoir pu t'aider :-)
jerbrux
Messages : 8
Enregistré le : 28 mars 2015 16:20

Re: utiliser valeur retournée par même indicateur

Message non lu par jerbrux »

Hello,

Je remonte ma question car j'ai un autre souci similaire:
Je veut créer un indicateur qui me donne la "moyenne" de points entre la clôture d'une bougie et la clôture de la bougie précédente.
Malheureusement le code que j'ai fait ci-dessous me renvoit un résultat n/d

Ce que je veux faire est réutiliser le résultat de l'indicateur à la bougie précédente et faire la moyenne avec le résultat de la bougie actuelle.

Savez vous s'il est possible de faire cela ?

Code : #

diff = abs(close-close[1])

if not result then
result = diff
else
result = (result + diff)/2
endif

return result


un grand merci pour votre aide par avance !
jerbrux
Messages : 8
Enregistré le : 28 mars 2015 16:20

Re: utiliser valeur retournée par même indicateur

Message non lu par jerbrux »

J'ai essayé un peu plus et je pense avoir compris pourquoi : en fait il faut assigner la valeur de clôture à la fin du code pour qu'il soit repris dans le calcul lors de la bougie suivante.
Donc pour mon exemple, ça doit donner çà:

Code : #

if not fermeture then
signal = 0
else

delta = abs(close-fermeture)

signal = (signal + delta)/2
endif

fermeture = close

return signal
J'espère que ça aidera quelqu'un. C'est pas bien gros mais ça m'a bien embêté pendant un moment :)

A+