You can create a scan and save it as a watchlist.is there any code for watchlist .. ( down arrow and up arrow ) ..
You can create a scan and save it as a watchlist.is there any code for watchlist .. ( down arrow and up arrow ) ..
@chewie76 : Thank you for this wonderful study. I'm looking for some automation of fib confluence levels. The idea is as belowAll other Automatic Fib indicators look at the past, measure a previous high and previous low and give you levels. This indicator looks into the future and gives you possible high and low price levels. The Automatic Fibonacci Levels are two indicators, one for long positions and one for short positions. Up and Down arrows show entry signals when price crosses the 78.6% level. Entry signal alerts are included. This can be used for both swing trading and day trading based on the timeframe of your chart.
If price continues and breaks the 100% level, a new set of lines will be automatically drawn. Note, no guarantee price will hit the target.
Here are some examples.
Long position in /RTY 4 hr.
Long position in WMT daily.
Long position in JNJ daily.
Short position in /SI daily.
Short position in HRZN 4 hr.
Shareable Link:
Long position:
http://tos.mx/AyuB4pQ
Short position:
http://tos.mx/1IJ4a4L
Long Position Code:
Code:#Automatic Fibonacci Long Levels #based on Mobius's Fractal Pivot Strategy #developed by Chewie76 on 8/27/2021 # User Inputs input n = 20; input FractalEnergyLength = 8; input FractalEnergyThreshold = .68; input AtrMult = .70; input nATR = 4; input AvgType = AverageType.HULL; input LabelsOn = yes; input AlertsOn = yes; # Variables def o = open; def h = high; def l = low; def c = close; def bar = BarNumber(); def TS = TickSize(); def nan = double.nan; def ATR = Round((MovingAverage(AvgType, TrueRange(h, c, l), nATR)) / TS, 0) * TS; def risk = if Between(c, 0, 1500) then ATR else if Between(c, 1500, 3500) then 2 else if Between(c, 3500, 5500) then 4 else 6; def FE = Log(Sum((Max(h, c[1]) - Min(l, c[1])), FractalEnergyLength) / (Highest(h, FractalEnergyLength) - Lowest(l, FractalEnergyLength))) / Log(FractalEnergyLength); # Parent Aggregation Pivot High # Pivot High Variables def p_hh = fold i = 1 to n + 1 with p = 1 while p do h > GetValue(h, -1); def p_PivotH = if (bar > n and h == Highest(h, n) and p_hh) then h else NaN; def p_PHValue = if !IsNaN(p_PivotH) then p_PivotH else p_PHValue[1]; def p_PHBar = if !IsNaN(p_PivotH) then bar else nan; # Pivot High and Pivot High Exit Variables # Pivot High Variables def hh = fold ii = 1 to n + 1 with pp = 1 while pp do h > GetValue(h, -1); def PivotH = if (bar > n and h == Highest(h, n) and hh) then h else Double.NaN; def PHValue = if !IsNaN(PivotH) then PivotH else PHValue[1]; def PHBar = if !IsNaN(PivotH) then bar else nan; # Pivot High Exit Variables def PHExit = if (bar > n and h == Highest(h, n) and hh) then if l[1] < l then l[1] else fold r = 0 to 20 with a = NaN while IsNaN(a) do if GetValue(l[1], r) < l then GetValue(l[1], r) else NaN else Double.NaN; def PHExitValue = if !IsNaN(PHExit) then PHExit else PHExitValue[1]; def PHExitBar = if (bar > n and h == Highest(h, n) and hh) then if l[1] < l then bar - 1 else fold d = 0 to 20 with y = NaN while IsNaN(y) do if GetValue(l[1], d) < l then GetValue(bar - 1, d) else NaN else NaN; # Pivot Low and Pivot Low Entry Variables # Parent Pivot Low Variables def p_ll = fold j = 1 to n + 1 with q = 1 while q do l < GetValue(l, -1); def p_PivotL = if (bar > n and l == Lowest(l, n) and p_ll) then l else NaN; def p_PLValue = if !IsNaN(p_PivotL) then p_PivotL else p_PLValue[1]; def p_PLBar = if !IsNaN(p_PivotL) then bar else nan; # Pivot Low Variables def ll = fold jj = 1 to n + 1 with qq = 1 while qq do l < GetValue(l, -1); def PivotL = if (bar > n and l == Lowest(l, n) and ll) then l else NaN; def PLValue = if !IsNaN(PivotL) then PivotL else PLValue[1]; def PLBar = if !IsNaN(PivotL) then bar else nan; # Pivot Low Entry Variables def PLEntry = if (bar > n and l == Lowest(l, n) and ll) then if h[1] > h then h[1] else fold t = 0 to 20 with w = NaN while IsNaN(w) do if GetValue(h[1], t) > h then GetValue(h[1], t) else NaN else NaN; def PLEntryValue = if !IsNaN(PLEntry) then PLEntry else PLEntryValue[1]; def PLEntryBar = if (bar > n and l == Lowest(l, n) and ll) then if h[1] > h then bar - 1 else fold u = 0 to 20 with z = NaN while IsNaN(z) do if GetValue(h[1], u) > h then GetValue(bar - 1, u) else NaN else NaN; # Plots plot F_100 = if bar >= HighestAll(PLBar) then HighestAll(if isNaN(c[-1]) then PLValue else nan) else nan; F_100.SetDefaultColor(Color.dark_red); F_100.SetLineWeight(2); def F_0100 =(if isNaN(F_100[1]) then F_100 else Double.NaN); addchartBubble(LabelsOn and F_100, F_0100,"100%",color.dark_red); plot F_786 = if bar >= HighestAll(PLEntryBar) then HighestAll(if isNaN(c[-1]) then PLEntryValue else nan) else nan; F_786.SetDefaultColor(Color.light_red); F_786.SetLineWeight(2); def F_0786 =(if isNaN(F_786[1]) then F_786 else Double.NaN); addchartBubble(LabelsOn and F_786, F_0786,"78.6%",color.light_red); plot priceLine = HighestAll(if IsNaN(c[-1]) then c else Double.NaN); priceLine.SetStyle(Curve.SHORT_DASH); priceLine.SetLineWeight(1); priceLine.SetDefaultColor(Color.CYAN); plot UpArrow = if c crosses above F_786 and FE > .5 then l else Double.NaN; UpArrow.SetPaintingStrategy(PaintingStrategy.ARROW_UP); UpArrow.SetLineWeight(5); UpArrow.SetDefaultColor(Color.GREEN); #Fib levels plot F_0 = (F_786-F_100) * 4.673 + F_100; F_0.setdefaultcolor(color.red); F_0.setlineweight(2); def F_00 =(if isNaN(F_0[1]) then F_0 else Double.NaN); addchartBubble(LabelsOn and F_0, F_00,"0%: " + asDollars(F_00),color.red); plot F_124 = (F_0 - F_100)/1.14155+ F_100; F_124.setdefaultcolor(color.dark_orange); F_124.setlineweight(2); def F_0124 =(if isNaN(F_124[1]) then F_124 else Double.NaN); addchartBubble(LabelsOn and F_124, F_0124,"12.4%",color.dark_orange); plot F_236 = (F_0 - F_100)/1.3089+ F_100; F_236.setdefaultcolor(color.plum); F_236.setlineweight(2); def F_0236 = (if isNaN(F_236[1]) then F_236 else Double.NaN); addchartBubble(LabelsOn and F_236, F_0236,"23.6%",color.plum); plot F_382 = (F_0 - F_100)/1.618+ F_100; F_382.setdefaultcolor(color.cyan); F_382.setlineweight(2); def F_0382 =(if isNaN(F_382[1]) then F_382 else Double.NaN); addchartBubble(LabelsOn and F_382, F_0382,"38.2%",color.cyan); plot F_50 = (F_0 - F_100)/2 + F_100; F_50.setdefaultcolor(color.green); F_50.setlineweight(2); def F_050 =(if isNaN(F_50[1]) then F_50 else Double.NaN); addchartBubble(LabelsOn and F_50, F_050,"50%",color.green); plot F_618 = (F_0 - F_100)/2.618+ F_100; F_618.setdefaultcolor(color.yellow); F_618.setlineweight(2); def F_0618 =(if isNaN(F_618[1]) then F_618 else Double.NaN); addchartBubble(LabelsOn and F_618, F_0618,"61.8%",color.yellow); plot F_886 = (F_786 - F_100)/1.88+ F_100; F_886.setdefaultcolor(color.violet); F_886.setlineweight(2); def F_0886 =(if isNaN(F_886[1]) then F_886 else Double.NaN); addchartBubble(LabelsOn and F_886, F_0886,"88.6%",color.violet); plot FE_272 = (F_0 - F_100)*1.272 + F_100; FE_272.setdefaultcolor(color.yellow); FE_272.SetStyle(Curve.LONG_DASH); FE_272.setlineweight(2); def F_0272 =(if isNaN(FE_272[1]) then FE_272 else Double.NaN); addchartBubble(LabelsOn and FE_272, F_0272,"-27.2%",color.yellow); plot FE_50 = (F_0 - F_100)*1.5 + F_100; FE_50.setdefaultcolor(color.GREEN); FE_50.SetStyle(Curve.LONG_DASH); FE_50.setlineweight(2); def FE_050 =(if isNaN(FE_50[1]) then FE_50 else Double.NaN); addchartBubble(LabelsOn and FE_50, FE_050,"-50%",color.GREEN); # Alerts Alert(AlertsOn and UpArrow, " ", Alert.Bar, Sound.ding);
Short Position Code:
Code:#Automatic Fibonacci Short Levels #based on Mobius's Fractal Pivot Strategy #developed by Chewie76 on 8/27/2021 # User Inputs input n = 20; input FractalEnergyLength = 8; input FractalEnergyThreshold = .68; input AtrMult = .70; input nATR = 4; input AvgType = AverageType.HULL; input LabelsOn = yes; input AlertsOn = yes; # Variables def o = open; def h = high; def l = low; def c = close; def bar = BarNumber(); def TS = TickSize(); def nan = double.nan; def ATR = Round((MovingAverage(AvgType, TrueRange(h, c, l), nATR)) / TS, 0) * TS; def risk = if Between(c, 0, 1500) then ATR else if Between(c, 1500, 3500) then 2 else if Between(c, 3500, 5500) then 4 else 6; def FE = Log(Sum((Max(h, c[1]) - Min(l, c[1])), FractalEnergyLength) / (Highest(h, FractalEnergyLength) - Lowest(l, FractalEnergyLength))) / Log(FractalEnergyLength); # Parent Aggregation Pivot High # Pivot High Variables def p_hh = fold i = 1 to n + 1 with p = 1 while p do h > GetValue(h, -1); def p_PivotH = if (bar > n and h == Highest(h, n) and p_hh) then h else NaN; def p_PHValue = if !IsNaN(p_PivotH) then p_PivotH else p_PHValue[1]; def p_PHBar = if !IsNaN(p_PivotH) then bar else nan; # Pivot High and Pivot High Exit Variables # Pivot High Variables def hh = fold ii = 1 to n + 1 with pp = 1 while pp do h > GetValue(h, -1); def PivotH = if (bar > n and h == Highest(h, n) and hh) then h else Double.NaN; def PHValue = if !IsNaN(PivotH) then PivotH else PHValue[1]; def PHBar = if !IsNaN(PivotH) then bar else nan; # Pivot High Exit Variables def PHExit = if (bar > n and h == Highest(h, n) and hh) then if l[1] < l then l[1] else fold r = 0 to 20 with a = NaN while IsNaN(a) do if GetValue(l[1], r) < l then GetValue(l[1], r) else NaN else Double.NaN; def PHExitValue = if !IsNaN(PHExit) then PHExit else PHExitValue[1]; def PHExitBar = if (bar > n and h == Highest(h, n) and hh) then if l[1] < l then bar - 1 else fold d = 0 to 20 with y = NaN while IsNaN(y) do if GetValue(l[1], d) < l then GetValue(bar - 1, d) else NaN else NaN; # Pivot Low and Pivot Low Entry Variables # Parent Pivot Low Variables def p_ll = fold j = 1 to n + 1 with q = 1 while q do l < GetValue(l, -1); def p_PivotL = if (bar > n and l == Lowest(l, n) and p_ll) then l else NaN; def p_PLValue = if !IsNaN(p_PivotL) then p_PivotL else p_PLValue[1]; def p_PLBar = if !IsNaN(p_PivotL) then bar else nan; # Pivot Low Variables def ll = fold jj = 1 to n + 1 with qq = 1 while qq do l < GetValue(l, -1); def PivotL = if (bar > n and l == Lowest(l, n) and ll) then l else NaN; def PLValue = if !IsNaN(PivotL) then PivotL else PLValue[1]; def PLBar = if !IsNaN(PivotL) then bar else nan; # Pivot Low Entry Variables def PLEntry = if (bar > n and l == Lowest(l, n) and ll) then if h[1] > h then h[1] else fold t = 0 to 20 with w = NaN while IsNaN(w) do if GetValue(h[1], t) > h then GetValue(h[1], t) else NaN else NaN; def PLEntryValue = if !IsNaN(PLEntry) then PLEntry else PLEntryValue[1]; def PLEntryBar = if (bar > n and l == Lowest(l, n) and ll) then if h[1] > h then bar - 1 else fold u = 0 to 20 with z = NaN while IsNaN(z) do if GetValue(h[1], u) > h then GetValue(bar - 1, u) else NaN else NaN; # Plots plot S_100 = if bar >= HighestAll(PHBar) then HighestAll(if isNaN(close[-1]) then PHValue else nan) else nan; S_100.SetDefaultColor(Color.dark_red); S_100.SetLineWeight(1); def S_0100 =(if isNaN(S_100[1]) then S_100 else Double.NaN); addchartBubble(LabelsOn and S_100, S_0100,"100%",color.dark_red); plot S_786 = if bar >= HighestAll(PHexitBar) then HighestAll(if isNaN(close[-1]) then PHExitValue else nan) else nan; S_786.SetDefaultColor(Color.red); def S_0786 =(if isNaN(S_786[1]) then S_786 else Double.NaN); addchartBubble(LabelsOn and S_786, S_0786,"78.6%",color.light_red); plot priceLine = HighestAll(if IsNaN(c[-1]) then c else Double.NaN); priceLine.SetStyle(Curve.SHORT_DASH); priceLine.SetLineWeight(1); priceLine.SetDefaultColor(Color.CYAN); plot DnArrow = if c crosses below S_786 and ((FE > .618) or (FE < .382)) then h else Double.NaN; DnArrow.SetPaintingStrategy(PaintingStrategy.ARROW_DOWN); DnArrow.SetLineWeight(5); DnArrow.SetDefaultColor(Color.RED); #Fib levels plot S_0 = (S_100-S_786) * -4.673 + S_100; S_0.setdefaultcolor(color.red); S_0.setlineweight(1); def S_00 =(if isNaN(S_0[1]) then S_0 else Double.NaN); addchartBubble(LabelsOn and S_0, S_00,"0%: " + asDollars(S_00),color.red); plot S_124 = (S_100-S_0)/-1.14155 + S_100; S_124.setdefaultcolor(color.dark_orange); S_124.setlineweight(1); def S_0124 =(if isNaN(S_124[1]) then S_124 else Double.NaN); addchartBubble(LabelsOn and S_124, S_0124,"12.4%",color.dark_orange); plot S_236 = (S_100-S_0)/-1.3089+ S_100; S_236.setdefaultcolor(color.plum); S_236.setlineweight(1); def S_0236 = (if isNaN(S_236[1]) then S_236 else Double.NaN); addchartBubble(LabelsOn and S_236, S_0236,"23.6%",color.plum); plot S_382 = (S_100-S_0)/-1.618+ S_100; S_382.setdefaultcolor(color.cyan); S_382.setlineweight(1); def S_0382 =(if isNaN(S_382[1]) then S_382 else Double.NaN); addchartBubble(LabelsOn and S_382, S_0382,"38.2%",color.cyan); plot S_50 = (S_100-S_0)/-2 + S_100; S_50.setdefaultcolor(color.green); S_50.setlineweight(1); def S_050 =(if isNaN(S_50[1]) then S_50 else Double.NaN); addchartBubble(LabelsOn and S_50, S_050,"50%",color.green); plot S_618 = (S_100-S_0)/-2.618+ S_100; S_618.setdefaultcolor(color.yellow); S_618.setlineweight(1); def S_0618 =(if isNaN(S_618[1]) then S_618 else Double.NaN); addchartBubble(LabelsOn and S_618, S_0618,"61.8%",color.yellow); plot S_886 = (S_100-S_786)/-1.88+ S_100; S_886.setdefaultcolor(color.violet); S_886.setlineweight(1); def S_0886 =(if isNaN(S_886[1]) then S_886 else Double.NaN); addchartBubble(LabelsOn and S_886, S_0886,"88.6%",color.violet); plot SE_272 = (S_100-S_0)*-1.272 + S_100; SE_272.setdefaultcolor(color.yellow); SE_272.SetStyle(Curve.LONG_DASH); SE_272.setlineweight(2); def S_0272 =(if isNaN(SE_272[1]) then SE_272 else Double.NaN); addchartBubble(LabelsOn and SE_272, S_0272,"-27.2%",color.yellow); plot SE_50 = (S_100-S_0)*-1.5 + S_100; SE_50.setdefaultcolor(color.GREEN); SE_50.SetStyle(Curve.LONG_DASH); SE_50.setlineweight(1); def SE_050 =(if isNaN(SE_50[1]) then SE_50 else Double.NaN); addchartBubble(LabelsOn and SE_50, SE_050,"-50%",color.GREEN); # Alerts Alert(AlertsOn and DnArrow, " ", Alert.Bar, Sound.ding);
This indicator shows shorts and long positions, so it may be the closest thing you'll find. Not sure how to get it to what you manually drew. May have to keep searching or draw manually.@chewie76 : Thank you for this wonderful study. I'm looking for some automation of fib confluence levels. The idea is as below
1. Draw prior day high to low or low to high fib levels
2. Draw pre-market high to low or low to high fib levels
3. Draw extension projections ( high to low or low to high )
4. Keep only the co-efficients where the price almost meets ( confluence )
5. If price is near confluence area and 5/13 ema cross over to downside then short or vice versa.
Please see the idea in the follow graph along with some notes. Is this possible to do automated fashion or atleast draw the fib levels and i can clean up the non-confluence areas.
I'm not sure why it didn't show an arrow when it broke lower on both tickers. I have noticed that sometimes it doesn't show. It did hit the target though on SPY. I would keep testing different time settings as you see fit based on your trading style. I use extended hours on.hey @chewie76 this looks great! Do you notice any timeframes work better on this than others? Should it be used with extended hours off? I put it on my chart towards the end of the day today.. any idea why a down arrow didn't appear on SPY around 3:45 PM? Do I need to change something in my settings? It showed the zscore down arrow but no fib arrow. Just noticed the same on NVDA today, 1 day 5 minute chart.. there was no up or down arrow
I'm not sure why it didn't show an arrow when it broke lower on both tickers. I have noticed that sometimes it doesn't show. It did hit the target though on SPY. I would keep testing different time settings as you see fit based on your trading style. I use extended hours on.
I wait till it breaks. You can set an order in advance if you want.Thanks! Looking forward to trying it on Monday. Do you ever try to time the reversal and buy calls/puts when it gets near 100% and hope it doesn't break, or do you typically wait until it breaks 78.6%?
You may want to take a look into the Laguerre with targets indicator? Worth a look.I wait till it breaks. You can set an order in advance if you want.
I down load this indicator. How can I add to scan on TOS? Thank youYou can create a scan and have the arrow as true on any timeframe. I like the 4hr and 30 min chart. Then create a watchlist from the scan.
@chewie76All other Automatic Fib indicators look at the past, measure a previous high and previous low and give you levels. This indicator looks into the future and gives you possible high and low price levels. The Automatic Fibonacci Levels are two indicators, one for long positions and one for short positions. Up and Down arrows show entry signals when price crosses the 78.6% level. Entry signal alerts are included. This can be used for both swing trading and day trading based on the t
Shareable Link:
Long position:
http://tos.mx/AyuB4pQ
Short position:
http://tos.mx/1IJ4a4L
I've used both on the chart at the same time.@chewie76
I know the post is old but if you're still here I am curious what is the best way to determine whether it should be set up long or short or are you using both studies together and watching the trend line and dominate contacts? I ask because TOS has canned Fib and they automatically decide whether you should be short or long based on criteria they've input I don't know how they decide this but it seems to be more accurate than just deciding if I should be long or short. I know that most traders are not even aware that you flip the Fibonacci over depending on which way you're trading. other than a visual confirmation of trend and pivot points I'm curious if there is something I was missing here.
TOS has been incredibly accurate but they're limited in the adjustment of study. For starters, the bubbles sit right over the moving candles. Nice job btw this is the one I've been using now you obviously saw their issues. For now to simplify and save time I use the canned TOS auto fib to determine long or short strategy first and then I delete it and use these beautiful fibs, Thanks
What do you do when there are conflicting signals?I've used both on the chart at the same time.
I'd wait until the market picks a direction, or look at a different timeframe for clues.What do you do when there are conflicting signals?
Join useThinkScript to post your question to a community of 21,000+ developers and traders.
Start a new thread and receive assistance from our community.
useThinkScript is the #1 community of stock market investors using indicators and other tools to power their trading strategies. Traders of all skill levels use our forums to learn about scripting and indicators, help each other, and discover new ways to gain an edge in the markets.
We get it. Our forum can be intimidating, if not overwhelming. With thousands of topics, tens of thousands of posts, our community has created an incredibly deep knowledge base for stock traders. No one can ever exhaust every resource provided on our site.
If you are new, or just looking for guidance, here are some helpful links to get you started.