Pourquoi cette file ?
Cette file prends le relais de la V1 : pp-points-pivots-solution-stable-pour-tous-t25235.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.
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 ainsi que les figures (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
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 de PRT.
De quoi est composé l'outil ?
L'outil a 3 composantes :
- 1 fichier XL qui est automatiquement mis à jour tous les jours à 6H, 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
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).
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
Code : #
REM PP Futures sur graphiques cfd à risque limité cash (v.2)
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 = CF.D Dow cash 10$ - CF.D Dow Futures (échéance la plus proche, 3 mois) 10$
REM Exemple avec le Nasdaq => spread à utiliser = CF.D Nasdaq cash 100$ - CF.D Nasdaq Futures (échéance la plus proche, 3 mois) 100$
REM Exemple avec le indice anglais => spread à utiliser = CF.D indice anglais cash 10£ - CF.D indice anglais Futures (échéance la plus proche, 3 mois) 10£
REM Exemple avec le Dax => spread à utiliser = CF.D Dax cash 25€ - CF.D Dax Futures (échéance la plus proche, 3 mois) 25€
REM Exemple avec le Cac => spread à utiliser = CF.D Cac cash 10€ - CF.D Cac Futures (échéance la plus proche, 1 mois) 10€
defparam drawonlastbaronly = true
///////////////////////////////////// VARIABLES /////////////////////////////////////////
// DOW
if close>20000 and close<30000 then
diff=4.1
HighJ=25522
LowJ=25213
SettlementJ=25495
HighH=26171
LowH=25213
SettlementH=25495
HighM=26238
LowM=24862
SettlementM=25913
// décalage vertical texte/lignes horizontales
Voffset=4*pointsize
endif
// NASDAQ
if close>6000 and close<8000 then
diff=-2.2
HighJ=7034
LowJ=6939
SettlementJ=7026.75
HighH=7211.5
LowH=6939
SettlementH=7026.75
HighM=7168.5
LowM=6841
SettlementM=7102.5
// décalage vertical texte/lignes horizontales
Voffset=1*pointsize
endif
// indice anglais
if close>6000 and close<8000 then
Diff=1.9
HighJ=7141
LowJ=7074.5
SettlementJ=7112
HighH=7197.5
LowH=7074.5
SettlementH=7112
HighM=7217.5
LowM=6902
SettlementM=7075.5
// décalage vertical texte/lignes horizontales
Voffset=2*pointsize
endif
// DAX
if close>9000 and close<15000 then
Diff=0.9
HighJ=11498.5
LowJ=11404.5
SettlementJ=11465.5
HighH=11678.5
LowH=11404.5
SettlementH=11465.5
HighM=11555.5
LowM=10856.5
SettlementM=11520
// décalage vertical texte/lignes horizontales
Voffset=2*pointsize
endif
// CAC
if close>4000 and close<6000 then
diff=0.3
HighJ=5253
LowJ=5220.5
SettlementJ=5231
HighH=5314.5
LowH=5220.5
SettlementH=5231
HighM=5247.5
LowM=4945
SettlementM=5239
// 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("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/////////////////////////////////////////
///////////// 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)
Remarques :
- 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
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
- Tous les jours vous chargez le fichier "PP_report.xlsx" via le lien permanent drive :
https://1drv.ms/f/s!Apct-MPjRX6Cd7leOKFODn1Creo
- 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
- 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-app ... 26739.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-r ... 27499.html
Très bon trading à tous et au plaisir d'échanger avec vous