The Quick Fibonacci indicator plots automatically the Fibonacci retracement calculated with the last highest high and lowest low of the last X periods.
It adds on the price chart 2 trend lines:
- ascending trendline starting from lowest low to second lowest price found
- descending trendline starting from highest high to second highest price found
A “retracement block” can be also drawn by the indicator to indicate how much the price has retraced since the Fibonacci figure was formed.
The retracement lines change color depending of the trend:
- green color if the price has retraced from a lowest low (price is ascending since longer)
- red color if the price has retraced from a highest high (price is descending since longer)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 |
//PRC_Quick Fib | indicator //09.01.2019 //Nicolas @ www.prorealcode.com //Sharing ProRealTime knowledge defparam drawonlastbaronly = true // --- settings period = 100 //lookback period of the Fibonacci Retracement DrawRetracementBlocks = 1 // 0=false ; 1=true // --- end of settings hh=0 ll=low shiftlowest=barindex for i = period downto 1 do if high[i]>hh then hh=high[i] shifthighest=barindex[i] endif if low[i]<ll then ll=low[i] shiftlowest=barindex[i] endif next isSwingDown = shiftHighest < shiftLowest if isSwingDown then fullrange = abs(hh-ll) fibo100 = hh fibo0 = ll fibo236 = ll+(fullrange*0.236) fibo382 = ll+(fullrange*0.382) fibo50 = ll+fullrange/2 fibo618 = ll+(fullrange*0.618) startbar = min(shifthighest,shiftlowest) r=255 g=0 b=0 else fullrange = abs(hh-ll) fibo100 = ll fibo0 = hh fibo236 = hh-(fullrange*0.236) fibo382 = hh-(fullrange*0.382) fibo50 = hh-fullrange/2 fibo618 = hh-(fullrange*0.618) startbar = min(shifthighest,shiftlowest) r=0 g=255 b=0 endif if startbar>0 then //plot fibonacci levels drawsegment(startbar,fibo100,barindex,fibo100) coloured(r,g,b) drawtext(" 100%",barindex,fibo100,Dialog,Standard,20) coloured(r,g,b) drawsegment(startbar,fibo0,barindex,fibo0) coloured(r,g,b) drawtext(" 0%",barindex,fibo0,Dialog,Standard,20) coloured(r,g,b) drawsegment(startbar,fibo236,barindex,fibo236) coloured(r,g,b) drawtext(" 23.6%",barindex,fibo236,Dialog,Standard,20) coloured(r,g,b) drawsegment(startbar,fibo382,barindex,fibo382) coloured(r,g,b) drawtext(" 38.2%",barindex,fibo382,Dialog,Standard,20) coloured(r,g,b) drawsegment(startbar,fibo50,barindex,fibo50) coloured(r,g,b) drawtext(" 50%",barindex,fibo50,Dialog,Standard,20) coloured(r,g,b) drawsegment(startbar,fibo618,barindex,fibo618) coloured(r,g,b) drawtext(" 61.8%",barindex,fibo618,Dialog,Standard,20) coloured(r,g,b) //plot price at 0% and 100% levels drawtext("#ll#",shiftlowest,ll-fullrange*0.03,dialog,standard,20) coloured(0,255,0) drawtext("#hh#",shifthighest,hh+fullrange*0.03,dialog,standard,20) coloured(255,0,0) endif //contour lines shiftContourDown = barindex-shiftHighest highestSlope = 0 counth=max(1,(barindex-shifthighest)) for i = 2 to counth do thisSlope = (High[i] - hh) / ((barindex-shiftHighest) - i) if (thisSlope >= highestSlope or highestSlope = 0) then shiftContourDown = i highestSlope = thisSlope endif next shiftContourUp = barindex-shiftLowest LowestSlope = 0 countl=max(1,(barindex-shiftLowest)) for i = 2 to countl do thisSlope = (low[i] - ll) / ((barindex-shiftLowest) - i) if (thisSlope <= LowestSlope or LowestSlope = 0) then shiftContourUp = i LowestSlope = thisSlope endif next drawline(shifthighest,hh,barindex[shiftcontourdown],high[shiftcontourdown]) coloured(r,g,b) drawline(shiftlowest,ll,barindex[shiftcontourup],low[shiftcontourup]) coloured(r,g,b) //retracement blocks if DrawRetracementBlocks then if not isSwingDown then blockprice=hh startbar=barindex-shifthighest for i = startbar downto 2 do if low[i]<blockprice then blockprice=low[i] blockbar=barindex[i] endif next drawrectangle(blockbar,blockprice,barindex,ll) coloured(r,g,b) else blockprice=ll startbar=barindex-shiftlowest for i = startbar downto 2 do if high[i]>blockprice then blockprice=high[i] blockbar=barindex[i] endif next drawrectangle(blockbar,blockprice,barindex,hh) coloured(r,g,b) endif endif return |
Share this
No information on this site is investment advice or a solicitation to buy or sell any financial instrument. Past performance is not indicative of future results. Trading may expose you to risk of loss greater than your deposits and is only suitable for experienced investors who have sufficient financial means to bear such risk.
ProRealTime ITF files and other attachments :PRC is also on YouTube, subscribe to our channel for exclusive content and tutorials
Bonjour Nicolas,
Tu commences fort l’année ! quelle soit bonne et fructueuse pour tous tes projets.
Pourrais tu rajouter le fibo 76.4% sur le code ?
Et quel est le bout de code qui reflète les lignes de tendances ?
merci, bonne après midi
excellent travail qui va devenir rapidement indispensable à certain 🙂
@supertiti, pour l’ajout du fibo 76.4% et comme le bouton [Add PRT code] fait toujours des siennes dans les réponses, les voici une à une !
insert après ligne 36 (du code original)
fibo764 = ll+(fullrange*0.764)
insert après ligne 48 (du code original)
fibo764 = hh-(fullrange*0.764)
insert après ligne 68 (du code original)
drawsegment(startbar,fibo764,barindex,fibo764) coloured(r,g,b)
drawtext(” 76.4%”,barindex,fibo764,Dialog,Standard,20) coloured(r,g,b)
et pour ce qui traite des lignes de code reflétant les lignes de tendances, je pense que c’est de la ligne 75 à 98
Bonne année à toi (et à nicolas par la même occasion)
Excellent c’est Noël après l’heure
merci Nicolas pour cet apport
Bonne année à tous
Wow this is brilliant!
Thank you both Nicolas and and swapping.. I have added 76.4% and also 127.2 and 161.8 as target levels!! please check if its correct!! thanks
Merci Swapping pour ton aide , meilleurs voeux également
//PRC_Quick Fib | indicator
//09.01.2019
//Nicolas @ http://www.prorealcode.com
//Sharing ProRealTime knowledge
defparam drawonlastbaronly = true
// — settings
//period = 100 //lookback period of the Fibonacci Retracement
//DrawRetracementBlocks = 1 // 0=false ; 1=true
// — end of settings
hh=0
ll=low
shiftlowest=barindex
for i = period downto 1 do
if high[i]>hh then
hh=high[i]
shifthighest=barindex[i]
endif
if low[i]<ll then
ll=low[i]
shiftlowest=barindex[i]
endif
next
isSwingDown = shiftHighest 0 then
//plot fibonacci levels
drawsegment(startbar,fibo100,barindex,fibo100) coloured(r,g,b)
drawtext(” 100%”,barindex,fibo100,Dialog,Standard,20) coloured(r,g,b)
drawsegment(startbar,fibo0,barindex,fibo0) coloured(r,g,b)
drawtext(” 0%”,barindex,fibo0,Dialog,Standard,20) coloured(r,g,b)
drawsegment(startbar,fibo236,barindex,fibo236) coloured(r,g,b)
drawtext(” 23.6%”,barindex,fibo236,Dialog,Standard,20) coloured(r,g,b)
drawsegment(startbar,fibo382,barindex,fibo382) coloured(r,g,b)
drawtext(” 38.2%”,barindex,fibo382,Dialog,Standard,20) coloured(r,g,b)
drawsegment(startbar,fibo50,barindex,fibo50) coloured(r,g,b)
drawtext(” 50%”,barindex,fibo50,Dialog,Standard,20) coloured(r,g,b)
drawsegment(startbar,fibo618,barindex,fibo618) coloured(r,g,b)
drawtext(” 61.8%”,barindex,fibo618,Dialog,Standard,20) coloured(r,g,b)
drawsegment(startbar,fibo764,barindex,fibo764)coloured(r,g,b)
drawtext (” 76.4%”, barindex,fibo764,Dialog,Standard,20) coloured (r, g, b)
drawsegment(startbar,fibo272,barindex,fibo272)coloured(r,g,b)
drawtext (” -27.2%”, barindex,fibo272,Dialog,Standard,20) coloured (r, g, b)
drawsegment(startbar,fibo1618,barindex,fibo1618)coloured(r,g,b)
drawtext (” -61.8%”, barindex,fibo1618,Dialog,Standard,20) coloured (r, g, b)
//plot price at 0% and 100% levels
drawtext(“#ll#”,shiftlowest,ll-fullrange*0.03,dialog,standard,20) coloured(0,255,0)
drawtext(“#hh#”,shifthighest,hh+fullrange*0.03,dialog,standard,20) coloured(255,0,0)
endif
//contour lines
shiftContourDown = barindex-shiftHighest
highestSlope = 0
counth=max(1,(barindex-shifthighest))
for i = 2 to counth do
thisSlope = (High[i] – hh) / ((barindex-shiftHighest) – i)
if (thisSlope >= highestSlope or highestSlope = 0) then
shiftContourDown = i
highestSlope = thisSlope
endif
next
shiftContourUp = barindex-shiftLowest
LowestSlope = 0
countl=max(1,(barindex-shiftLowest))
for i = 2 to countl do
thisSlope = (low[i] – ll) / ((barindex-shiftLowest) – i)
if (thisSlope <= LowestSlope or LowestSlope = 0) then
shiftContourUp = i
LowestSlope = thisSlope
endif
next
drawline(shifthighest,hh,barindex[shiftcontourdown],high[shiftcontourdown]) coloured(r,g,b)
drawline(shiftlowest,ll,barindex[shiftcontourup],low[shiftcontourup]) coloured(r,g,b)
//retracement blocks
if DrawRetracementBlocks then
if not isSwingDown then
blockprice=hh
startbar=barindex-shifthighest
for i = startbar downto 2 do
if low[i]blockprice then
blockprice=high[i]
blockbar=barindex[i]
endif
next
drawrectangle(blockbar,blockprice,barindex,hh) coloured(r,g,b)
endif
endif
return
Pour le niveau fibo 76.4 c’est bon ça fonctionne.
Pour les lignes de tendances c’est pas bon , j’avais déjà pris ce bloc sans succès, peut être que le chef peut nous aider ?
Bonne soirée
Pour les droites de tendances ce code fonctionne bien
nota le bouton add PRT code ne fonctionne pas ici
defparam drawonlastbaronly = true
// — settings
//period = 100 //lookback period of the Fibonacci Retracement
// — end of settings
hh=0
ll=low
shiftlowest=barindex
for i = period downto 1 do
if high[i]>hh then
hh=high[i]
shifthighest=barindex[i]
endif
if low[i]<ll then
ll=low[i]
shiftlowest=barindex[i]
endif
next
isSwingDown = shiftHighest 0 then
drawtext(“#ll#”,shiftlowest,ll-fullrange*0.03,dialog,standard,20) coloured(0,255,0)
drawtext(“#hh#”,shifthighest,hh+fullrange*0.03,dialog,standard,20) coloured(255,0,0)
endif
//contour lines
shiftContourDown = barindex-shiftHighest
highestSlope = 0
counth=max(1,(barindex-shifthighest))
for i = 2 to counth do
thisSlope = (High[i] – hh) / ((barindex-shiftHighest) – i)
if (thisSlope >= highestSlope or highestSlope = 0) then
shiftContourDown = i
highestSlope = thisSlope
endif
next
shiftContourUp = barindex-shiftLowest
LowestSlope = 0
countl=max(1,(barindex-shiftLowest))
for i = 2 to countl do
thisSlope = (low[i] – ll) / ((barindex-shiftLowest) – i)
if (thisSlope <= LowestSlope or LowestSlope = 0) then
shiftContourUp = i
LowestSlope = thisSlope
endif
next
drawline(shifthighest,hh,barindex[shiftcontourdown],high[shiftcontourdown]) coloured(r,g,b)
drawline(shiftlowest,ll,barindex[shiftcontourup],low[shiftcontourup]) coloured(r,g,b)
return
Hi Supertiti…
there’s an error in your code?
Bonjour,
Quel est le bon code avec l’ajout de Fibo 76,4 % et les tendances qui fonctionnent ? Merci à vous 😉
Bonjour Florian, c’est les ajouts des lignes que j’ai mentionné dans ma seconde réponse (sous celui de supertiti)
test pour visualiser ce que donne quelque ligne de programme avec la balise “code”
hh = 0
ll = low
shiftlowest = barindex
for i = period downto 1 do
if high[i]>hh then
hh = high[i]
shifthighest = barindex[i]
endif
if low[i]<ll then
ll = low[i]
shiftlowest = barindex[i]
endif
next
Voici la modification du code de Nicolas pour les personnes intéressées comprenant :
1) le niveau de “76.4% de Fibonacci”
2) une case à cocher supplémentaire “TrendLine” afin de ne visualiser que les Trend Line (si vous le souhaitez)
3) une case à cocher supplémentaire “Fibonacci” afin de ne visualiser que les niveaux de Fibonacci (idem)
et si vous décochez les 3 cases et bien vous n’avez plus rien 😉 il vaut mieux l’appeler PRC_QuickFibTL pour le différencier de l’original (qui donne de très bon résultats d’ailleurs)
//PRC_Quick Fib Trend Line | indicator
//09.01.2019 (release 1.1)
//Nicolas @ http://www.prorealcode.com
//Sharing ProRealTime knowledge
DefParam DrawOnLastBarOnly = true
// — settings
//period = 100 // lookback period of the Fibonacci Retracement
//DrawRetracementBlocks = 1 // 0=false ; 1=true
//TrendLine = 1 // 0=false ; 1=true
// — end of settings
hh = 0
ll = low
shiftlowest = barindex
for i = period downto 1 do
if high[i]>hh then
hh = high[i]
shifthighest = barindex[i]
endif
if low[i]= highestSlope or highestSlope = 0) then
shiftContourDown = i
highestSlope = thisSlope
endif
next
shiftContourUp = barindex-shiftLowest
LowestSlope = 0
countl = max(1,(barindex-shiftLowest))
for i = 2 to countl do
thisSlope = (low[i] – ll) / ((barindex-shiftLowest) – i)
if (thisSlope <= LowestSlope or LowestSlope = 0) then
shiftContourUp = i
LowestSlope = thisSlope
endif
next
DrawLine(shifthighest,hh,barindex[shiftcontourdown],high[shiftcontourdown]) coloured(r,g,b)
DrawLine(shiftlowest,ll,barindex[shiftcontourup],low[shiftcontourup]) coloured(r,g,b)
endif
isSwingDown = shiftHighest 0 then
// plot fibonacci levels
DrawSegment(startbar,fibo100,barindex,fibo100) coloured(r,g,b)
DrawText(” 100%”,barindex,fibo100,Dialog,Standard,11) coloured(r,g,b)
DrawSegment(startbar,fibo0,barindex,fibo0) coloured(r,g,b)
DrawText(” 0%”,barindex,fibo0,Dialog,Standard,11) coloured(r,g,b)
DrawSegment(startbar,fibo236,barindex,fibo236) coloured(r,g,b)
DrawText(” 23.6%”,barindex,fibo236,Dialog,Standard,11) coloured(r,g,b)
DrawSegment(startbar,fibo382,barindex,fibo382) coloured(r,g,b)
DrawText(” 38.2%”,barindex,fibo382,Dialog,Standard,11) coloured(r,g,b)
DrawSegment(startbar,fibo50,barindex,fibo50) coloured(r,g,b)
DrawText(” 50%”,barindex,fibo50,Dialog,Standard,11) coloured(r,g,b)
DrawSegment(startbar,fibo618,barindex,fibo618) coloured(r,g,b)
DrawText(” 61.8%”,barindex,fibo618,Dialog,Standard,11) coloured(r,g,b)
DrawSegment(startbar,fibo764,barindex,fibo764) coloured(r,g,b)
DrawText(” 76.4%”,barindex,fibo764,Dialog,Standard,11) coloured(r,g,b)
// plot price at 0% and 100% levels
DrawText(“HI #hh#”,shifthighest,hh+fullrange*0.03,dialog,standard,11) coloured(255,0,0)
DrawText(“LO #ll#”,shiftlowest,ll-fullrange*0.03,dialog,standard,11) coloured(0,255,0)
endif
endif
// retracement blocks
if DrawRetracementBlocks then
if not isSwingDown then
blockprice = hh
startbar = barindex-shifthighest
for i = startbar downto 2 do
if low[i]blockprice then
blockprice = high[i]
blockbar = barindex[i]
endif
next
DrawRectangle(blockbar,blockprice,barindex,hh) coloured(r,g,b)
endif
endif
return
N’oubliez pas d’ajouter dans les variables par la clef a mollette comme ci dessous
TrendLine Type (booléen = vrai)
Fibonacci Type (booléen = vrai)
@ Swapping
J’ai des erreurs sur ton code ?
ligne 23 0) parenthèse en trop
ligne 41 endif
ligne 43 is swingdown ….
ligne 71 if low ….
une idée ? merci
oui supertiti, même en faisant un copier/coller de ma modif (qui fonctionne parfaitement sur ma plate forme), il y a de nouvelles erreurs qui se crée en utilisant la balise (code), dommage que Nicolas ou un programmeur chez Prorealcode ne regarde pas de près ce bug dès qu’on utilise la balise [Add PRT code], ce serais plus pratique et éviterais ce genre de situation ou on génère d’autres erreurs au lieu d’apporter sa pierre à l’édifice ! Donc le mieux serais d’ouvrir un thread spécifique dans le forum pour pouvoir utiliser cette balise qui fonctionne correctement dans ce cas de figure …
Voici le lien pour continuer cette discussion (avec le code correct) sur le forum français …
https://www.prorealcode.com/topic/prc_quickfibtl/
Shouldn’t the missing level be 78.6 not 76.4!
78.6 yes it’s the square root of 0.618
However I have a problem with this tool
I have a annoying vertical line that appears in the previous bar before the last bar and start from the ZERO LEVEL OF THE GRAPH TO THE INFINITO
Furthermore the number of retracement are too big
here’s a pic
https://i.ibb.co/QQcj7Vb/Quick-fibo.png
@Hans63, not sure if it will fix the problem but worth trying this option.
https://drive.google.com/file/d/1-HuXczXqf-92g8xcZxXF_FYj6OzfX5TW/view?usp=sharing
https://www.prorealcode.com/topic/prc_quickfibtl/
Please Hans63 and robdav follow to upper link and download the good file PRC_QuikFibTL.itf 😉
Thank you swapping
@Nicolas merci pour se remarquable indicateur, reste à voir comment on va pourvoir l’intégrer dans nos stratégies 😉