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:
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:
//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
You must be logged in to post a comment.
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 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 @ 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
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
Bonjour, Quel est le bon code avec l’ajout de Fibo 76,4 % et les tendances qui fonctionnent ? Merci à vous ;)
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?
//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 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
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
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)
Bonjour à vous tous, D'après vous, quelle serais la bonne période pour du trading 15 minutes. Merci d'avance