2 variables (entier >0) à créer : formulePP et formule
(dont le paramétrage sera à faire varier entre 1 et 4 à l'utilisation)
4 formules de PP :
HLC/3 =réglage 1
OHLC/4 =2
HLCC/4 =3
OOHL/4 =4
4 formules de calculs, jusqu'à R4/S4 (sauf fibonacci 3 et DeMark 1 niveau) :
classique =réglage 1
fibonacci =2
Camarilla =3
DeMark =4
...pour 13 combinaisons possibles (la formule PP n'influe pas sur les DeMark)
Code : #
if time<time[1] then
plusHaut=High
plusBas=Low
ouverture=Open
if Close[1]>ouverture[1] then
dm=2*plusHaut[1]+plusBas[1]+Close[1]
elsif Close[1]<ouverture[1] then
dm=2*plusBas[1]+plusHaut[1]+Close[1]
else
dm=2*Close[1]+plusHaut[1]+plusBas[1]
endif
if formule>3 then
pp=dm/4
else
if formulePP=1 then
pp=(plusHaut[1]+plusBas[1]+Close[1])/3
elsif formulePP=2 then
pp=(plusHaut[1]+plusBas[1]+Close[1]+Open[1])/4
elsif formulePP=3 then
pp=(plusHaut[1]+plusBas[1]+2*Close[1])/4
elsif formulePP>3 then
pp=(plusHaut[1]+plusBas[1]+2*Open[1])/4
endif
endif
if formule=1 then
r1=2*pp-plusBas[1]
s1=2*pp-plusHaut[1]
rr2=pp+plusHaut[1]-plusBas[1]
s2=pp-plusHaut[1]+plusBas[1]
r3=plusHaut[1]+2*(pp-plusBas[1])
s3=plusBas[1]-2*(plusHaut[1]-pp)
r4=r3+(plusHaut[1]-plusBas[1])
s4=s3-(plusHaut[1]-plusBas[1])
elsif formule=2 then // Fibonacci
r1=pp+0.382*(plusHaut[1]-plusBas[1])
s1=pp-0.382*(plusHaut[1]-plusBas[1])
rr2=pp+0.618*(plusHaut[1]-plusBas[1])
s2=pp-0.618*(plusHaut[1]-plusBas[1])
r3=pp+plusHaut[1]-plusBas[1]
s3=pp-plusHaut[1]+plusBas[1]
r4=r3
s4=s3
elsif formule=3 then // Camarilla
r1=pp+(plusHaut[1]-plusBas[1])*1.1/12
s1=pp-(plusHaut[1]-plusBas[1])*1.1/12
rr2=pp+(plusHaut[1]-plusBas[1])*1.1/6
s2=pp-(plusHaut[1]-plusBas[1])*1.1/6
r3=pp+(plusHaut[1]-plusBas[1])*1.1/4
s3=pp-(plusHaut[1]-plusBas[1])*1.1/4
r4=pp+(plusHaut[1]-plusBas[1])*1.1/2
s4=pp-(plusHaut[1]-plusBas[1])*1.1/2
elsif formule>3 then // DeMark
r1=-plusBas[1]+dm/2
s1=-plusHaut[1]+dm/2
rr2=r1
s2=s1
r3=r1
s3=s1
r4=r1
s4=s1
endif
else
plusHaut=MAX(High,plusHaut[1])
plusBas=MIN(Low,plusBas[1])
ouverture=ouverture[1]
pp=pp[1]
r1=r1[1]
s1=s1[1]
rr2=rr2[1]
s2=s2[1]
r3=r3[1]
s3=s3[1]
r4=r4[1]
s4=s4[1]
endif
return pp coloured (0,0,255) as "PP", r1 coloured (255,0,0) as "R1", s1 coloured (0,255,0)as "S1", rr2 coloured (255,0,0) as "R2", s2 coloured (0,255,0)as "S2", r3 coloured (255,0,0) as "R3", s3 coloured (0,255,0)as "S3", r4 coloured (255,0,0) as "R4", s4 coloured (0,255,0)as "S4"
----------------
version allégée comprenant uniquement les PP IG/Andlil avec R4/S4 en plus tout de même
(devrait charger un poil plus vite PRT n'étant pas une bête de calculs)
Code : #
if time<time[1] then
plusHaut=High
plusBas=Low
pp=(plusHaut[1]+plusBas[1]+Close[1])/3
r1=2*pp-plusBas[1]
s1=2*pp-plusHaut[1]
rr2=pp+plusHaut[1]-plusBas[1]
s2=pp-plusHaut[1]+plusBas[1]
r3=plusHaut[1]+2*(pp-plusBas[1])
s3=plusBas[1]-2*(plusHaut[1]-pp)
r4=r3+(plusHaut[1]-plusBas[1])
s4=s3-(plusHaut[1]-plusBas[1])
else
plusHaut=MAX(High,plusHaut[1])
plusBas=MIN(Low,plusBas[1])
pp=pp[1]
r1=r1[1]
s1=s1[1]
rr2=rr2[1]
s2=s2[1]
r3=r3[1]
s3=s3[1]
r4=r4[1]
s4=s4[1]
endif
return pp coloured (0,0,255) as "PP", r1 coloured (255,0,0) as "R1", s1 coloured (0,255,0)as "S1", rr2 coloured (255,0,0) as "R2", s2 coloured (0,255,0)as "S2", r3 coloured (255,0,0) as "R3", s3 coloured (0,255,0)as "S3", r4 coloured (255,0,0) as "R4", s4 coloured (0,255,0)as "S4"