ProRealTime
Pour discuter sur l’interface de ProRealTime Software, nos configurations graphiques...
Répondre • Page 1 sur 1

Garder une valeur en mémoire

par layzard » 29 janv. 2015 19:15

Bonjour à tous,

Malgré recherches je ne trouve point réponse. Voici la situation :
Je suis en train de coder un indicateur et lorsqu'il dépasse une certaine valeur je souhaiterai garder la valeur du prix du sous-jacent en mémoire.
Comment faire ?

Je suis parti sur quelque chose dans le style :
IF indicateur > 2 THEN
valeur = Close
ENDIF

Le problème c'est que si la Bougie suivant vérifie encore la condition, valeur va changer alors que je souhaite qu'elle reste la même jusqu'à ce qu'une autre condition se vérifie.

Bon(s) trade(s) et merci d'avance !
++
layzard

Re: Garder une valeur en mémoire

par bzumell1 » 29 janv. 2015 20:57

Tu ajoutes un compteur.

#initiatlisation
compteur=0
.../...
IF indicateur > 2 AND compteur = 0 THEN
valeur = Close
compteur = compteur + 1
ENDIF

Re: Garder une valeur en mémoire

par Mister Hyde » 29 janv. 2015 21:01

layzard a écrit : Le problème c'est que si la bougie suivant vérifie encore la condition, valeur va changer alors que je souhaite qu'elle reste la même jusqu'à ce qu'une autre condition se vérifie.
Tu viens de donner la réponse, il faut que dans ton IF THEN tu rajoutes cette condition.

Re: Garder une valeur en mémoire

par frigolite » 29 janv. 2015 22:17

J'ai trouvé un très, trop, bon moyen de garder en mémoire une valeur, celle de mon capital il y a 6 mois. :)

Re: Garder une valeur en mémoire

par layzard » 30 janv. 2015 00:45

@frigolite Haha !
Spoiler:
frigolite a écrit :J'ai trouvé un très, trop, bon moyen de garder en mémoire une valeur, celle de mon capital il y a 6 mois. :)
@Mister Hyde bzumell1Merci pour vos réponses rapides.
J'ai réussi à faire ce que je souhaitais, voici le code pour les prochains qui en auront besoin :

Code : #

compteur = 1
condition1 = [...] // Il est très important de noter que je fais la structure suivante car //condition 1 est plus "simple" à obtenir que condition2 i.e. la condition la plus simple doit ////être en première
condition2 = [...]
WHILE condition1 DO
WHILE condition2[compteur] DO
[...]
compteur = compteur + 1
WEND
BREAK
WEND
En espérant avoir été clair...
Encore merci à vous :mercichinois:

Re: Garder une valeur en mémoire

par ladefense92800 » 12 mars 2015 22:05

je relance un peu la file , en fait je pensait que le code de layzard faisait ce que je pensait mais non ....

En fait ce que voudrait obtenir c est ce que l ' on voit sur ces deux graphiques de la file de teg .... que je vous met a la suite
epargne63.jpeg
epargne63.jpeg (44.76 Kio) Vu 2240 fois
epargne62.jpeg
epargne62.jpeg (33.14 Kio) Vu 2240 fois

ce que je voudrait reproduire c est l espece de highest ( en rouge ) que l on voit sur le graph des prix .

comment ça marche :

- si rsi superieur a 70 je prend max (open,close)

- si rsi repasse en dessous de 70 je garde le derniere valeur lorsque rsi etait superieur a 70 .

j ai deja demandé de l aide sur un autre site mais sans succes .

En fait j ai deja produit quelque chose mais ça me donne souvent un boucle sans fin .

quelques codes qui marche pas :

Code : #

condition = rsi>70
WHILE condition  DO
signal=max (open,close)
if rsi>70 then
signal=signal[1]
continue
break
endif
WEND
RETURN signal

Code : #

compteur = 0
condition = rsi>70
signal=max (open,close)
WHILE condition  DO
signal=signal

if rsi>70 then
signal=signal[compteur]
compteur = compteur + 1
continue
break
endif
WEND
RETURN signal

Re: Garder une valeur en mémoire

par Arnaud_vh » 12 mars 2015 23:45

Je regarderai peut être le détail de ton problème plus tard mais en tout cas trois choses
- Utiliser une instruction genre Continue ce n'est pas sérieux si on veut programmer proprement, idem pour break
- Si tu utilises un if, tu dois mettre un else sinon ça veut dire que tu ne maitrises pas ce qui se passe voir que tu n'y as pas réfléchis
- Avoir Continue et Break à la suite, à mon avis ça ne doit pas faire ce que tu attends car le break n'est jamais exécuté

Cela dit je suis le premier à râler contre les limitations du langage prt

Re: Garder une valeur en mémoire

par ladefense92800 » 12 mars 2015 23:58

Arnaud_vh a écrit :Je regarderai peut être le détail de ton problème plus tard mais en tout cas trois choses
- Utiliser une instruction genre Continue ce n'est pas sérieux si on veut programmer proprement, idem pour break
- Si tu utilises un if, tu dois mettre un else sinon ça veut dire que tu ne maitrises pas ce qui se passe voir que tu n'y as pas réfléchis
- Avoir Continue et Break à la suite, à mon avis ça ne doit pas faire ce que tu attends car le break n'est jamais exécuté

Cela dit je suis le premier à râler contre les limitations du langage prt
vu comme ça tu as raison ...........mais la tu as juste les derniers codes que j ai ecrit , avant je suis passe par pleins pleins de versions .


je regarderait pour le continue et le break et le reste , mais si j ai mis " continue" et "break " c est que ça devait me dire "boucle sans fin" deja ........ :D

toutes les aides sont les bienvenues . :mercichinois:

je me considere comme un codeur amateur ( c est a dire qui " aime " ) et je doit bien l avouer assez peu doué ...

Re: Garder une valeur en mémoire

par Arnaud_vh » 13 mars 2015 00:10

Une boucle while bien écrite elle s'articule autour de conditions que tu maîtrises dans la boucle genre un compteur ou un booléen. Si tu te plantes avec continue c'est la boucle infinie garantie vu que des que tu atteins cette instruction tu recommences la boucle au début.
En fait je viens de regarder la doc pro builder et même leur exemple pour le continue il est mal écrit (il fonctionne hein mais ce n'est pas bien lisible). Le break devrait être dans le else qu'ils ont omis. Alors oui ça fait exactement la même chose mais s'il avait mis un else il n'y avait pas besoin de continue et on voyait tout de suite la logique du truc ->
SI condition ALORS on reste dans la boucle SINON on sort de la boucle FINSI

Re: Garder une valeur en mémoire

par ladefense92800 » 13 mars 2015 00:26

SI condition ALORS on reste dans la boucle SINON on sort de la boucle FINSI
ça a l air bien ça je vais voir demain ... :top:

Re: Garder une valeur en mémoire

par Arnaud_vh » 13 mars 2015 16:42

En fait après une nuit de sommeil je me suis aperçu que tu es parti dans la mauvaise direction. Pour faire ce que tu veux (si j'ai bien compris) il n'y a pas besoin de boucle.
J'ai repris ton premier code et j'ai enlevé le surplus. Tu verras que ta condition est codée dans le mauvais sens, enfin si j'ai bien compris le but du code. (Je ne vois pas trop pourquoi définir une condition en début de programme pour ensuite la réécrire à l'identique dans le if mais je l'ai laissé tel quel)

Code : #

condition = rsi>70
signal=max (open,close)
if rsi>70 then
signal=signal[1]
endif
RETURN signal

Re: Garder une valeur en mémoire

par koub » 15 mars 2015 16:12

Plop LaDéfense, j'ai l'impression que tu cherches à faire un truc comme ça:

Code : #

Periode          = 14
ValUp            = 70
ValDn            = 30

ONCE NVUp        = 0
ONCE NvDn        = 0
ONCE PlusHaut    = 0
ONCE PlusBas     = 0
RSIAct           = RSI[Periode](Close)

IF RSIAct<ValUp AND RSIAct>ValDn THEN
NVDn=0
NVUp=0
ENDIF
IF RSIAct>ValUp THEN
IF NVUp=0 THEN
PlusHaut=Close
NVUp=1
ELSE
IF Close>PlusHaut THEN
PlusHaut=Close
ENDIF
ENDIF
ENDIF
IF RSIAct<ValDn THEN
IF NVDn=0 THEN
PlusBas=Close
NVUp=1
ELSE
IF Close<PlusBas THEN
PlusBas=Close
ENDIF
ENDIF
ENDIF

RETURN PlusHaut AS "Seuil Sup", PlusBas AS "Seuil Inf"
+, koub. :)

Re: Garder une valeur en mémoire

par ladefense92800 » 16 mars 2015 00:10

Merci a tous les deux .

koub : ton code marche parfaitement .

arnaud : j ai un peu modifié ton code pour qu il fasse ce que je voulait .Trois fois rien .

Code : #

condition = rsi<70
signal=max (open,close)
if condition then
signal=signal[1]
endif
RETURN signal

Re: Garder une valeur en mémoire

par Arnaud_vh » 17 mars 2015 17:22

ladefense92800 a écrit :Merci a tous les deux .

arnaud : j ai un peu modifié ton code pour qu il fasse ce que je voulait .Trois fois rien .
C'est ton code que tu as modifié, moi je n'ai fait qu'effacer trois lignes dans ce que tu avais publié pour te remettre dans la bonne direction.

Re: Garder une valeur en mémoire

par ladefense92800 » 17 mars 2015 17:30

Arnaud_vh a écrit :
ladefense92800 a écrit :Merci a tous les deux .

arnaud : j ai un peu modifié ton code pour qu il fasse ce que je voulait .Trois fois rien .
C'est ton code que tu as modifié, moi je n'ai fait qu'effacer trois lignes dans ce que tu avais publié pour te remettre dans la bonne direction.
ben c est super , en tous cas ça marche c est deja ça .

Sujets similaires
Levier, Valeur du point VS valeur du contrat.
Fichier(s) joint(s) par Futtrader2000 » 27 mars 2020 12:24 (14 Réponses)
Afin de garder un forum agréable et clair
Fichier(s) joint(s) par Amarantine » 08 mai 2015 21:18 (47 Réponses)
Garder son paper trading?
par esyfinances » 28 mai 2015 19:34 (17 Réponses)
Garder uniquement le nuage d'Ichimoku
par plataxis » 16 févr. 2016 21:49 (1 Réponses)
Garder un moral béton en Automne.
par Benoist Rousseau » 16 oct. 2017 09:48 (2 Réponses)
Comment garder ses lignes en changeant d'unité de temps.
Fichier(s) joint(s) par smop » 08 nov. 2017 12:32 (10 Réponses)
ISF : garder ou supprimer l'ISF ?
par Benoist Rousseau » 07 déc. 2018 16:18 (72 Réponses)
Garder ses gains
par Amarantine » 27 juil. 2019 17:23 (6 Réponses)
Garder une bonne position ou la vendre?
par Frath » 19 mars 2020 15:41 (2 Réponses)