# Profit_target_area_b
#addlabel(1, "Profit_target_area_b", color.white);
# https://usethinkscript.com/threads/convert-tradingview-profit-target-area-for-thinkorswim.10975/
# https://www.tradingview.com/script/6xyzUC1G-Profit-target-area/
input bars = 3;
input exbars = 10;
def descent_cnt = if (high <= high[1]) then (descent_cnt[1])+1 else 0;
def ascent_cnt = if (low >= low[1]) then ascent_cnt[1]+1 else 0;
def descent = (descent_cnt >= bars);
def ascent = (ascent_cnt >= bars);
def st = if ascent then 1 else if descent then 0 else st[1];
def h = if (st[1] and !st) then highest(high,exbars) else h[1];
def l = if (!st[1] and st) then lowest(low,exbars) else l[1];
def f = h - l;
def h38 = l + f/(1-0.382);
def h62 = l + f/(1-0.618);
def l38 = h - f/(1-0.382);
def l62 = h - f/(1-0.618);
plot modeline = if st[0] then l else h;
modeline.setdefaultcolor(color.white);
plot ph = h;
ph.setdefaultcolor(color.green);
plot pl = l;
pl.setdefaultcolor(color.red);
plot p3 = h38;
plot p1 = h62;
plot p2 = l62;
plot p4 = l38;
p3.setdefaultcolor(color.gray);
p1.setdefaultcolor(color.gray);
p2.setdefaultcolor(color.gray);
p4.setdefaultcolor(color.gray);
addcloud(p1, p3, color.violet, color.violet);
addcloud(p3, ph, color.light_green, color.light_green);
addcloud(p2, p4, color.violet, color.violet);
addcloud(p4, pl, color.light_green, color.light_green);
addcloud(ph, modeline, color.green, color.green);
addcloud(pl, modeline, color.red, color.red);
#--------------------------
#study("Profit target area", overlay=true)
#bars =input(title="Reversial pattern length (bars)", type=integer, defval=3, minval=1)
#exbars = input(title="S/R detection (bars)", type=integer, defval=10, minval=1)
#descent_cnt = high <= nz(high[1])?nz(descent_cnt[1])+1:0
#ascent_cnt = low >= nz(low[1])?nz(ascent_cnt[1])+1:0
#descent = descent_cnt >= bars
#ascent = ascent_cnt >= bars
#st = ascent?true:(descent?false:nz(st[1]))
#h = st[1] and not st?highest(high,exbars):nz(h[1])
#l = not st[1] and st?lowest(low,exbars):nz(l[1])
#f = h - l
#h38 = l + f/(1-0.382)
#h62 = l + f/(1-0.618)
#l38 = h - f/(1-0.382)
#l62 = h - f/(1-0.618)
#modeline = plot(st[0]?l:h,color=white,title="invisible plot", style=cross)
#ph = plot(h,color=green, title="resistance")
#pl = plot(l,color=red, title="support")
#p3 = plot(h38, color=#80FF80, title="38% above")
#p1 = plot(h62, color=#C0FFC0, title="62% above")
#p2 = plot(l62, color=#FFC0FF, title="62% below")
#p4 = plot(l38, color=#FF80FF, title="38% below")
#fill(p1,p3,color=#80FF80, transp=80, title="62% above")
#fill(p3,ph,color=#00FF00, transp=80, title="38% above")
#fill(p2,p4,color=#FF80FF, transp=80, title="62% below")
#fill(p4,pl,color=#FF00FF, transp=80, title="38% below")
#fill(ph,modeline,color=green, transp=90, title="going up")
#fill(pl,modeline,color=red, transp=90, title="going down")
#