Pourquoi cette file ?
Cette file prends le relais de la V2 : pp-points-pivots-solution-stable-pour-t ... 27750.html
De quoi s'agit-il ?
A partir de contributions multiples, j'ai mis en place un outil permettant d'afficher les PP futures directement sur les graphiques de prt/ig CF.D cash.
Nouveauté V3 : également sur les prt/ig CF.D futures d'ig ! Vous allez comprendre un peu plus bas...
A qui s'adresse cet outil ?
A ceux qui utilisent prt/ig CF.D et qui souhaitent pouvoir avoir une estimation des PP futures en temps réel sur leurs graphiques CF.D (cash ET futures) ainsi que les figures sur les CF.D indices uniquement (ce sont les niveaux ronds 00 25 50 75 sur les indices cash). A ceux qui ont en marre des PP CF.D qui un jour sont juste et l'autre sont faux, etc...
Pourquoi un tel outil ?
Et bien parce que les PP ig CF.D ne correspondent pas aux PP futures. Ce n'est pas qu'ils sont "faux", c'est juste qu'ils sont basés sur les cours des CF.D et donc par construction n'ont aucune raison d'êtres similaires aux PP futures (les seuls et uniques PP qui ont un réel pouvoir d'attraction = des niveaux importants sur lesquels il y a notamment souvent des rebonds/pullbacks). Le sujet a été évoqué au moins mille fois sur Andlil
Nouveauté V3 : j'ai bien peur les PP futures de prt soient parfois aussi faux. J'ai des exemples à la pelle. Comment je m'en suis aperçu ? Et bien en affichant par hasard les CF.D futures que propose ig. En fait ils répliquent à la quasi perfection les vrais futures. Je me suis donc dit mais que valent les PP de prt appliqués à ces graphiques ? Et bien ils sont souvent faux ! Je le sais car j'affiche des PP que je calcule directement à partir des cours officiels high/low/Settle des exchanges officiels (Euronext/Eurex/CME, etc....)
Autre nouveauté V3 : les PP intègrent aussi désormais le cash close officiel. Cela permet d'avoir une idée du/des gaps à combler en début de scéance (attention uniquement par rapport au jour de bourse précédent)
Comment ça marche ?
Concrètement l'outil utilise les PP futures et le décalage cash-futures pour afficher directement les PP futures sur les graphiques CF.D cash de prt.
Nouveauté V3 : il y a désormais 2 codes :
- un pour afficher les PP sur les graphiques CF.D cash
- un pour afficher les PP directement sur les graphiques CF.D futures
De quoi est composé l'outil ?
L'outil a 4 composantes :
- 1 fichier XL qui est automatiquement mis à jour tous les jours vers 7h45, accessible via un lien drive permanent. Ce fichier contient les PP futures jour/semaine/mois ainsi que les plus haut, plus bas et "settlement" (Cours de clôture sur lequels sont basés les PP futures) sur ces mêmes périodes. Ces données sont basées directement sur les valeurs officielles des bourses d'échances (exchange). La source est le site "Stooq" qui agrège les données des exchanges
- 1 code à mettre à jour tous les jours dans prt
- 1 variable "diff" à renseigner à chaque fois que cela est nécessaire (CF.D cash)
- 1 variable "diff" inexistante (CF.D future, car par diff = 0 dans ce cas de figure)
Quels sont les actifs concernés ?
L'outil couvre à l'origine 5 actifs (Dow/nasdaq,Fts.e, Dax, Cac) mais est évolutif et peut inclure d'autres actifs (me demander directement sur cette file).
Nouveauté v3 : s'ajoute à cette liste SP500/Rusell 2000/Nikkei
Quelle est la procédure pour installer l'outil ?
1. Créer un nouvel indicateur via le "Probuilder" de prt en utilisant le code ci-dessous. Appelez le PP CF.D cash
Code : #
REM PP Futures sur graphiques cfd à risque limité cash (v.3)
REM Diff= cfd à risque limité cash - cfd à risque limité futures
REM Attention à bien prendre le contrat future le plus liquide (= échance la plus proche) et en lot plein
REM Exemple avec le Dow => spread à utiliser = cfd à risque limité Dow cash 10$ - cfd à risque limité Dow Futures (échéance la plus proche, 3 mois) 10$
REM Exemple avec le Nasdaq => spread à utiliser = cfd à risque limité Nasdaq cash 100$ - cfd à risque limité Nasdaq Futures (échéance la plus proche, 3 mois) 100$
REM Exemple avec le indice anglais => spread à utiliser = cfd à risque limité indice anglais cash 10£ - cfd à risque limité indice anglais Futures (échéance la plus proche, 3 mois) 10£
REM Exemple avec le Dax => spread à utiliser = cfd à risque limité Dax cash 25€ - cfd à risque limité Dax Futures (échéance la plus proche, 3 mois) 25€
REM Exemple avec le Cac => spread à utiliser = cfd à risque limité Cac cash 10€ - cfd à risque limité Cac Futures (échéance la plus proche, 1 mois) 10€
defparam drawonlastbaronly = true
///////////////////////////////////// VARIABLES /////////////////////////////////////////
// DOW
if close>20000 and close<30000 then
diff=2.7
HighJ=25901
LowJ=25554
SettlementJ=25696
CashCloseJ=25679.9
HighH=25955
LowH=25215
SettlementH=25780
HighM=26694
LowM=25976
SettlementM=26584
// décalage vertical texte/lignes horizontales
Voffset=4*pointsize
endif
// NASDAQ
if close>6000 and close<8500 then
diff=-11.7
HighJ=7559.25
LowJ=7361.5
SettlementJ=7391.75
CashCloseJ=7376.703
HighH=7641
LowH=7290
SettlementH=7511.5
HighM=7879.5
LowM=7428.5
SettlementM=7800
// décalage vertical texte/lignes horizontales
Voffset=1*pointsize
endif
// SP500
if close>1900 and close<3200 then
diff=-1.5
HighJ=2876.5
LowJ=2832.5
SettlementJ=2844
CashCloseJ=2840.23
HighH=2894
LowH=2799.75
SettlementH=2862
HighM=2956.5
LowM=2844.5
SettlementM=2948.5
// décalage vertical texte/lignes horizontales
Voffset=1*pointsize
endif
// RUSSEL2000
if close>1500 and close<2000 then
diff=-1.6
HighJ=1547.4
LowJ=1522.1
SettlementJ=1526.8
CashCloseJ=151.78
HighH=1570.4
LowH=1516.7
SettlementH=1537.6
HighM=1607.6
LowM=1545.9
SettlementM=1594.2
// décalage vertical texte/lignes horizontales
Voffset=1*pointsize
endif
// indice anglais
if close>6000 and close<8500 then
diff=14.3
HighJ=7357
LowJ=7252.5
SettlementJ=7288
CashCloseJ=7310.88
HighH=7349
LowH=7095
SettlementH=7335.5
HighM=7474
LowM=7221.5
SettlementM=7371.5
endif
// DAX
if close>9000 and close<15000 then
diff=3.7
HighJ=12266.5
LowJ=11986.5
SettlementJ=12024
CashCloseJ=12041.29
HighH=12318.5
LowH=11837.5
SettlementH=12247
HighM=12396.5
LowM=11601.5
SettlementM=12351
// décalage vertical texte/lignes horizontales
Voffset=2*pointsize
endif
// CAC
if close>4000 and close<6000 then
diff=51.5
HighJ=5379
LowJ=5271
SettlementJ=5298
CashCloseJ=5358.59
HighH=5386.5
LowH=5178
SettlementH=5372.5
HighM=5560
LowM=5368
SettlementM=5546.5
// décalage vertical texte/lignes horizontales
Voffset=1*pointsize
endif
////////////////////////////////////// CALCULS //////////////////////////////////////////
// POINTS PIVOTS JOURNALIERS
PPJ = (HighJ + LowJ + SettlementJ) / 3
R3J = HighJ + 2 * (PPJ - LowJ)
R2J = PPJ + (HighJ - LowJ)
R1J = (2 * PPJ) - LowJ
S1J = (2 * PPJ) - HighJ
S2J = PPJ - (HighJ - LowJ)
S3J = LowJ - 2 * (HighJ - PPJ)
HighJ=HighJ + Diff
LowJ=LowJ + Diff
SettlementJ = SettlementJ + Diff
PPJ = PPJ + Diff
R3J = R3J + Diff
R2J = R2J + Diff
R1J = R1J + Diff
S1J = S1J + Diff
S2J = S2J + Diff
S3J = S3J + Diff
midR3J = (R2J + R3J) / 2
midR2J = (R1J + R2J) / 2
midR1J = (PPJ + R1J) / 2
midS1J = (PPJ + S1J) / 2
midS2J = (S1J + S2J) / 2
midS3J = (S2J + S3J) / 2
// POINTS PIVOTS HEBDO
PPH = (HighH + LowH + SettlementH) / 3
R3H = HighH + 2 * (PPH - LowH)
R2H = PPH + (HighH - LowH)
R1H = (2 * PPH) - LowH
S1H = (2 * PPH) - HighH
S2H = PPH - (HighH - LowH)
S3H = LowH - 2 * (HighH - PPH)
HighH=HighH + Diff
LowH=LowH + Diff
SettlementH = SettlementH + Diff
PPH = PPH + Diff
R3H = R3H + Diff
R2H = R2H + Diff
R1H = R1H + Diff
S1H = S1H + Diff
S2H = S2H + Diff
S3H = S3H + Diff
midR3H = (R2H + R3H) / 2
midR2H = (R1H + R2H) / 2
midR1H = (PPH + R1H) / 2
midS1H = (PPH + S1H) / 2
midS2H = (S1H + S2H) / 2
midS3H = (S2H + S3H) / 2
// POINTS PIVOTS MENSUELS
PPM = (HighM + LowM + SettlementM) / 3
R3M = HighM + 2 * (PPM - LowM)
R2M = PPM + (HighM - LowM)
R1M = (2 * PPM) - LowM
S1M = (2 * PPM) - HighM
S2M = PPM - (HighM - LowM)
S3M = LowM - 2 * (HighM - PPM)
HighM=HighM + Diff
LowM=LowM + Diff
SettlementM = SettlementM + Diff
PPM = PPM + Diff
R3M = R3M + Diff
R2M = R2M + Diff
R1M = R1M + Diff
S1M = S1M + Diff
S2M = S2M + Diff
S3M = S3M + Diff
midR3M = (R2M + R3M) / 2
midR2M = (R1M + R2M) / 2
midR1M = (PPM + R1M) / 2
midS1M = (PPM + S1M) / 2
midS2M = (S1M + S2M) / 2
midS3M = (S2M + S3M) / 2
/////////////////////////////////// NIVEAUX FIGURES ///////////////////////////////////////
milieu = PPJ
centaine = round(milieu/100) * 100
//
lp1 = centaine + 50
lp2 = centaine + 100
lp3 = centaine + 150
lp4 = centaine + 200
lp5 = centaine + 250
lp6 = centaine + 300
lp7 = centaine + 350
lp8 = centaine + 400
lp10 = centaine + 500
//
lm1 = centaine - 50
lm2 = centaine - 100
lm3 = centaine - 150
lm4 = centaine - 200
lm5 = centaine - 250
lm6 = centaine - 300
lm7 = centaine - 350
lm8 = centaine - 400
lm10 = centaine - 500
///////////////////////////////////// AFFICHAGE TEXTE /////////////////////////////////////////
DRAWTEXT("CASHCLOSE J",barindex-6,CashCloseJ,SansSerif,Bold)coloured(240,248,255)
DRAWTEXT("Haut J",barindex-4,HighJ+Voffset,SansSerif,Bold)coloured(127,255,212)
DRAWTEXT("Bas J",barindex-4,LowJ+Voffset,SansSerif,Bold)coloured(127,255,212)
DRAWTEXT("Haut H",barindex-4,HighH+Voffset,SansSerif,Bold)coloured(127,255,212)
DRAWTEXT("Bas H",barindex-4,LowH+Voffset,SansSerif,Bold)coloured(127,255,212)
DRAWTEXT("Haut M",barindex-4,HighM+Voffset,SansSerif,Bold)coloured(127,255,212)
DRAWTEXT("Bas M",barindex-4,LowM+Voffset,SansSerif,Bold)coloured(127,255,212)
DRAWTEXT("Settle J",barindex-4,SettlementJ+Voffset,SansSerif,Bold)coloured(255,255,0)
DRAWTEXT("Settle H",barindex-4,SettlementH+Voffset,SansSerif,Bold)coloured(255,255,0)
DRAWTEXT("Settle M",barindex-4,SettlementM+Voffset,SansSerif,Bold)coloured(255,255,0)
DRAWTEXT("Piv J",barindex-4,PPJ+Voffset,SansSerif,Bold)coloured(0, 0, 0)
DRAWTEXT("Piv H",barindex-4,PPH+Voffset,SansSerif,Bold)coloured(0, 0, 0)
DRAWTEXT("Piv M",barindex-4,PPM+Voffset,SansSerif,Bold)coloured(0, 0, 0)
DRAWTEXT("R3J",barindex-4,R3J+Voffset,SansSerif,Bold)coloured(255, 0, 0)
DRAWTEXT("R2J",barindex-4,R2J+Voffset,SansSerif,Bold)coloured(255, 0, 0)
DRAWTEXT("R1J",barindex-4,R1J+Voffset,SansSerif,Bold)coloured(255, 0, 0)
DRAWTEXT("S1J",barindex-4,S1J+Voffset,SansSerif,Bold)coloured(0, 128, 0)
DRAWTEXT("S2J",barindex-4,S2J+Voffset,SansSerif,Bold)coloured(0, 128, 0)
DRAWTEXT("S3J",barindex-4,S3J+Voffset,SansSerif,Bold)coloured(0, 128, 0)
DRAWTEXT("R3H",barindex-4,R3H+Voffset,SansSerif,Bold)coloured(255, 0, 0)
DRAWTEXT("R2H",barindex-4,R2H+Voffset,SansSerif,Bold)coloured(255, 0, 0)
DRAWTEXT("R1H",barindex-4,R1H+Voffset,SansSerif,Bold)coloured(255, 0, 0)
DRAWTEXT("S1H",barindex-4,S1H+Voffset,SansSerif,Bold)coloured(0, 128, 0)
DRAWTEXT("S2H",barindex-4,S2H+Voffset,SansSerif,Bold)coloured(0, 128, 0)
DRAWTEXT("S3H",barindex-4,S3H+Voffset,SansSerif,Bold)coloured(0, 128, 0)
DRAWTEXT("R3M",barindex-4,R3M+Voffset,SansSerif,Bold)coloured(255, 0, 0)
DRAWTEXT("R2M",barindex-4,R2M+Voffset,SansSerif,Bold)coloured(255, 0, 0)
DRAWTEXT("R1M",barindex-4,R1M+Voffset,SansSerif,Bold)coloured(255, 0, 0)
DRAWTEXT("S1M",barindex-4,S1M+Voffset,SansSerif,Bold)coloured(0, 128, 0)
DRAWTEXT("S2M",barindex-4,S2M+Voffset,SansSerif,Bold)coloured(0, 128, 0)
DRAWTEXT("S3M",barindex-4,S3M+Voffset,SansSerif,Bold)coloured(0, 128, 0)
DRAWTEXT("midR3J",barindex-4,midR3J+Voffset,SansSerif,Bold)coloured(255, 0, 0)
DRAWTEXT("midR2J",barindex-4,midR2J+Voffset,SansSerif,Bold)coloured(255, 0, 0)
DRAWTEXT("midR1J",barindex-4,midR1J+Voffset,SansSerif,Bold)coloured(255, 0, 0)
DRAWTEXT("midS1J",barindex-4,midS1J+Voffset,SansSerif,Bold)coloured(0, 128, 0)
DRAWTEXT("midS2J",barindex-4,midS2J+Voffset,SansSerif,Bold)coloured(0, 128, 0)
DRAWTEXT("midS3J",barindex-4,midS3J+Voffset,SansSerif,Bold)coloured(0, 128, 0)
DRAWTEXT("midR3H",barindex-4,midR3H+Voffset,SansSerif,Bold)coloured(255, 0, 0)
DRAWTEXT("midR2H",barindex-4,midR2H+Voffset,SansSerif,Bold)coloured(255, 0, 0)
DRAWTEXT("midR1H",barindex-4,midR1H+Voffset,SansSerif,Bold)coloured(255, 0, 0)
DRAWTEXT("midS1H",barindex-4,midS1H+Voffset,SansSerif,Bold)coloured(0, 128, 0)
DRAWTEXT("midS2H",barindex-4,midS2H+Voffset,SansSerif,Bold)coloured(0, 128, 0)
DRAWTEXT("midS3H",barindex-4,midS3H+Voffset,SansSerif,Bold)coloured(0, 128, 0)
DRAWTEXT("midR3M",barindex-4,midR3M+Voffset,SansSerif,Bold)coloured(255, 0, 0)
DRAWTEXT("midR2M",barindex-4,midR2M+Voffset,SansSerif,Bold)coloured(255, 0, 0)
DRAWTEXT("midR1M",barindex-4,midR1M+Voffset,SansSerif,Bold)coloured(255, 0, 0)
DRAWTEXT("midS1M",barindex-4,midS1M+Voffset,SansSerif,Bold)coloured(0, 128, 0)
DRAWTEXT("midS2M",barindex-4,midS2M+Voffset,SansSerif,Bold)coloured(0, 128, 0)
DRAWTEXT("midS3M",barindex-4,midS3M+Voffset,SansSerif,Bold)coloured(0, 128, 0)
///////////////////////////////////// AFFICHAGE SETTLEMENT, PP ET NIVEAUX FIGURES AVEC LIGNES ETENDUES A DROITE/////////////////////////////////////////
///////////// CASH CLOSE /////////
DRAWHLINE(CashCloseJ) COLOURED(240,248,255)
///////////// HIGH/LOW /////////
DRAWHLINE(HighJ) COLOURED(127, 255, 212)
DRAWHLINE(HighH) COLOURED(127, 255, 212)
DRAWHLINE(HighM) COLOURED(127, 255, 212)
DRAWHLINE(LowJ) COLOURED(127, 255, 212)
DRAWHLINE(LowH) COLOURED(127, 255, 212)
DRAWHLINE(LowM) COLOURED(127, 255, 212)
///////////// SETTLEMENT ////////////
DRAWHLINE(SettlementJ) COLOURED(255,255,0)
DRAWHLINE(SettlementH) COLOURED(255,255,0)
DRAWHLINE(SettlementM) COLOURED(255,255,0)
///////////// PP //////////////////
DRAWHLINE(PPJ) COLOURED(0, 0, 0)
DRAWHLINE(PPH) COLOURED(0, 0, 0)
DRAWHLINE(PPM) COLOURED(0, 0, 0)
DRAWHLINE(S1J) COLOURED(0, 128, 0)
DRAWHLINE(S2J) COLOURED(0, 128, 0)
DRAWHLINE(S3J) COLOURED(0, 128, 0)
DRAWHLINE(S1H) COLOURED(0, 128, 0)
DRAWHLINE(S2H) COLOURED(0, 128, 0)
DRAWHLINE(S3H) COLOURED(0, 128, 0)
DRAWHLINE(S1M) COLOURED(0, 128, 0)
DRAWHLINE(S2M) COLOURED(0, 128, 0)
DRAWHLINE(S3M) COLOURED(0, 128, 0)
DRAWHLINE(R1J) COLOURED(255, 0, 0)
DRAWHLINE(R2J) COLOURED(255, 0, 0)
DRAWHLINE(R3J) COLOURED(255, 0, 0)
DRAWHLINE(R1H) COLOURED(255, 0, 0)
DRAWHLINE(R2H) COLOURED(255, 0, 0)
DRAWHLINE(R3H) COLOURED(255, 0, 0)
DRAWHLINE(R1M) COLOURED(255, 0, 0)
DRAWHLINE(R2M) COLOURED(255, 0, 0)
DRAWHLINE(R3M) COLOURED(255, 0, 0)
//////////// FIGURES //////////////
DRAWHLINE(centaine) COLOURED(255, 127, 80)
DRAWHLINE(lp2) COLOURED(255, 127, 80)
DRAWHLINE(lp4) COLOURED(255, 127, 80)
DRAWHLINE(lp6) COLOURED(255, 127, 80)
DRAWHLINE(lp8) COLOURED(255, 127, 80)
DRAWHLINE(lp10) COLOURED(255, 127, 80)
DRAWHLINE(lm2) COLOURED(255, 127, 80)
DRAWHLINE(lm4) COLOURED(255, 127, 80)
DRAWHLINE(lm6) COLOURED(255, 127, 80)
DRAWHLINE(lm8) COLOURED(255, 127, 80)
DRAWHLINE(lm10) COLOURED(255, 127, 80)
Return midS1J COLOURED(0, 128, 0) STYLE(DOTTEDLINE) AS "midS1J", midS2J COLOURED(0, 128, 0) STYLE(DOTTEDLINE) AS "midS2J", midS3J COLOURED(0, 128, 0) STYLE(DOTTEDLINE) AS "midS3J", midS1H COLOURED(0, 128, 0) STYLE(DOTTEDLINE) AS "midS1H", midS2H COLOURED(0, 128, 0) STYLE(DOTTEDLINE) AS "midS2H", midS3H COLOURED(0, 128, 0) STYLE(DOTTEDLINE) AS "midS3H", midS1M COLOURED(0, 128, 0) STYLE(DOTTEDLINE) AS "midS1M", midS2M COLOURED(0, 128, 0) STYLE(DOTTEDLINE) AS "midS2M", midS3M COLOURED(0, 128, 0) STYLE(DOTTEDLINE) AS "midS3M", midR1J COLOURED(255, 0, 0) STYLE(DOTTEDLINE) AS "midR1J", midR2J COLOURED(255, 0, 0) STYLE(DOTTEDLINE) AS "midR2J", midR3J COLOURED(255, 0, 0) STYLE(DOTTEDLINE) AS "midR3J", midR1H COLOURED(255, 0, 0) STYLE(DOTTEDLINE) AS "midR1H", midR2H COLOURED(255, 0, 0) STYLE(DOTTEDLINE) AS "midR2H", midR3H COLOURED(255, 0, 0) STYLE(DOTTEDLINE) AS "midR3H", midR1M COLOURED(255, 0, 0) STYLE(DOTTEDLINE) AS "midR1M", midR2M COLOURED(255, 0, 0) STYLE(DOTTEDLINE) AS "midR2M", midR3M COLOURED(255, 0, 0) STYLE(DOTTEDLINE) AS "midR3M",lp1 COLOURED(255, 127, 80) STYLE(DOTTEDLINE),lp3 COLOURED(255, 127, 80) STYLE(DOTTEDLINE),lp5 COLOURED(255, 127, 80) STYLE(DOTTEDLINE),lp7 COLOURED(255, 127, 80) STYLE(DOTTEDLINE),lm1 COLOURED(255, 127, 80) STYLE(DOTTEDLINE),lm3 COLOURED(255, 127, 80) STYLE(DOTTEDLINE),lm5 COLOURED(255, 127, 80) STYLE(DOTTEDLINE),lm7 COLOURED(255, 127, 80) STYLE(DOTTEDLINE)
Code : #
REM PP Futures sur graphiques cfd à risque limité futures (v.3)
REM Diff= cfd à risque limité cash - cfd à risque limité futures = 0
REM Attention à bien prendre le contrat future le plus liquide (= échance la plus proche) et en lot plein. Attention aussi à bien roller !
defparam drawonlastbaronly = true
///////////////////////////////////// VARIABLES /////////////////////////////////////////
// DOW
if close>20000 and close<30000 then
diff=0
HighJ=25901
LowJ=25554
SettlementJ=25696
CashCloseJ=25679.9
HighH=25955
LowH=25215
SettlementH=25780
HighM=26694
LowM=25976
SettlementM=26584
// décalage vertical texte/lignes horizontales
Voffset=4*pointsize
endif
// NASDAQ
if close>6000 and close<8500 then
diff=0
HighJ=7559.25
LowJ=7361.5
SettlementJ=7391.75
CashCloseJ=7376.703
HighH=7641
LowH=7290
SettlementH=7511.5
HighM=7879.5
LowM=7428.5
SettlementM=7800
// décalage vertical texte/lignes horizontales
Voffset=1*pointsize
endif
// SP500
if close>1900 and close<3200 then
diff=0
HighJ=2876.5
LowJ=2832.5
SettlementJ=2844
CashCloseJ=2840.23
HighH=2894
LowH=2799.75
SettlementH=2862
HighM=2956.5
LowM=2844.5
SettlementM=2948.5
// décalage vertical texte/lignes horizontales
Voffset=1*pointsize
endif
// RUSSEL2000
if close>1500 and close<2000 then
diff=0
HighJ=1547.4
LowJ=1522.1
SettlementJ=1526.8
CashCloseJ=151.78
HighH=1570.4
LowH=1516.7
SettlementH=1537.6
HighM=1607.6
LowM=1545.9
SettlementM=1594.2
// décalage vertical texte/lignes horizontales
Voffset=1*pointsize
endif
// indice anglais
if close>6000 and close<8000 then
diff=0
HighJ=7357
LowJ=7252.5
SettlementJ=7288
CashCloseJ=7310.88
HighH=7349
LowH=7095
SettlementH=7335.5
HighM=7474
LowM=7221.5
SettlementM=7371.5
endif
// DAX
if close>9000 and close<15000 then
diff=0
HighJ=12266.5
LowJ=11986.5
SettlementJ=12024
CashCloseJ=12041.29
HighH=12318.5
LowH=11837.5
SettlementH=12247
HighM=12396.5
LowM=11601.5
SettlementM=12351
// décalage vertical texte/lignes horizontales
Voffset=2*pointsize
endif
// CAC
if close>4000 and close<6000 then
diff=0
HighJ=5379
LowJ=5271
SettlementJ=5298
CashCloseJ=5358.59
HighH=5386.5
LowH=5178
SettlementH=5372.5
HighM=5560
LowM=5368
SettlementM=5546.5
// décalage vertical texte/lignes horizontales
Voffset=1*pointsize
endif
////////////////////////////////////// CALCULS //////////////////////////////////////////
// POINTS PIVOTS JOURNALIERS
PPJ = (HighJ + LowJ + SettlementJ) / 3
R3J = HighJ + 2 * (PPJ - LowJ)
R2J = PPJ + (HighJ - LowJ)
R1J = (2 * PPJ) - LowJ
S1J = (2 * PPJ) - HighJ
S2J = PPJ - (HighJ - LowJ)
S3J = LowJ - 2 * (HighJ - PPJ)
HighJ=HighJ + Diff
LowJ=LowJ + Diff
SettlementJ = SettlementJ + Diff
PPJ = PPJ + Diff
R3J = R3J + Diff
R2J = R2J + Diff
R1J = R1J + Diff
S1J = S1J + Diff
S2J = S2J + Diff
S3J = S3J + Diff
midR3J = (R2J + R3J) / 2
midR2J = (R1J + R2J) / 2
midR1J = (PPJ + R1J) / 2
midS1J = (PPJ + S1J) / 2
midS2J = (S1J + S2J) / 2
midS3J = (S2J + S3J) / 2
// POINTS PIVOTS HEBDO
PPH = (HighH + LowH + SettlementH) / 3
R3H = HighH + 2 * (PPH - LowH)
R2H = PPH + (HighH - LowH)
R1H = (2 * PPH) - LowH
S1H = (2 * PPH) - HighH
S2H = PPH - (HighH - LowH)
S3H = LowH - 2 * (HighH - PPH)
HighH=HighH + Diff
LowH=LowH + Diff
SettlementH = SettlementH + Diff
PPH = PPH + Diff
R3H = R3H + Diff
R2H = R2H + Diff
R1H = R1H + Diff
S1H = S1H + Diff
S2H = S2H + Diff
S3H = S3H + Diff
midR3H = (R2H + R3H) / 2
midR2H = (R1H + R2H) / 2
midR1H = (PPH + R1H) / 2
midS1H = (PPH + S1H) / 2
midS2H = (S1H + S2H) / 2
midS3H = (S2H + S3H) / 2
// POINTS PIVOTS MENSUELS
PPM = (HighM + LowM + SettlementM) / 3
R3M = HighM + 2 * (PPM - LowM)
R2M = PPM + (HighM - LowM)
R1M = (2 * PPM) - LowM
S1M = (2 * PPM) - HighM
S2M = PPM - (HighM - LowM)
S3M = LowM - 2 * (HighM - PPM)
HighM=HighM + Diff
LowM=LowM + Diff
SettlementM = SettlementM + Diff
PPM = PPM + Diff
R3M = R3M + Diff
R2M = R2M + Diff
R1M = R1M + Diff
S1M = S1M + Diff
S2M = S2M + Diff
S3M = S3M + Diff
midR3M = (R2M + R3M) / 2
midR2M = (R1M + R2M) / 2
midR1M = (PPM + R1M) / 2
midS1M = (PPM + S1M) / 2
midS2M = (S1M + S2M) / 2
midS3M = (S2M + S3M) / 2
///////////////////////////////////// AFFICHAGE TEXTE /////////////////////////////////////////
DRAWTEXT("Haut J",barindex-4,HighJ+Voffset,SansSerif,Bold)coloured(127,255,212)
DRAWTEXT("Bas J",barindex-4,LowJ+Voffset,SansSerif,Bold)coloured(127,255,212)
DRAWTEXT("Haut H",barindex-4,HighH+Voffset,SansSerif,Bold)coloured(127,255,212)
DRAWTEXT("Bas H",barindex-4,LowH+Voffset,SansSerif,Bold)coloured(127,255,212)
DRAWTEXT("Haut M",barindex-4,HighM+Voffset,SansSerif,Bold)coloured(127,255,212)
DRAWTEXT("Bas M",barindex-4,LowM+Voffset,SansSerif,Bold)coloured(127,255,212)
DRAWTEXT("Settle J",barindex-4,SettlementJ+Voffset,SansSerif,Bold)coloured(255,255,0)
DRAWTEXT("Settle H",barindex-4,SettlementH+Voffset,SansSerif,Bold)coloured(255,255,0)
DRAWTEXT("Settle M",barindex-4,SettlementM+Voffset,SansSerif,Bold)coloured(255,255,0)
DRAWTEXT("Piv J",barindex-4,PPJ+Voffset,SansSerif,Bold)coloured(0, 0, 0)
DRAWTEXT("Piv H",barindex-4,PPH+Voffset,SansSerif,Bold)coloured(0, 0, 0)
DRAWTEXT("Piv M",barindex-4,PPM+Voffset,SansSerif,Bold)coloured(0, 0, 0)
DRAWTEXT("R3J",barindex-4,R3J+Voffset,SansSerif,Bold)coloured(255, 0, 0)
DRAWTEXT("R2J",barindex-4,R2J+Voffset,SansSerif,Bold)coloured(255, 0, 0)
DRAWTEXT("R1J",barindex-4,R1J+Voffset,SansSerif,Bold)coloured(255, 0, 0)
DRAWTEXT("S1J",barindex-4,S1J+Voffset,SansSerif,Bold)coloured(0, 128, 0)
DRAWTEXT("S2J",barindex-4,S2J+Voffset,SansSerif,Bold)coloured(0, 128, 0)
DRAWTEXT("S3J",barindex-4,S3J+Voffset,SansSerif,Bold)coloured(0, 128, 0)
DRAWTEXT("R3H",barindex-4,R3H+Voffset,SansSerif,Bold)coloured(255, 0, 0)
DRAWTEXT("R2H",barindex-4,R2H+Voffset,SansSerif,Bold)coloured(255, 0, 0)
DRAWTEXT("R1H",barindex-4,R1H+Voffset,SansSerif,Bold)coloured(255, 0, 0)
DRAWTEXT("S1H",barindex-4,S1H+Voffset,SansSerif,Bold)coloured(0, 128, 0)
DRAWTEXT("S2H",barindex-4,S2H+Voffset,SansSerif,Bold)coloured(0, 128, 0)
DRAWTEXT("S3H",barindex-4,S3H+Voffset,SansSerif,Bold)coloured(0, 128, 0)
DRAWTEXT("R3M",barindex-4,R3M+Voffset,SansSerif,Bold)coloured(255, 0, 0)
DRAWTEXT("R2M",barindex-4,R2M+Voffset,SansSerif,Bold)coloured(255, 0, 0)
DRAWTEXT("R1M",barindex-4,R1M+Voffset,SansSerif,Bold)coloured(255, 0, 0)
DRAWTEXT("S1M",barindex-4,S1M+Voffset,SansSerif,Bold)coloured(0, 128, 0)
DRAWTEXT("S2M",barindex-4,S2M+Voffset,SansSerif,Bold)coloured(0, 128, 0)
DRAWTEXT("S3M",barindex-4,S3M+Voffset,SansSerif,Bold)coloured(0, 128, 0)
DRAWTEXT("midR3J",barindex-4,midR3J+Voffset,SansSerif,Bold)coloured(255, 0, 0)
DRAWTEXT("midR2J",barindex-4,midR2J+Voffset,SansSerif,Bold)coloured(255, 0, 0)
DRAWTEXT("midR1J",barindex-4,midR1J+Voffset,SansSerif,Bold)coloured(255, 0, 0)
DRAWTEXT("midS1J",barindex-4,midS1J+Voffset,SansSerif,Bold)coloured(0, 128, 0)
DRAWTEXT("midS2J",barindex-4,midS2J+Voffset,SansSerif,Bold)coloured(0, 128, 0)
DRAWTEXT("midS3J",barindex-4,midS3J+Voffset,SansSerif,Bold)coloured(0, 128, 0)
DRAWTEXT("midR3H",barindex-4,midR3H+Voffset,SansSerif,Bold)coloured(255, 0, 0)
DRAWTEXT("midR2H",barindex-4,midR2H+Voffset,SansSerif,Bold)coloured(255, 0, 0)
DRAWTEXT("midR1H",barindex-4,midR1H+Voffset,SansSerif,Bold)coloured(255, 0, 0)
DRAWTEXT("midS1H",barindex-4,midS1H+Voffset,SansSerif,Bold)coloured(0, 128, 0)
DRAWTEXT("midS2H",barindex-4,midS2H+Voffset,SansSerif,Bold)coloured(0, 128, 0)
DRAWTEXT("midS3H",barindex-4,midS3H+Voffset,SansSerif,Bold)coloured(0, 128, 0)
DRAWTEXT("midR3M",barindex-4,midR3M+Voffset,SansSerif,Bold)coloured(255, 0, 0)
DRAWTEXT("midR2M",barindex-4,midR2M+Voffset,SansSerif,Bold)coloured(255, 0, 0)
DRAWTEXT("midR1M",barindex-4,midR1M+Voffset,SansSerif,Bold)coloured(255, 0, 0)
DRAWTEXT("midS1M",barindex-4,midS1M+Voffset,SansSerif,Bold)coloured(0, 128, 0)
DRAWTEXT("midS2M",barindex-4,midS2M+Voffset,SansSerif,Bold)coloured(0, 128, 0)
DRAWTEXT("midS3M",barindex-4,midS3M+Voffset,SansSerif,Bold)coloured(0, 128, 0)
///////////////////////////////////// AFFICHAGE SETTLEMENT, PP ET NIVEAUX FIGURES AVEC LIGNES ETENDUES A DROITE/////////////////////////////////////////
///////////// CASH CLOSE /////////
DRAWHLINE(CashCloseJ) COLOURED(75,0,130)
///////////// HIGH/LOW /////////
DRAWHLINE(HighJ) COLOURED(127, 255, 212)
DRAWHLINE(HighH) COLOURED(127, 255, 212)
DRAWHLINE(HighM) COLOURED(127, 255, 212)
DRAWHLINE(LowJ) COLOURED(127, 255, 212)
DRAWHLINE(LowH) COLOURED(127, 255, 212)
DRAWHLINE(LowM) COLOURED(127, 255, 212)
///////////// SETTLEMENT ////////////
DRAWHLINE(SettlementJ) COLOURED(255,255,0)
DRAWHLINE(SettlementH) COLOURED(255,255,0)
DRAWHLINE(SettlementM) COLOURED(255,255,0)
///////////// PP //////////////////
DRAWHLINE(PPJ) COLOURED(0, 0, 0)
DRAWHLINE(PPH) COLOURED(0, 0, 0)
DRAWHLINE(PPM) COLOURED(0, 0, 0)
DRAWHLINE(S1J) COLOURED(0, 128, 0)
DRAWHLINE(S2J) COLOURED(0, 128, 0)
DRAWHLINE(S3J) COLOURED(0, 128, 0)
DRAWHLINE(S1H) COLOURED(0, 128, 0)
DRAWHLINE(S2H) COLOURED(0, 128, 0)
DRAWHLINE(S3H) COLOURED(0, 128, 0)
DRAWHLINE(S1M) COLOURED(0, 128, 0)
DRAWHLINE(S2M) COLOURED(0, 128, 0)
DRAWHLINE(S3M) COLOURED(0, 128, 0)
DRAWHLINE(R1J) COLOURED(255, 0, 0)
DRAWHLINE(R2J) COLOURED(255, 0, 0)
DRAWHLINE(R3J) COLOURED(255, 0, 0)
DRAWHLINE(R1H) COLOURED(255, 0, 0)
DRAWHLINE(R2H) COLOURED(255, 0, 0)
DRAWHLINE(R3H) COLOURED(255, 0, 0)
DRAWHLINE(R1M) COLOURED(255, 0, 0)
DRAWHLINE(R2M) COLOURED(255, 0, 0)
DRAWHLINE(R3M) COLOURED(255, 0, 0)
Return midS1J COLOURED(0, 128, 0) STYLE(DOTTEDLINE) AS "midS1J", midS2J COLOURED(0, 128, 0) STYLE(DOTTEDLINE) AS "midS2J", midS3J COLOURED(0, 128, 0) STYLE(DOTTEDLINE) AS "midS3J", midS1H COLOURED(0, 128, 0) STYLE(DOTTEDLINE) AS "midS1H", midS2H COLOURED(0, 128, 0) STYLE(DOTTEDLINE) AS "midS2H", midS3H COLOURED(0, 128, 0) STYLE(DOTTEDLINE) AS "midS3H", midS1M COLOURED(0, 128, 0) STYLE(DOTTEDLINE) AS "midS1M", midS2M COLOURED(0, 128, 0) STYLE(DOTTEDLINE) AS "midS2M", midS3M COLOURED(0, 128, 0) STYLE(DOTTEDLINE) AS "midS3M", midR1J COLOURED(255, 0, 0) STYLE(DOTTEDLINE) AS "midR1J", midR2J COLOURED(255, 0, 0) STYLE(DOTTEDLINE) AS "midR2J", midR3J COLOURED(255, 0, 0) STYLE(DOTTEDLINE) AS "midR3J", midR1H COLOURED(255, 0, 0) STYLE(DOTTEDLINE) AS "midR1H", midR2H COLOURED(255, 0, 0) STYLE(DOTTEDLINE) AS "midR2H", midR3H COLOURED(255, 0, 0) STYLE(DOTTEDLINE) AS "midR3H", midR1M COLOURED(255, 0, 0) STYLE(DOTTEDLINE) AS "midR1M", midR2M COLOURED(255, 0, 0) STYLE(DOTTEDLINE) AS "midR2M", midR3M COLOURED(255, 0, 0) STYLE(DOTTEDLINE) AS "midR3M"
Remarques (uniquement pour la version PP CF.D cash) :
- Il faut ajouter l'indicateur sur le prix
- Il faut par ailleurs cocher l'option "Mise à l'échelle verticale : utiliser seulement le prix" dans les propriétés de Prix :
2. Créer les spreads des actifs => servira uniquement pour les PP CF.D cash
Cela se fait via l'outils "Spreads" de prt. Voici un exemple avec le Dax (vous trouverez en première partie du code ci-dessus les autres cas = Dow/nasdaq.Fts.e/Cac). L'outil se trouve dans le menu Affichage (ou Ctrl+R directement).
- Donnez un nom, par exemple "spread Dax"
- Choisissez la 1ère valeur, en cherchant Allemagne 30 cash (25€) (cela correspond au CF.D cash). Il s'agit du CF.D répliquant l'indice dax 30.
- Choisissez la 2ème valeur, en cherchant Allemagne 30 (25€) (échéance la plus proche = MAR-19 à l'heure où j'écris ce post). Il s'agit d'un CF.D répliquant le contrat futures dax 30
- Il s'agit ici d'une différence donc c'est Coeff 1 - coeff 2
- Vous validez
- Vous obtenez ainsi en temps réel le spread entre le dax cash et le dax futures
- Ce spread correspond à la variable diff dans le code ci-dessus
- Il faut le mettre à jour autant de fois que cela est nécessaire (toujours garder un oeil ). Rassurez vous, il ne bouge pas tous les secondes, mais peut varier de plusieurs pts en une journée :musique:
3. Mettre à jour les PP futures tous les jours => concerne les PP CF.D cash et PP CF.D futures
- Tous les jours vous chargez le fichier "PP_report.xlsx" via le lien permanent drive :
Interrompu définitivement
- Il y a 3 onglets :
* ALL : vous y trouvez tous les détails nécessaires sur chaque actifs
* short : version allégée qui permet de copier coller directement pour chaque actif le code à modifier sous prt
* CONTACT : pour me contacter directement. Uniquement si cela est nécessaire. Merci d'utiliser en priorité cette file pour échanger de façon à ce que cela bénéficie à tous
Bon à savoir :
J'ai contacté plusieurs fois prt afin d'apporter 2 améliorations qui rendrait l'outil plus stable/fiable/pratique à savoir :
- Permettre de connaitre automatiquement quel actif est concerné dans le code. Comme vous pouvez le constater actuellement, on est obligé de détecter l'actif en utilisant des valeurs d'indices comme pour la Dax par exemple ("// DAX if close>9000 and close<15000 then"). C'est notamment problématique pour Fts.e et le nasdaq qui ont des niveaux très proches
- Récupérer automatiquement les spreads dans le code, de façon à ce que la variable diff se mette à jour toute seule en permanence. Ce serait un petit pas pour prt mais un très grand pour cet outil !
- Pour suivre l'évolution des ces 2 demandes, suiviez le lien : suggestion-d-amelioration-prt-t27558.html ainsi que https://www.prorealcode.com/topic/probuilder-obtention-de-lid-du-sous-jacent-actuel/ et https://www.prorealcode.com/topic/probuilder-obtention-des-spreads-crees-dans-spreads/
- Par rapport au fichier XL : il peut arriver qu'il y ait des bugs ou problèmes de mise à jour. N'hésitez pas à me contacter si c'est le cas. Par ailleurs vérifiez toujours les dates indiquées !
- Il n'existe pas d'outils miracles. Des différences peuvent toujours subsister même en utilisant directement prt futures. Il faut donc bien comprendre comment fonctionne cet outil, ce que sont les PP, etc... et toujours avoir un peu de recul afin de ne pas utiliser bêtement cet outil mais plutôt intelligemment
Avant dernière chose !
Si vous ne l'avez pas déjà fait, merci par avance de participer au sondage ci-dessous
sondage-outil-points-pivots-futures-appliques-au-cash-t26739.html
Dernière chose !
Pour ceux que ça intéresse, j'ai mis en place un outil permettant de calculer les spreads réels (= les spreads payés) sur chaque transaction CF.D. Si ça vous intéresse, suivez le lien : analyse-des-spreads-reels-payes-cfd à risque limité-a-risque-limite-ig-t27499.html
Très bon trading à tous et au plaisir d'échanger avec vous