Code du Detrended price Oscillator

Forum dédié à ProRealTime : les questions sur P, les trucs et astuces sur l'interface de trading...
Avatar du membre
Ernesto
Compagnon Jedi
Messages : 1315
Enregistré le : 18 févr. 2014 17:29

Code du Detrended price Oscillator

Message non lu par Ernesto »

Bonjour... je cherche à reproduire le code du Detrended Price Oscillator dans un indicateur sur prt... mais j'ai un peu de mal à reproduire la formule donnée :

DPO = Cours de clôture - MMp (P/2 - 1)
Avec:
P comme période de temps choisie
MMp: moyenne mobile sur le période P que l'on appliquée sur un nombre x de jours

j'ai essayé ça mais ça fonctionne pas, je n'obtient pas la même chose :
a = average[21]
b = close [21]
c = (21/2+1)
d = a-c
return d-b
Avatar du membre
Ernesto
Compagnon Jedi
Messages : 1315
Enregistré le : 18 févr. 2014 17:29

Re: Code du Detrended price Oscillator

Message non lu par Ernesto »

Salut -, merci beaucoup à toi de m'aider... j'ai testé ton code, ce n'est pas encore complètement ça, mais ça me fait avancer pas mal, je n'obtient pas la même chose, en fait je cherche à recréer le code de cet indicateur qui existe déjà dans prt, oui, je sais, ça peut paraitre idiot, mais je voudrais, le renommer et le modifier un peu une fois recréer, car PRO ORDER le refuse en trading automatique...
Ton code me fait avancer, mais je n'obtient pas encore la même chose, les périodes d'oscillations sont plus longues que sur l'original... et n'ont pas les mêmes amplitudes...
Si tu as d'autres suggestions... n'hésites pas et encore merci... !
Avatar du membre
Ice.
Apprenti Jedi
Messages : 503
Enregistré le : 12 juil. 2013 11:15

Re: Code du Detrended price Oscillator

Message non lu par Ice. »

"MMp: moyenne mobile sur le période P que l'on appliquée sur un nombre x de jours"

Tu peux préciser la différence entre P et X ?


DPO = Close - Average[P]*((P/2)-1) sinon
Avatar du membre
Ernesto
Compagnon Jedi
Messages : 1315
Enregistré le : 18 févr. 2014 17:29

Re: Code du Detrended price Oscillator

Message non lu par Ernesto »

ben... justement... je ne capte pas tout dans cette définition...(en plus je pense qu'il y a une erreur, ce n'est pas : P/2-1 mais plutôt P/2+1 ... sinon en voici une autre :

Detrended Price Oscillator
Le Detrended Price Oscillator est un indicateur qui essaye d'éliminer la tendance dans les cours. En éliminant la tendance, il est possible d'identifier plus facilement les cycles et les niveaux de surachat et survente.
Méthode de calcul
Pour calculer le Detrended Price Oscillator, on choisit une période de temps P et on calcule la moyenne mobile des cours retardée de P / 2 + 1 jours. Cette moyenne est retranchée au cours de cloture. Les cycles plus longs que cette période sont éliminés des prix, et les cycles de plus courte période sont conservés. DPO = Cours de clôture – MMP(P / 2 – 1) où :
P : période de la moyenne mobile
MMP(n) : moyenne mobile de période P, appliquée n jours en arrière
Avatar du membre
Ice.
Apprenti Jedi
Messages : 503
Enregistré le : 12 juil. 2013 11:15

Re: Code du Detrended price Oscillator

Message non lu par Ice. »

Haaaan d'accord ! C'est plus clair merci ahah (je crois que j'ai compris mais pas sur)

Du coup ce serait : DPO = Close - Average[P][Round(P/2)+1]

Sauf que prt est hyper rigide donc il ne t'autorisera pas à faire ça à mon avis, pour calculer la moyenne mobile il faudra donc que tu passes par une boucle du genre :

Période = P
PériodeMM = Round(P/2)+1

Total = 0
For X = PeriodeMM to X = PeriodeMM+P DO
Total = Close[x] + Total
Next

MM = Total/P
ect...

Un truc comme cela, je te laisse corriger et faire la suite :mrgreen:
Avatar du membre
Ernesto
Compagnon Jedi
Messages : 1315
Enregistré le : 18 févr. 2014 17:29

Re: Code du Detrended price Oscillator

Message non lu par Ernesto »

Du coup ce serait : DPO = Close - Average[P][Round(P/2)+1]
il ne manque pas un opérateur entre [p] et [round...?
Avatar du membre
Ice.
Apprenti Jedi
Messages : 503
Enregistré le : 12 juil. 2013 11:15

Re: Code du Detrended price Oscillator

Message non lu par Ice. »

Sur prt ce n'est pas possible de faire cela, normalement si tu codes cette ligne ton ordi va hurler à la mort. Mais sur d'autre IDE c'est possible : tu vas chercher la valeur Average[P] décalé de [Round(P/2)+1] Bougie
Avatar du membre
Ernesto
Compagnon Jedi
Messages : 1315
Enregistré le : 18 févr. 2014 17:29

Re: Code du Detrended price Oscillator

Message non lu par Ernesto »

j'y suis presque... je dis presque car j’obtiens le même indicateur avec les mêmes oscillations et mesures mais en décalé... de 11 ou 12 bougies... voilà je n'ai plus "que" ce problème à régler.... ! :lol: voici le code que j'ai trouvé avec vos interventions qui m'ont été utiles... :
//Detrended price oscillator
a=average[21]
r=round(20/2)+1
b= close[r]
d= b-a
return d AS "DPO pass",0 as "Zero"
//FIN du code


et voici le décalage en question...
Image jointe
Avatar du membre
Ernesto
Compagnon Jedi
Messages : 1315
Enregistré le : 18 févr. 2014 17:29

Re: Code du Detrended price Oscillator

Message non lu par Ernesto »

oui... j'ai remarqué le nombre de bougies qui correspond... comment on va chercher cette MM décalée...?!
Avatar du membre
Ice.
Apprenti Jedi
Messages : 503
Enregistré le : 12 juil. 2013 11:15

Re: Code du Detrended price Oscillator

Message non lu par Ice. »

Si le tien c'est celui du bas : return d[11] ?
Avatar du membre
Ernesto
Compagnon Jedi
Messages : 1315
Enregistré le : 18 févr. 2014 17:29

Re: Code du Detrended price Oscillator

Message non lu par Ernesto »

eheh... return d[11] me décale encore plus... et -11 ne fonctionne pas...! argh...! (oui le mien est celui du bas)
Avatar du membre
Ice.
Apprenti Jedi
Messages : 503
Enregistré le : 12 juil. 2013 11:15

Re: Code du Detrended price Oscillator

Message non lu par Ice. »

Ah Oui donc obligation de prendre la moyenne mobile décalé apparemment. Tu peux reprendre mon exemple, il faut que tu la fasse toi même la mm en prenant chaque close durant P Bougie décale de round etc.. Bougie par rapport à celle actuelle
Avatar du membre
Ernesto
Compagnon Jedi
Messages : 1315
Enregistré le : 18 févr. 2014 17:29

Re: Code du Detrended price Oscillator

Message non lu par Ernesto »

je ne comprend pas ...
Avatar du membre
Ice.
Apprenti Jedi
Messages : 503
Enregistré le : 12 juil. 2013 11:15

Re: Code du Detrended price Oscillator

Message non lu par Ice. »

Par exemple P = 21

Il est 16h00, nous sommes en ut1

Nous devons aller chercher la moyenne mobile 21 d'il y a :

21/2 = 11.5 (on arrondi à 12)
Ensuite nous avons 12+1 = 13

Nous devons donc aller chercher la valeur de la moyenne mobile 21 d'il y a 13 minutes, soit à 15h47 !

Dis moi si c'est toujours pas clair ? :)
Avatar du membre
Ernesto
Compagnon Jedi
Messages : 1315
Enregistré le : 18 févr. 2014 17:29

Re: Code du Detrended price Oscillator

Message non lu par Ernesto »

ok je commence à comprendre... mais comment coder ça...?
Avatar du membre
Ernesto
Compagnon Jedi
Messages : 1315
Enregistré le : 18 févr. 2014 17:29

Re: Code du Detrended price Oscillator

Message non lu par Ernesto »

là je sèche... pas moyen décaler de 11 période mon indicateur... sniff...!
Fredo
Ewok
Messages : 69
Enregistré le : 23 juin 2014 09:24

Re: Code du Detrended price Oscillator

Message non lu par Fredo »

Et le code de Sohocool : http://sohocool.over-blog.com/tag/d.p.o./

Vous convient il?
Avatar du membre
Ernesto
Compagnon Jedi
Messages : 1315
Enregistré le : 18 févr. 2014 17:29

Re: Code du Detrended price Oscillator

Message non lu par Ernesto »

Bonsoir Fredo... merci,mais helas il ne convient pas... j'ai déjà essayé...
Fredo
Ewok
Messages : 69
Enregistré le : 23 juin 2014 09:24

Re: Code du Detrended price Oscillator

Message non lu par Fredo »

Désolé de ne pouvoir plus t'aider.
Avatar du membre
Ice.
Apprenti Jedi
Messages : 503
Enregistré le : 12 juil. 2013 11:15

Re: Code du Detrended price Oscillator

Message non lu par Ice. »

Hello Ernesto, absolument pas le temps de t'apporter plus d'aide mais je t'ai déjà donné un exemple avec la boucle. Si tu ne comprends pas, regarde probuilder, code les exemples, essaye de comprendre comme cela fonctionne, essaye de comprendre comment une mm fonctionne et te la faire toi même ;)

Parce qu'au pire tu peux toujours le faire sans boucle si tu gardes toujours la même période (21), moyennemobile21 = close[11]+close[12]+ etc....

Ou alors une dernière solution :
moyennemobile21 = average[21]
moyennedecale = moyennemobile21[11]