Kripto Fema ind/ This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at mozilla.org
// © Femayakup
//@version=5
indicator(title = "Kripto Fema ind", shorttitle="Kripto Fema ind", overlay=true, format=format.price, precision=2,max_lines_count = 500, max_labels_count = 500, max_bars_back=500)
showEma200 = input(true, title="EMA 200")
showPmax = input(true, title="Pmax")
showLinreg = input(true, title="Linreg")
showMavilim = input(true, title="Mavilim")
showNadaray = input(true, title="Nadaraya Watson")
ma(source, length, type) =>
switch type
"SMA" => ta.sma(source, length)
"EMA" => ta.ema(source, length)
"SMMA (RMA)" => ta.rma(source, length)
"WMA" => ta.wma(source, length)
"VWMA" => ta.vwma(source, length)
//Ema200
timeFrame = input.timeframe(defval = '240',title= 'EMA200 TimeFrame',group = 'EMA200 Settings')
len200 = input.int(200, minval=1, title="Length",group = 'EMA200 Settings')
src200 = input(close, title="Source",group = 'EMA200 Settings')
offset200 = input.int(title="Offset", defval=0, minval=-500, maxval=500,group = 'EMA200 Settings')
out200 = ta.ema(src200, len200)
higherTimeFrame = request.security(syminfo.tickerid,timeFrame,out200 ,barmerge.gaps_on,barmerge.lookahead_on)
ema200Plot = showEma200 ? higherTimeFrame : na
plot(ema200Plot, title="EMA200", offset=offset200)
//Linreq
group1 = "Linreg Settings"
lengthInput = input.int(100, title="Length", minval = 1, maxval = 5000,group = group1)
sourceInput = input.source(close, title="Source")
useUpperDevInput = input.bool(true, title="Upper Deviation", inline = "Upper Deviation", group = group1)
upperMultInput = input.float(2.0, title="", inline = "Upper Deviation", group = group1)
useLowerDevInput = input.bool(true, title="Lower Deviation", inline = "Lower Deviation", group = group1)
lowerMultInput = input.float(2.0, title="", inline = "Lower Deviation", group = group1)
group2 = "Linreg Display Settings"
showPearsonInput = input.bool(true, "Show Pearson's R", group = group2)
extendLeftInput = input.bool(false, "Extend Lines Left", group = group2)
extendRightInput = input.bool(true, "Extend Lines Right", group = group2)
extendStyle = switch
extendLeftInput and extendRightInput => extend.both
extendLeftInput => extend.left
extendRightInput => extend.right
=> extend.none
group3 = "Linreg Color Settings"
colorUpper = input.color(color.new(color.blue, 85), "Linreg Renk", inline = group3, group = group3)
colorLower = input.color(color.new(color.red, 85), "", inline = group3, group = group3)
calcSlope(source, length) =>
max_bars_back(source, 5000)
if not barstate.islast or length <= 1
else
sumX = 0.0
sumY = 0.0
sumXSqr = 0.0
sumXY = 0.0
for i = 0 to length - 1 by 1
val = source
per = i + 1.0
sumX += per
sumY += val
sumXSqr += per * per
sumXY += val * per
slope = (length * sumXY - sumX * sumY) / (length * sumXSqr - sumX * sumX)
average = sumY / length
intercept = average - slope * sumX / length + slope
= calcSlope(sourceInput, lengthInput)
startPrice = i + s * (lengthInput - 1)
endPrice = i
var line baseLine = na
if na(baseLine) and not na(startPrice) and showLinreg
baseLine := line.new(bar_index - lengthInput + 1, startPrice, bar_index, endPrice, width=1, extend=extendStyle, color=color.new(colorLower, 0))
else
line.set_xy1(baseLine, bar_index - lengthInput + 1, startPrice)
line.set_xy2(baseLine, bar_index, endPrice)
na
calcDev(source, length, slope, average, intercept) =>
upDev = 0.0
dnDev = 0.0
stdDevAcc = 0.0
dsxx = 0.0
dsyy = 0.0
dsxy = 0.0
periods = length - 1
daY = intercept + slope * periods / 2
val = intercept
for j = 0 to periods by 1
price = high - val
if price > upDev
upDev := price
price := val - low
if price > dnDev
dnDev := price
price := source
dxt = price - average
dyt = val - daY
price -= val
stdDevAcc += price * price
dsxx += dxt * dxt
dsyy += dyt * dyt
dsxy += dxt * dyt
val += slope
stdDev = math.sqrt(stdDevAcc / (periods == 0 ? 1 : periods))
pearsonR = dsxx == 0 or dsyy == 0 ? 0 : dsxy / math.sqrt(dsxx * dsyy)
= calcDev(sourceInput, lengthInput, s, a, i)
upperStartPrice = startPrice + (useUpperDevInput ? upperMultInput * stdDev : upDev)
upperEndPrice = endPrice + (useUpperDevInput ? upperMultInput * stdDev : upDev)
var line upper = na
lowerStartPrice = startPrice + (useLowerDevInput ? -lowerMultInput * stdDev : -dnDev)
lowerEndPrice = endPrice + (useLowerDevInput ? -lowerMultInput * stdDev : -dnDev)
var line lower = na
if na(upper) and not na(upperStartPrice) and showLinreg
upper := line.new(bar_index - lengthInput + 1, upperStartPrice, bar_index, upperEndPrice, width=1, extend=extendStyle, color=color.new(colorUpper, 0))
else
line.set_xy1(upper, bar_index - lengthInput + 1, upperStartPrice)
line.set_xy2(upper, bar_index, upperEndPrice)
na
if na(lower) and not na(lowerStartPrice) and showLinreg
lower := line.new(bar_index - lengthInput + 1, lowerStartPrice, bar_index, lowerEndPrice, width=1, extend=extendStyle, color=color.new(colorUpper, 0))
else
line.set_xy1(lower, bar_index - lengthInput + 1, lowerStartPrice)
line.set_xy2(lower, bar_index, lowerEndPrice)
na
showLinregPlotUpper = showLinreg ? upper : na
showLinregPlotLower = showLinreg ? lower : na
showLinregPlotBaseLine = showLinreg ? baseLine : na
linefill.new(showLinregPlotUpper, showLinregPlotBaseLine, color = colorUpper)
linefill.new(showLinregPlotBaseLine, showLinregPlotLower, color = colorLower)
// Pearson's R
var label r = na
label.delete(r )
if showPearsonInput and not na(pearsonR) and showLinreg
r := label.new(bar_index - lengthInput + 1, lowerStartPrice, str.tostring(pearsonR, "#.################"), color = color.new(color.white, 100), textcolor=color.new(colorUpper, 0), size=size.normal, style=label.style_label_up)
//Mavilim
group4 = "Mavilim Settings"
mavilimold = input(false, title="Show Previous Version of MavilimW?",group=group4)
fmal=input(3,"First Moving Average length",group = group4)
smal=input(5,"Second Moving Average length",group = group4)
tmal=fmal+smal
Fmal=smal+tmal
Ftmal=tmal+Fmal
Smal=Fmal+Ftmal
M1= ta.wma(close, fmal)
M2= ta.wma(M1, smal)
M3= ta.wma(M2, tmal)
M4= ta.wma(M3, Fmal)
M5= ta.wma(M4, Ftmal)
MAVW= ta.wma(M5, Smal)
col1= MAVW>MAVW
col3= MAVWpmaxsrc ? pmaxsrc-pmaxsrc : 0
vdd1=pmaxsrc
ma = 0.0
if mav == "SMA"
ma := ta.sma(pmaxsrc, length)
ma
if mav == "EMA"
ma := ta.ema(pmaxsrc, length)
ma
if mav == "WMA"
ma := ta.wma(pmaxsrc, length)
ma
if mav == "TMA"
ma := ta.sma(ta.sma(pmaxsrc, math.ceil(length / 2)), math.floor(length / 2) + 1)
ma
if mav == "VAR"
ma := VAR
ma
if mav == "WWMA"
ma := WWMA
ma
if mav == "ZLEMA"
ma := ZLEMA
ma
if mav == "TSF"
ma := TSF
ma
ma
MAvg=getMA(pmaxsrc, length)
longStop = Normalize ? MAvg - Multiplier*atr/close : MAvg - Multiplier*atr
longStopPrev = nz(longStop , longStop)
longStop := MAvg > longStopPrev ? math.max(longStop, longStopPrev) : longStop
shortStop = Normalize ? MAvg + Multiplier*atr/close : MAvg + Multiplier*atr
shortStopPrev = nz(shortStop , shortStop)
shortStop := MAvg < shortStopPrev ? math.min(shortStop, shortStopPrev) : shortStop
dir = 1
dir := nz(dir , dir)
dir := dir == -1 and MAvg > shortStopPrev ? 1 : dir == 1 and MAvg < longStopPrev ? -1 : dir
PMax = dir==1 ? longStop: shortStop
plot(showsupport ? MAvg : na, color=#fbff04, linewidth=2, title="EMA9")
pALL=plot(PMax, color=color.new(color.red, transp = 0), linewidth=2, title="PMax")
alertcondition(ta.cross(MAvg, PMax), title="Cross Alert", message="PMax - Moving Avg Crossing!")
alertcondition(ta.crossover(MAvg, PMax), title="Crossover Alarm", message="Moving Avg BUY SIGNAL!")
alertcondition(ta.crossunder(MAvg, PMax), title="Crossunder Alarm", message="Moving Avg SELL SIGNAL!")
alertcondition(ta.cross(pmaxsrc, PMax), title="Price Cross Alert", message="PMax - Price Crossing!")
alertcondition(ta.crossover(pmaxsrc, PMax), title="Price Crossover Alarm", message="PRICE OVER PMax - BUY SIGNAL!")
alertcondition(ta.crossunder(pmaxsrc, PMax), title="Price Crossunder Alarm", message="PRICE UNDER PMax - SELL SIGNAL!")
buySignalk = ta.crossover(MAvg, PMax)
plotshape(buySignalk and showsignalsk ? PMax*0.995 : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.new(color.green, transp = 0), textcolor=color.white)
sellSignallk = ta.crossunder(MAvg, PMax)
plotshape(sellSignallk and showsignalsk ? PMax*1.005 : na, title="Sell", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.new(color.red, transp = 0), textcolor=color.white)
// buySignalc = ta.crossover(pmaxsrc, PMax)
// plotshape(buySignalc and showsignalsc ? PMax*0.995 : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=#0F18BF, textcolor=color.white)
// sellSignallc = ta.crossunder(pmaxsrc, PMax)
// plotshape(sellSignallc and showsignalsc ? PMax*1.005 : na, title="Sell", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=#0F18BF, textcolor=color.white)
// mPlot = plot(ohlc4, title="", style=plot.style_circles, linewidth=0,display=display.none)
longFillColor = highlighting ? (MAvg>PMax ? color.new(color.green, transp = 90) : na) : na
shortFillColor = highlighting ? (MAvg math.exp(-(math.pow(x, 2)/(h * h * 2)))
//-----------------------------------------------------------------------------}
//Append lines
//-----------------------------------------------------------------------------{
n = bar_index
var ln = array.new_line(0)
if barstate.isfirst and repaint
for i = 0 to 499
array.push(ln,line.new(na,na,na,na))
//-----------------------------------------------------------------------------}
//End point method
//-----------------------------------------------------------------------------{
var coefs = array.new_float(0)
var den = 0.
if barstate.isfirst and not repaint
for i = 0 to 499
w = gauss(i, h)
coefs.push(w)
den := coefs.sum()
out = 0.
if not repaint
for i = 0 to 499
out += src * coefs.get(i)
out /= den
mae = ta.sma(math.abs(src - out), 499) * mult
upperN = out + mae
lowerN = out - mae
//-----------------------------------------------------------------------------}
//Compute and display NWE
//-----------------------------------------------------------------------------{
float y2 = na
float y1 = na
nwe = array.new(0)
if barstate.islast and repaint
sae = 0.
//Compute and set NWE point
for i = 0 to math.min(499,n - 1)
sum = 0.
sumw = 0.
//Compute weighted mean
for j = 0 to math.min(499,n - 1)
w = gauss(i - j, h)
sum += src * w
sumw += w
y2 := sum / sumw
sae += math.abs(src - y2)
nwe.push(y2)
sae := sae / math.min(499,n - 1) * mult
for i = 0 to math.min(499,n - 1)
if i%2 and showNadaray
line.new(n-i+1, y1 + sae, n-i, nwe.get(i) + sae, color = upCss)
line.new(n-i+1, y1 - sae, n-i, nwe.get(i) - sae, color = dnCss)
if src > nwe.get(i) + sae and src < nwe.get(i) + sae and showNadaray
label.new(n-i, src , '▼', color = color(na), style = label.style_label_down, textcolor = dnCss, textalign = text.align_center)
if src < nwe.get(i) - sae and src > nwe.get(i) - sae and showNadaray
label.new(n-i, src , '▲', color = color(na), style = label.style_label_up, textcolor = upCss, textalign = text.align_center)
y1 := nwe.get(i)
//-----------------------------------------------------------------------------}
//Dashboard
//-----------------------------------------------------------------------------{
var tb = table.new(position.top_right, 1, 1
, bgcolor = #1e222d
, border_color = #373a46
, border_width = 1
, frame_color = #373a46
, frame_width = 1)
if repaint
tb.cell(0, 0, 'Repainting Mode Enabled', text_color = color.white, text_size = size.small)
//-----------------------------------------------------------------------------}
//Plot
//-----------------------------------------------------------------------------}
// plot(repaint ? na : out + mae, 'Upper', upCss)
// plot(repaint ? na : out - mae, 'Lower', dnCss)
//Crossing Arrows
// plotshape(ta.crossunder(close, out - mae) ? low : na, "Crossunder", shape.labelup, location.absolute, color(na), 0 , text = '▲', textcolor = upCss, size = size.tiny)
// plotshape(ta.crossover(close, out + mae) ? high : na, "Crossover", shape.labeldown, location.absolute, color(na), 0 , text = '▼', textcolor = dnCss, size = size.tiny)
//-----------------------------------------------------------------------------}
//////////////////////////////////////////////////////////////////////////////////
enableD = input (true, "DIVERGANCE ON/OFF" , group="INDICATORS ON/OFF")
//DIVERGANCE
prd1 = input.int (defval=5 , title='PIVOT PERIOD' , minval=1, maxval=50 , group="DIVERGANCE")
source = input.string(defval='HIGH/LOW' , title='SOURCE FOR PIVOT POINTS' , options= , group="DIVERGANCE")
searchdiv = input.string(defval='REGULAR/HIDDEN', title='DIVERGANCE TYPE' , options= , group="DIVERGANCE")
showindis = input.string(defval='FULL' , title='SHOW INDICATORS NAME' , options= , group="DIVERGANCE")
showlimit = input.int(1 , title='MINIMUM NUMBER OF DIVERGANCES', minval=1, maxval=11 , group="DIVERGANCE")
maxpp = input.int (defval=20 , title='MAXIMUM PIVOT POINTS TO CHECK', minval=1, maxval=20 , group="DIVERGANCE")
maxbars = input.int (defval=200 , title='MAXIMUM BARS TO CHECK' , minval=30, maxval=200 , group="DIVERGANCE")
showlast = input (defval=false , title='SHOW ONLY LAST DIVERGANCE' , group="DIVERGANCE")
dontconfirm = input (defval=false , title="DON'T WAIT FOR CONFORMATION" , group="DIVERGANCE")
showlines = input (defval=false , title='SHOW DIVERGANCE LINES' , group="DIVERGANCE")
showpivot = input (defval=false , title='SHOW PIVOT POINTS' , group="DIVERGANCE")
calcmacd = input (defval=true , title='MACD' , group="DIVERGANCE")
calcmacda = input (defval=true , title='MACD HISTOGRAM' , group="DIVERGANCE")
calcrsi = input (defval=true , title='RSI' , group="DIVERGANCE")
calcstoc = input (defval=true , title='STOCHASTIC' , group="DIVERGANCE")
calccci = input (defval=true , title='CCI' , group="DIVERGANCE")
calcmom = input (defval=true , title='MOMENTUM' , group="DIVERGANCE")
calcobv = input (defval=true , title='OBV' , group="DIVERGANCE")
calcvwmacd = input (true , title='VWMACD' , group="DIVERGANCE")
calccmf = input (true , title='CHAIKIN MONEY FLOW' , group="DIVERGANCE")
calcmfi = input (true , title='MONEY FLOW INDEX' , group="DIVERGANCE")
calcext = input (false , title='CHECK EXTERNAL INDICATOR' , group="DIVERGANCE")
externalindi = input (defval=close , title='EXTERNAL INDICATOR' , group="DIVERGANCE")
pos_reg_div_col = input (defval=#ffffff , title='POSITIVE REGULAR DIVERGANCE' , group="DIVERGANCE")
neg_reg_div_col = input (defval=#00def6 , title='NEGATIVE REGULAR DIVERGANCE' , group="DIVERGANCE")
pos_hid_div_col = input (defval=#00ff0a , title='POSITIVE HIDDEN DIVERGANCE' , group="DIVERGANCE")
neg_hid_div_col = input (defval=#ff0015 , title='NEGATIVE HIDDEN DIVERGANCE' , group="DIVERGANCE")
reg_div_l_style_ = input.string(defval='SOLID' , title='REGULAR DIVERGANCE LINESTYLE' , options= , group="DIVERGANCE")
hid_div_l_style_ = input.string(defval='SOLID' , title='HIDDEN DIVERGANCE LINESTYLE' , options= , group="DIVERGANCE")
reg_div_l_width = input.int (defval=2 , title='REGULAR DIVERGANCE LINEWIDTH' , minval=1, maxval=5 , group="DIVERGANCE")
hid_div_l_width = input.int (defval=2 , title='HIDDEN DIVERGANCE LINEWIDTH' , minval=1, maxval=5 , group="DIVERGANCE")
showmas = input.bool (defval=false , title='SHOW MOVING AVERAGES (50 & 200)', inline='MA' , group="DIVERGANCE")
cma1col = input.color (defval=#ffffff , title='' , inline='MA' , group="DIVERGANCE")
cma2col = input.color (defval=#00def6 , title='' , inline='MA' , group="DIVERGANCE")
//PLOTS
plot(showmas ? ta.sma(close, 50) : na, color=showmas ? cma1col : na)
plot(showmas ? ta.sma(close, 200) : na, color=showmas ? cma2col : na)
var reg_div_l_style = reg_div_l_style_ == 'SOLID' ? line.style_solid : reg_div_l_style_ == 'DASHED' ? line.style_dashed : line.style_dotted
var hid_div_l_style = hid_div_l_style_ == 'SOLID' ? line.style_solid : hid_div_l_style_ == 'DASHED' ? line.style_dashed : line.style_dotted
rsi = ta.rsi(close, 14)
= ta.macd(close, 12, 26, 9)
moment = ta.mom(close, 10)
cci = ta.cci(close, 10)
Obv = ta.obv
stk = ta.sma(ta.stoch(close, high, low, 14), 3)
maFast = ta.vwma(close, 12)
maSlow = ta.vwma(close, 26)
vwmacd = maFast - maSlow
Cmfm = (close - low - (high - close)) / (high - low)
Cmfv = Cmfm * volume
cmf = ta.sma(Cmfv, 21) / ta.sma(volume, 21)
Mfi = ta.mfi(close, 14)
var indicators_name = array.new_string(11)
var div_colors = array.new_color(4)
if barstate.isfirst and enableD
array.set(indicators_name, 0, showindis == "DON'T SHOW" ? '' : '')
array.set(indicators_name, 1, showindis == "DON'T SHOW" ? '' : '')
array.set(indicators_name, 2, showindis == "DON'T SHOW" ? '' : '')
array.set(indicators_name, 3, showindis == "DON'T SHOW" ? '' : '')
array.set(indicators_name, 4, showindis == "DON'T SHOW" ? '' : '')
array.set(indicators_name, 5, showindis == "DON'T SHOW" ? '' : '')
array.set(indicators_name, 6, showindis == "DON'T SHOW" ? '' : '')
array.set(indicators_name, 7, showindis == "DON'T SHOW" ? '' : '')
array.set(indicators_name, 8, showindis == "DON'T SHOW" ? '' : '')
array.set(indicators_name, 9, showindis == "DON'T SHOW" ? '' : '')
array.set(indicators_name, 10, showindis == "DON'T SHOW" ? '' : '')
array.set(div_colors, 0, pos_reg_div_col)
array.set(div_colors, 1, neg_reg_div_col)
array.set(div_colors, 2, pos_hid_div_col)
array.set(div_colors, 3, neg_hid_div_col)
float ph1 = ta.pivothigh(source == 'CLOSE' ? close : high, prd1, prd1)
float pl1 = ta.pivotlow(source == 'CLOSE' ? close : low, prd1, prd1)
plotshape(ph1 and showpivot, text='H', style=shape.labeldown, color=color.new(color.white, 100), textcolor=#00def6, location=location.abovebar, offset=-prd1)
plotshape(pl1 and showpivot, text='L', style=shape.labelup, color=color.new(color.white, 100), textcolor=#ffffff, location=location.belowbar, offset=-prd1)
var int maxarraysize = 20
var ph_positions = array.new_int(maxarraysize, 0)
var pl_positions = array.new_int(maxarraysize, 0)
var ph_vals = array.new_float(maxarraysize, 0.)
var pl_vals = array.new_float(maxarraysize, 0.)
if ph1
array.unshift(ph_positions, bar_index)
array.unshift(ph_vals, ph1)
if array.size(ph_positions) > maxarraysize
array.pop(ph_positions)
array.pop(ph_vals)
if pl1
array.unshift(pl_positions, bar_index)
array.unshift(pl_vals, pl1)
if array.size(pl_positions) > maxarraysize
array.pop(pl_positions)
array.pop(pl_vals)
positive_regular_positive_hidden_divergence(src, cond) =>
divlen = 0
prsc = source == 'CLOSE' ? close : low
if dontconfirm or src > src or close > close
startpoint = dontconfirm ? 0 : 1
for x = 0 to maxpp - 1 by 1
len = bar_index - array.get(pl_positions, x) + prd1
if array.get(pl_positions, x) == 0 or len > maxbars
break
if len > 5 and (cond == 1 and src > src and prsc < nz(array.get(pl_vals, x)) or cond == 2 and src < src and prsc > nz(array.get(pl_vals, x)))
slope1 = (src - src ) / (len - startpoint)
virtual_line1 = src - slope1
slope2 = (close - close ) / (len - startpoint)
virtual_line2 = close - slope2
arrived = true
for y = 1 + startpoint to len - 1 by 1
if src < virtual_line1 or nz(close ) < virtual_line2
arrived := false
break
virtual_line1 -= slope1
virtual_line2 -= slope2
virtual_line2
if arrived
divlen := len
break
divlen
negative_regular_negative_hidden_divergence(src, cond) =>
divlen = 0
prsc = source == 'CLOSE' ? close : high
if dontconfirm or src < src or close < close
startpoint = dontconfirm ? 0 : 1
for x = 0 to maxpp - 1 by 1
len = bar_index - array.get(ph_positions, x) + prd1
if array.get(ph_positions, x) == 0 or len > maxbars
break
if len > 5 and (cond == 1 and src < src and prsc > nz(array.get(ph_vals, x)) or cond == 2 and src > src and prsc < nz(array.get(ph_vals, x)))
slope1 = (src - src ) / (len - startpoint)
virtual_line1 = src - slope1
slope2 = (close - nz(close )) / (len - startpoint)
virtual_line2 = close - slope2
arrived = true
for y = 1 + startpoint to len - 1 by 1
if src > virtual_line1 or nz(close ) > virtual_line2
arrived := false
break
virtual_line1 -= slope1
virtual_line2 -= slope2
virtual_line2
if arrived
divlen := len
break
divlen
//CALCULATIONS
calculate_divs(cond, indicator_1) =>
divs = array.new_int(4, 0)
array.set(divs, 0, cond and (searchdiv == 'REGULAR' or searchdiv == 'REGULAR/HIDDEN') ? positive_regular_positive_hidden_divergence(indicator_1, 1) : 0)
array.set(divs, 1, cond and (searchdiv == 'REGULAR' or searchdiv == 'REGULAR/HIDDEN') ? negative_regular_negative_hidden_divergence(indicator_1, 1) : 0)
array.set(divs, 2, cond and (searchdiv == 'HIDDEN' or searchdiv == 'REGULAR/HIDDEN') ? positive_regular_positive_hidden_divergence(indicator_1, 2) : 0)
array.set(divs, 3, cond and (searchdiv == 'HIDDEN' or searchdiv == 'REGULAR/HIDDEN') ? negative_regular_negative_hidden_divergence(indicator_1, 2) : 0)
divs
var all_divergences = array.new_int(44)
array_set_divs(div_pointer, index) =>
for x = 0 to 3 by 1
array.set(all_divergences, index * 4 + x, array.get(div_pointer, x))
array_set_divs(calculate_divs(calcmacd , macd) , 0)
array_set_divs(calculate_divs(calcmacda , deltamacd) , 1)
array_set_divs(calculate_divs(calcrsi , rsi) , 2)
array_set_divs(calculate_divs(calcstoc , stk) , 3)
array_set_divs(calculate_divs(calccci , cci) , 4)
array_set_divs(calculate_divs(calcmom , moment) , 5)
array_set_divs(calculate_divs(calcobv , Obv) , 6)
array_set_divs(calculate_divs(calcvwmacd, vwmacd) , 7)
array_set_divs(calculate_divs(calccmf , cmf) , 8)
array_set_divs(calculate_divs(calcmfi , Mfi) , 9)
array_set_divs(calculate_divs(calcext , externalindi), 10)
total_div = 0
for x = 0 to array.size(all_divergences) - 1 by 1
total_div += math.round(math.sign(array.get(all_divergences, x)))
total_div
if total_div < showlimit
array.fill(all_divergences, 0)
var pos_div_lines = array.new_line(0)
var neg_div_lines = array.new_line(0)
var pos_div_labels = array.new_label(0)
var neg_div_labels = array.new_label(0)
delete_old_pos_div_lines() =>
if array.size(pos_div_lines) > 0
for j = 0 to array.size(pos_div_lines) - 1 by 1
line.delete(array.get(pos_div_lines, j))
array.clear(pos_div_lines)
delete_old_neg_div_lines() =>
if array.size(neg_div_lines) > 0
for j = 0 to array.size(neg_div_lines) - 1 by 1
line.delete(array.get(neg_div_lines, j))
array.clear(neg_div_lines)
delete_old_pos_div_labels() =>
if array.size(pos_div_labels) > 0
for j = 0 to array.size(pos_div_labels) - 1 by 1
label.delete(array.get(pos_div_labels, j))
array.clear(pos_div_labels)
delete_old_neg_div_labels() =>
if array.size(neg_div_labels) > 0
for j = 0 to array.size(neg_div_labels) - 1 by 1
label.delete(array.get(neg_div_labels, j))
array.clear(neg_div_labels)
delete_last_pos_div_lines_label(n) =>
if n > 0 and array.size(pos_div_lines) >= n
asz = array.size(pos_div_lines)
for j = 1 to n by 1
line.delete(array.get(pos_div_lines, asz - j))
array.pop(pos_div_lines)
if array.size(pos_div_labels) > 0
label.delete(array.get(pos_div_labels, array.size(pos_div_labels) - 1))
array.pop(pos_div_labels)
delete_last_neg_div_lines_label(n) =>
if n > 0 and array.size(neg_div_lines) >= n
asz = array.size(neg_div_lines)
for j = 1 to n by 1
line.delete(array.get(neg_div_lines, asz - j))
array.pop(neg_div_lines)
if array.size(neg_div_labels) > 0
label.delete(array.get(neg_div_labels, array.size(neg_div_labels) - 1))
array.pop(neg_div_labels)
pos_reg_div_detected = false
neg_reg_div_detected = false
pos_hid_div_detected = false
neg_hid_div_detected = false
var last_pos_div_lines = 0
var last_neg_div_lines = 0
var remove_last_pos_divs = false
var remove_last_neg_divs = false
if pl1
remove_last_pos_divs := false
last_pos_div_lines := 0
last_pos_div_lines
if ph1
remove_last_neg_divs := false
last_neg_div_lines := 0
last_neg_div_lines
divergence_text_top = ''
divergence_text_bottom = ''
distances = array.new_int(0)
dnumdiv_top = 0
dnumdiv_bottom = 0
top_label_col = color.white
bottom_label_col = color.white
old_pos_divs_can_be_removed = true
old_neg_divs_can_be_removed = true
startpoint = dontconfirm ? 0 : 1
for x = 0 to 10 by 1
div_type = -1
for y = 0 to 3 by 1
if array.get(all_divergences, x * 4 + y) > 0
div_type := y
if y % 2 == 1
dnumdiv_top += 1
top_label_col := array.get(div_colors, y)
top_label_col
if y % 2 == 0
dnumdiv_bottom += 1
bottom_label_col := array.get(div_colors, y)
bottom_label_col
if not array.includes(distances, array.get(all_divergences, x * 4 + y))
array.push(distances, array.get(all_divergences, x * 4 + y))
new_line = showlines ? line.new(x1=bar_index - array.get(all_divergences, x * 4 + y), y1=source == 'CLOSE' ? close : y % 2 == 0 ? low : high , x2=bar_index - startpoint, y2=source == 'CLOSE' ? close : y % 2 == 0 ? low : high , color=array.get(div_colors, y), style=y < 2 ? reg_div_l_style : hid_div_l_style, width=y < 2 ? reg_div_l_width : hid_div_l_width) : na
if y % 2 == 0
if old_pos_divs_can_be_removed
old_pos_divs_can_be_removed := false
if not showlast and remove_last_pos_divs
delete_last_pos_div_lines_label(last_pos_div_lines)
last_pos_div_lines := 0
last_pos_div_lines
if showlast
delete_old_pos_div_lines()
array.push(pos_div_lines, new_line)
last_pos_div_lines += 1
remove_last_pos_divs := true
remove_last_pos_divs
if y % 2 == 1
if old_neg_divs_can_be_removed
old_neg_divs_can_be_removed := false
if not showlast and remove_last_neg_divs
delete_last_neg_div_lines_label(last_neg_div_lines)
last_neg_div_lines := 0
last_neg_div_lines
if showlast
delete_old_neg_div_lines()
array.push(neg_div_lines, new_line)
last_neg_div_lines += 1
remove_last_neg_divs := true
remove_last_neg_divs
if y == 0
pos_reg_div_detected := true
pos_reg_div_detected
if y == 1
neg_reg_div_detected := true
neg_reg_div_detected
if y == 2
pos_hid_div_detected := true
pos_hid_div_detected
if y == 3
neg_hid_div_detected := true
neg_hid_div_detected
if div_type >= 0
divergence_text_top += (div_type % 2 == 1 ? showindis != "DON'T SHOW" ? array.get(indicators_name, x) + ' ' : '' : '')
divergence_text_bottom += (div_type % 2 == 0 ? showindis != "DON'T SHOW" ? array.get(indicators_name, x) + ' ' : '' : '')
divergence_text_bottom
if showindis != "DON'T SHOW"
if dnumdiv_top > 0
divergence_text_top += str.tostring(dnumdiv_top)
divergence_text_top
if dnumdiv_bottom > 0
divergence_text_bottom += str.tostring(dnumdiv_bottom)
divergence_text_bottom
if divergence_text_top != ''
if showlast
delete_old_neg_div_labels()
array.push(neg_div_labels, label.new(x=bar_index, y=math.max(high, high ), color=top_label_col, style=label.style_diamond, size = size.auto))
if divergence_text_bottom != ''
if showlast
delete_old_pos_div_labels()
array.push(pos_div_labels, label.new(x=bar_index, y=math.min(low, low ), color=bottom_label_col, style=label.style_diamond, size = size.auto))
// POSITION AND SIZE
PosTable = input.string(defval="Bottom Right", title="Position", options= , group="Table Location & Size", inline="1")
SizTable = input.string(defval="Auto", title="Size", options= , group="Table Location & Size", inline="1")
Pos1Table = PosTable == "Top Right" ? position.top_right : PosTable == "Middle Right" ? position.middle_right : PosTable == "Bottom Right" ? position.bottom_right : PosTable == "Top Center" ? position.top_center : PosTable == "Middle Center" ? position.middle_center : PosTable == "Bottom Center" ? position.bottom_center : PosTable == "Top Left" ? position.top_left : PosTable == "Middle Left" ? position.middle_left : position.bottom_left
Siz1Table = SizTable == "Auto" ? size.auto : SizTable == "Huge" ? size.huge : SizTable == "Large" ? size.large : SizTable == "Normal" ? size.normal : SizTable == "Small" ? size.small : size.tiny
tbl = table.new(Pos1Table, 21, 16, border_width = 1, border_color = color.gray, frame_color = color.gray, frame_width = 1)
// Kullanıcı tarafından belirlenecek yeşil ve kırmızı zaman dilimi sayısı
greenThreshold = input.int(5, minval=1, maxval=10, title="Yeşil Zaman Dilimi Sayısı", group="Alarm Ayarları")
redThreshold = input.int(5, minval=1, maxval=10, title="Kırmızı Zaman Dilimi Sayısı", group="Alarm Ayarları")
// TIMEFRAMES OPTIONS
box01 = input.bool(true, "TF ", inline = "01", group="Select Timeframe")
tf01 = input.timeframe("1", "", inline = "01", group="Select Timeframe")
box02 = input.bool(false, "TF ", inline = "02", group="Select Timeframe")
tf02 = input.timeframe("3", "", inline = "02", group="Select Timeframe")
box03 = input.bool(true, "TF ", inline = "03", group="Select Timeframe")
tf03 = input.timeframe("5", "", inline = "03", group="Select Timeframe")
box04 = input.bool(true, "TF ", inline = "04", group="Select Timeframe")
tf04 = input.timeframe("15", "", inline = "04", group="Select Timeframe")
box05 = input.bool(false, "TF ", inline = "05", group="Select Timeframe")
tf05 = input.timeframe("30", "", inline = "05", group="Select Timeframe")
box06 = input.bool(true, "TF ", inline = "01", group="Select Timeframe")
tf06 = input.timeframe("60", "", inline = "01", group="Select Timeframe")
box07 = input.bool(false, "TF ", inline = "02", group="Select Timeframe")
tf07 = input.timeframe("120", "", inline = "02", group="Select Timeframe")
box08 = input.bool(false, "TF ", inline = "03", group="Select Timeframe")
tf08 = input.timeframe("180", "", inline = "03", group="Select Timeframe")
box09 = input.bool(true, "TF ", inline = "04", group="Select Timeframe")
tf09 = input.timeframe("240", "", inline = "04", group="Select Timeframe")
box10 = input.bool(false, "TF ", inline = "05", group="Select Timeframe")
tf10 = input.timeframe("D", "", inline = "05", group="Select Timeframe")
// indicator('Tillson FEMA', overlay=true)
length1 = input(1, 'FEMA Length')
a1 = input(0.7, 'Volume Factor')
e1 = ta.ema((high + low + 2 * close) / 4, length1)
e2 = ta.ema(e1, length1)
e3 = ta.ema(e2, length1)
e4 = ta.ema(e3, length1)
e5 = ta.ema(e4, length1)
e6 = ta.ema(e5, length1)
c1 = -a1 * a1 * a1
c2 = 3 * a1 * a1 + 3 * a1 * a1 * a1
c3 = -6 * a1 * a1 - 3 * a1 - 3 * a1 * a1 * a1
c4 = 1 + 3 * a1 + a1 * a1 * a1 + 3 * a1 * a1
FEMA = c1 * e6 + c2 * e5 + c3 * e4 + c4 * e3
tablocol1 = FEMA > FEMA
tablocol3 = FEMA < FEMA
color_1 = col1 ? color.rgb(149, 219, 35): col3 ? color.rgb(238, 11, 11) : color.yellow
plot(FEMA, color=color_1, linewidth=3, title='FEMA')
tilson1 = FEMA
tilson1a =FEMA
// DEFINITION OF VALUES
symbol = ticker.modify(syminfo.tickerid, syminfo.session)
tfArr = array.new(na)
tilson1Arr = array.new(na)
tilson1aArr = array.new(na)
// DEFINITIONS OF RSI & CCI FUNCTIONS APPENDED IN THE TIMEFRAME OPTIONS
cciNcciFun(tf, flg) =>
= request.security(symbol, tf, )
if flg and (barstate.isrealtime ? true : timeframe.in_seconds(timeframe.period) <= timeframe.in_seconds(tf))
array.push(tfArr, na(tf) ? timeframe.period : tf)
array.push(tilson1Arr, tilson_)
array.push(tilson1aArr, tilson1a_)
cciNcciFun(tf01, box01), cciNcciFun(tf02, box02), cciNcciFun(tf03, box03), cciNcciFun(tf04, box04),
cciNcciFun(tf05, box05), cciNcciFun(tf06, box06), cciNcciFun(tf07, box07), cciNcciFun(tf08, box08),
cciNcciFun(tf09, box09), cciNcciFun(tf10, box10)
// TABLE AND CELLS CONFIG
// Post Timeframe in format
tfTxt(x)=>
out = x
if not str.contains(x, "S") and not str.contains(x, "M") and
not str.contains(x, "W") and not str.contains(x, "D")
if str.tonumber(x)%60 == 0
out := str.tostring(str.tonumber(x)/60)+"H"
else
out := x + "m"
out
if barstate.islast
table.clear(tbl, 0, 0, 20, 15)
// TITLES
table.cell(tbl, 0, 0, "⏱", text_color=color.white, text_size=Siz1Table, bgcolor=#000000)
table.cell(tbl, 1, 0, "FEMA("+str.tostring(length1)+")", text_color=#FFFFFF, text_size=Siz1Table, bgcolor=#000000)
j = 1
greenCounter = 0 // Yeşil zaman dilimlerini saymak için bir sayaç
redCounter = 0
if array.size(tilson1Arr) > 0
for i = 0 to array.size(tilson1Arr) - 1
if not na(array.get(tilson1Arr, i))
//config values in the cells
TF_VALUE = array.get(tfArr,i)
tilson1VALUE = array.get(tilson1Arr, i)
tilson1aVALUE = array.get(tilson1aArr, i)
SIGNAL1 = tilson1VALUE >= tilson1aVALUE ? "▲" : tilson1VALUE <= tilson1aVALUE ? "▼" : na
// Yeşil oklar ve arka planı ayarla
greenArrowColor1 = SIGNAL1 == "▲" ? color.rgb(0, 255, 0) : color.rgb(255, 0, 0)
greenBgColor1 = SIGNAL1 == "▲" ? color.rgb(25, 70, 22) : color.rgb(93, 22, 22)
allGreen = tilson1VALUE >= tilson1aVALUE
allRed = tilson1VALUE <= tilson1aVALUE
// Determine background color for time text
timeBgColor = allGreen ? #194616 : (allRed ? #5D1616 : #000000)
txtColor = allGreen ? #00FF00 : (allRed ? #FF4500 : color.white)
if allGreen
greenCounter := greenCounter + 1
redCounter := 0
else if allRed
redCounter := redCounter + 1
greenCounter := 0
else
redCounter := 0
greenCounter := 0
// Dinamik pair değerini oluşturma
pair = "USDT_" + syminfo.basecurrency + "USDT"
// Bot ID için kullanıcı girişi
bot_id = input.int(12387976, title="Bot ID", minval=0,group ='3Comas Message', inline = '1') // Varsayılan değeri 12387976 olan bir tamsayı girişi alır
// E-posta tokenı için kullanıcı girişi
email_token = input("cd4111d4-549a-4759-a082-e8f45c91fa47", title="Email Token",group ='3Comas Message', inline = '1')
// USER INPUT FOR DELAY
delay_seconds = input.int(0, title="Delay Seconds", minval=0, maxval=86400,group ='3Comas Message', inline = '1')
// Dinamik mesajın oluşturulması
message = '{ "message_type": "bot", "bot_id": ' + str.tostring(bot_id) + ', "email_token": "' + email_token + '", "delay_seconds": ' + str.tostring(delay_seconds) + ', "pair": "' + pair + '"}'
// Kullanıcının belirlediği yeşil veya kırmızı zaman dilimi sayısına ulaşıldığında alarmı tetikle
if greenCounter >= greenThreshold
alert(message, alert.freq_once_per_bar_close)
// if redCounter >= redThreshold
// alert(message, alert.freq_once_per_bar_close)
// Kullanıcının belirlediği yeşil veya kırmızı zaman dilimi sayısına ulaşıldığında alarmı tetikle
// if greenCounter >= greenThreshold
// alert("Yeşil zaman dilimi sayısı " + str.tostring(greenThreshold) + " adede ulaştı", alert.freq_once_per_bar_close)
// if redCounter >= redThreshold
// alert("Kırmızı zaman dilimi sayısı " + str.tostring(redThreshold) + " adede ulaştı", alert.freq_once_per_bar_close)
table.cell(tbl, 0, j, tfTxt(TF_VALUE), text_color=txtColor, text_halign=text.align_left, text_size=Siz1Table, bgcolor=timeBgColor)
table.cell(tbl, 1, j, str.tostring(tilson1VALUE, "#.#######")+SIGNAL1, text_color=greenArrowColor1, text_halign=text.align_right, text_size=Siz1Table, bgcolor=greenBgColor1)
j += 1
prd = input.int(defval=10, title='Pivot Period', minval=4, maxval=30, group='Setup')
ppsrc = input.string(defval='High/Low', title='Source', options= , group='Setup')
maxnumpp = input.int(defval=20, title=' Maximum Number of Pivot', minval=5, maxval=100, group='Setup')
ChannelW = input.int(defval=10, title='Maximum Channel Width %', minval=1, group='Setup')
maxnumsr = input.int(defval=5, title=' Maximum Number of S/R', minval=1, maxval=10, group='Setup')
min_strength = input.int(defval=2, title=' Minimum Strength', minval=1, maxval=10, group='Setup')
labelloc = input.int(defval=20, title='Label Location', group='Colors', tooltip='Positive numbers reference future bars, negative numbers reference histical bars')
linestyle = input.string(defval='Dashed', title='Line Style', options= , group='Colors')
linewidth = input.int(defval=2, title='Line Width', minval=1, maxval=4, group='Colors')
resistancecolor = input.color(defval=color.red, title='Resistance Color', group='Colors')
supportcolor = input.color(defval=color.lime, title='Support Color', group='Colors')
showpp = input(false, title='Show Point Points')
float src1 = ppsrc == 'High/Low' ? high : math.max(close, open)
float src2 = ppsrc == 'High/Low' ? low : math.min(close, open)
float ph = ta.pivothigh(src1, prd, prd)
float pl = ta.pivotlow(src2, prd, prd)
plotshape(ph and showpp, text='H', style=shape.labeldown, color=na, textcolor=color.new(color.red, 0), location=location.abovebar, offset=-prd)
plotshape(pl and showpp, text='L', style=shape.labelup, color=na, textcolor=color.new(color.lime, 0), location=location.belowbar, offset=-prd)
Lstyle = linestyle == 'Dashed' ? line.style_dashed : linestyle == 'Solid' ? line.style_solid : line.style_dotted
//calculate maximum S/R channel zone width
prdhighest = ta.highest(300)
prdlowest = ta.lowest(300)
cwidth = (prdhighest - prdlowest) * ChannelW / 100
var pivotvals = array.new_float(0)
if ph or pl
array.unshift(pivotvals, ph ? ph : pl)
if array.size(pivotvals) > maxnumpp // limit the array size
array.pop(pivotvals)
get_sr_vals(ind) =>
float lo = array.get(pivotvals, ind)
float hi = lo
int numpp = 0
for y = 0 to array.size(pivotvals) - 1 by 1
float cpp = array.get(pivotvals, y)
float wdth = cpp <= lo ? hi - cpp : cpp - lo
if wdth <= cwidth // fits the max channel width?
if cpp <= hi
lo := math.min(lo, cpp)
else
hi := math.max(hi, cpp)
numpp += 1
numpp
var sr_up_level = array.new_float(0)
var sr_dn_level = array.new_float(0)
sr_strength = array.new_float(0)
find_loc(strength) =>
ret = array.size(sr_strength)
for i = ret > 0 ? array.size(sr_strength) - 1 : na to 0 by 1
if strength <= array.get(sr_strength, i)
break
ret := i
ret
ret
check_sr(hi, lo, strength) =>
ret = true
for i = 0 to array.size(sr_up_level) > 0 ? array.size(sr_up_level) - 1 : na by 1
//included?
if array.get(sr_up_level, i) >= lo and array.get(sr_up_level, i) <= hi or array.get(sr_dn_level, i) >= lo and array.get(sr_dn_level, i) <= hi
if strength >= array.get(sr_strength, i)
array.remove(sr_strength, i)
array.remove(sr_up_level, i)
array.remove(sr_dn_level, i)
ret
else
ret := false
ret
break
ret
var sr_lines = array.new_line(11, na)
var sr_labels = array.new_label(11, na)
for x = 1 to 10 by 1
rate = 100 * (label.get_y(array.get(sr_labels, x)) - close) / close
label.set_text(array.get(sr_labels, x), text=str.tostring(label.get_y(array.get(sr_labels, x))) + '(' + str.tostring(rate, '#.##') + '%)')
label.set_x(array.get(sr_labels, x), x=bar_index + labelloc)
label.set_color(array.get(sr_labels, x), color=label.get_y(array.get(sr_labels, x)) >= close ? color.red : color.lime)
label.set_textcolor(array.get(sr_labels, x), textcolor=label.get_y(array.get(sr_labels, x)) >= close ? color.white : color.black)
label.set_style(array.get(sr_labels, x), style=label.get_y(array.get(sr_labels, x)) >= close ? label.style_label_down : label.style_label_up)
line.set_color(array.get(sr_lines, x), color=line.get_y1(array.get(sr_lines, x)) >= close ? resistancecolor : supportcolor)
if ph or pl
//because of new calculation, remove old S/R levels
array.clear(sr_up_level)
array.clear(sr_dn_level)
array.clear(sr_strength)
//find S/R zones
for x = 0 to array.size(pivotvals) - 1 by 1
= get_sr_vals(x)
if check_sr(hi, lo, strength)
loc = find_loc(strength)
// if strength is in first maxnumsr sr then insert it to the arrays
if loc < maxnumsr and strength >= min_strength
array.insert(sr_strength, loc, strength)
array.insert(sr_up_level, loc, hi)
array.insert(sr_dn_level, loc, lo)
// keep size of the arrays = 5
if array.size(sr_strength) > maxnumsr
array.pop(sr_strength)
array.pop(sr_up_level)
array.pop(sr_dn_level)
for x = 1 to 10 by 1
line.delete(array.get(sr_lines, x))
label.delete(array.get(sr_labels, x))
for x = 0 to array.size(sr_up_level) > 0 ? array.size(sr_up_level) - 1 : na by 1
float mid = math.round_to_mintick((array.get(sr_up_level, x) + array.get(sr_dn_level, x)) / 2)
rate = 100 * (mid - close) / close
array.set(sr_labels, x + 1, label.new(x=bar_index + labelloc, y=mid, text=str.tostring(mid) + '(' + str.tostring(rate, '#.##') + '%)', color=mid >= close ? color.red : color.lime, textcolor=mid >= close ? color.white : color.black, style=mid >= close ? label.style_label_down : label.style_label_up))
array.set(sr_lines, x + 1, line.new(x1=bar_index, y1=mid, x2=bar_index - 1, y2=mid, extend=extend.both, color=mid >= close ? resistancecolor : supportcolor, style=Lstyle, width=linewidth))
f_crossed_over() =>
ret = false
for x = 0 to array.size(sr_up_level) > 0 ? array.size(sr_up_level) - 1 : na by 1
float mid = math.round_to_mintick((array.get(sr_up_level, x) + array.get(sr_dn_level, x)) / 2)
if close <= mid and close > mid
ret := true
ret
ret
f_crossed_under() =>
ret = false
for x = 0 to array.size(sr_up_level) > 0 ? array.size(sr_up_level) - 1 : na by 1
float mid = math.round_to_mintick((array.get(sr_up_level, x) + array.get(sr_dn_level, x)) / 2)
if close >= mid and close < mid
ret := true
ret
ret
alertcondition(f_crossed_over(), title='Resistance Broken', message='Resistance Broken')
alertcondition(f_crossed_under(), title='Support Broken', message='Support Broken')
Wskaźniki rozpiętości rynku
RSI Divergence (Regular + Hidden, @darshakssc)This indicator detects regular and hidden divergence between price and RSI, using confirmed swing highs and swing lows (pivots) on both series. It is designed as a visual analysis tool, not as a signal generator or trading system.
The goal is to highlight moments where price action and RSI momentum move in different directions, which some traders study as potential early warnings of trend exhaustion or trend continuation. All divergence signals are only drawn after a pivot is fully confirmed, helping to avoid repainting.
The script supports four divergence types:
Regular Bullish Divergence
Regular Bearish Divergence
Hidden Bullish Divergence
Hidden Bearish Divergence
Each type is drawn with a different color and labeled clearly on the chart.
Core Concepts Used
1. RSI (Relative Strength Index)
The script uses standard RSI, calculated on a configurable input source (default: close) and length (default: 14).
RSI is treated purely as a momentum oscillator – the script does not enforce oversold/overbought interpretations.
2. Pivots / Swings
The indicator defines swing highs and swing lows using ta.pivothigh() and ta.pivotlow():
A swing high forms when a bar’s high is higher than a specified number of bars to the left and to the right.
A swing low forms when a bar’s low is lower than a specified number of bars to the left and to the right.
The same pivot logic is applied to both price and RSI.
Because pivots require “right side” bars to form, the indicator:
Waits for the full pivot to be confirmed (no forward-looking referencing beyond the rightBars parameter).
Only then considers that pivot for divergence detection.
This helps prevent repainting of divergence signals.
How Divergence Is Detected
The script always uses the two most recent confirmed pivots for both price and RSI. It tracks:
Last two swing lows in price and RSI
Last two swing highs in price and RSI
Their pivot bar indexes and values
A basic minimum distance filter between the pivots (in bars) is also applied to reduce noise.
1. Regular Bullish Divergence
Condition:
Price makes a lower low (LL) between the last two lows
RSI makes a higher low (HL) over the same two pivot lows
The RSI difference between the two lows is greater than or equal to the user-defined minimum (Min RSI Difference)
The two low pivots are separated by at least Min Bars Between Swings
Interpretation:
Some traders view this as bearish momentum weakening while price prints a new low. The script only marks this structure; it does not assume any outcome.
On the chart:
Drawn between the previous and current price swing lows
Labeled: “Regular Bullish”
Color: Green (by default in the script)
2. Regular Bearish Divergence
Condition:
Price makes a higher high (HH) between the last two highs
RSI makes a lower high (LH) over the same two pivot highs
RSI difference exceeds Min RSI Difference
Pivots are separated by at least Min Bars Between Swings
Interpretation:
Some traders see this as bullish momentum weakening while price prints a new high. Again, the indicator simply highlights this divergence.
On the chart:
Drawn between the previous and current price swing highs
Labeled: “Regular Bearish”
Color: Red
3. Hidden Bullish Divergence
Condition:
Price makes a higher low (HL) between the last two lows
RSI makes a lower low (LL) over the same two lows
RSI difference exceeds Min RSI Difference
Pivots meet the minimum distance requirement
Interpretation:
Some traders interpret hidden bullish divergence as a potential trend continuation signal within an existing uptrend. The indicator does not classify trends; it just tags the pattern when price and RSI pivots meet the conditions.
On the chart:
Drawn between the previous and current price swing lows
Labeled: “Hidden Bullish”
Color: Teal
4. Hidden Bearish Divergence
Condition:
Price makes a lower high (LH) between the last two highs
RSI makes a higher high (HH) over those highs
RSI difference exceeds Min RSI Difference
Pivots meet the minimum distance filter
Interpretation:
Some traders associate hidden bearish divergence with potential downtrend continuation, but again, this script only visualizes the structure.
On the chart:
Drawn between the previous and current price swing highs
Labeled: “Hidden Bearish”
Color: Orange
Inputs and Settings
1. RSI Settings
RSI Source – Price source for RSI (default: close).
RSI Length – Period for RSI calculation (default: 14).
These control the responsiveness of the RSI. Shorter lengths may show more frequent divergence; longer lengths smooth the signal.
2. Swing / Pivot Settings
Left Swing Bars (leftBars)
Right Swing Bars (rightBars)
These define how strict the pivot detection is:
Higher values → fewer, more significant swings
Lower values → more swings, more signals
Because the script uses ta.pivothigh / ta.pivotlow, a pivot is only confirmed once rightBars candles have closed after the candidate bar. This is an intentional design to reduce repainting and make pivots stable.
3. Divergence Filters
Min Bars Between Swings (Min Bars Between Swings)
Requires a minimum bar distance between the two pivots used to form divergence.
Helps avoid clutter from pivots that are too close to each other.
Min RSI Difference (Min RSI Difference)
Requires a minimum absolute difference between RSI values at the two pivots.
Filters out very minor changes in RSI that may not be meaningful.
4. Visibility Toggles
Show Regular Divergence
Show Hidden Divergence
You can choose to display:
Both regular and hidden divergence, or
Only regular divergence, or
Only hidden divergence
This is useful if you prefer to focus on one type of structure.
5. Alerts
Enable Alerts
When enabled, the script exposes four alert conditions:
Regular Bullish Divergence Confirmed
Regular Bearish Divergence Confirmed
Hidden Bullish Divergence Confirmed
Hidden Bearish Divergence Confirmed
Each alert fires after the corresponding divergence has been fully confirmed based on the pivot and bar confirmation logic. The script does not issue rapid or intrabar signals; it uses confirmed historical conditions.
You can set these in the TradingView Alerts dialog by choosing this indicator and selecting the desired condition.
Visual Elements
On the main price chart, the indicator:
Draws a line between the two price pivots involved in the divergence.
Adds a small label at the latest pivot, describing the divergence type.
Colors are used to differentiate divergence categories (Green/Red/Teal/Orange).
This makes it easy to visually scan the chart for zones where price and RSI have diverged.
What to Look For (Analytical Use)
This indicator is intended as a visual helper, especially when:
You want to quickly see where price made new highs or lows while RSI did not confirm them in the same way.
You are studying momentum exhaustion, shifts, or continuation using RSI divergence as one of many tools.
You want to compare divergence occurrences across different timeframes or instruments.
Important:
The indicator does not tell you when to enter or exit trades.
It does not rank or validate the “quality” of a divergence.
Divergence can persist or fail; it is not a guarantee of reversal or continuation.
Many traders combine divergence analysis with:
Higher timeframe context
Trend filters (moving averages, structure)
Support/resistance zones or liquidity areas
Volume, structure breaks, or other confirmations
Disclaimer
This script is provided for educational and analytical purposes only.
It does not constitute financial advice, trading advice, or investment recommendations.
No part of this indicator is intended to suggest, encourage, or guarantee any specific trading outcome.
Users are solely responsible for their own decisions and risk management.
The Operator Schedule (Daily/Repeating) - Time-Based AlertsKKRESULT PLAYBOOK SUCCES FORMULA
DAILY ROUTINE — THE OPERATOR SCHEDULE
• 5 AM wake-up. (5-6hrs)
• Pre-workout meal.
• Boxing or conditioning.
• Fuel + hydration.
• Morning silence.
• Chart prep.
• Trade 9:30 AM – 3 PM.
• Journal.
• Shutdown routine to reset. A consistent routine builds a consistent trader.
• Edit YouTube Video
• 12 PM Fuel + hydration
Multi-Timeframe Stochastic (4x) z Podświetlaniem - PawelA script that provides information when most of the stocks are in the overbought or oversold zone.
Liquidity Sweep & Reversal MapLiquidity Sweep & Reversal Map (LSRM) is a visual tool designed to help traders study how price interacts with key liquidity areas such as daily highs, daily lows, previous-day levels, and potential sweep zones. Its purpose is to map structure, highlight volatility around major reference points, and visualize how price behaves after taking liquidity.
This indicator does not attempt to predict market direction. It simply identifies conditions where price has interacted with a known reference level and marks that interaction for user analysis.
🔍 What This Indicator Shows
1. Key Liquidity Reference Levels
The script automatically draws and updates the following levels:
TH — Today’s High
TL — Today’s Low
PDH — Previous Day High
PDL — Previous Day Low
These levels are widely monitored by many traders and can be helpful when studying liquidity behavior and intraday volatility.
2. Liquidity Sweeps
A liquidity sweep occurs when:
Price briefly moves beyond a major high or low
And then closes back within the prior range
The indicator marks detected sweep interactions with:
BS (Bullish Sweep) when liquidity is taken below a low
SS (Bearish Sweep) when liquidity is taken above a high
A sweep only appears after the bar has closed, helping users analyze completed price structure.
3. Optional Sweep Zones
When enabled, the tool draws a shaded zone between:
The swept wick
The reference level
This can help highlight areas where liquidity was taken.
4. Volume & Candle Filters
The indicator includes optional filters such as:
Relative volume spikes
Strong candle body requirement
These filters are provided only to refine the visual highlight of sweeps; they do not constitute trading signals.
🎛 Customization
Users can configure:
Instrument presets
Sweep buffers
Volume sensitivity
Line visibility and thickness
Label display
Zone visibility
All settings are optional and intended for chart annotation only.
⚠️ Important Notes
This tool is not a trading system, signal generator, or strategy.
It does not provide buy/sell advice or predict future price movement.
All markings are visual aids for chart study and structural analysis only.
Users should rely on their own judgment and independent analysis when making trading decisions.
Vince/Williams Market Internals SuiteThis indicator is a powerhouse combination of three distinct market internal strategies developed by Ralph Vince and Larry Williams. Instead of using three separate scripts to monitor market health, this tool consolidates them into a single dashboard that analyzes NYSE "New Lows" data to detect structural rot, capitulation, and crash risks.
The first component is the Volatility Vulnerability monitor, which identifies when the market structure is decaying. It looks for an extended period where the number of New Lows fails to drop to negligible levels. If you see an Orange Circle while price is above the 50 SMA, it is a major warning that the uptrend is hollow and prone to a crash. Conversely, a Blue Circle below the 50 SMA suggests the weakness is already priced in, offering a contrarian entry signal.
The second component is the Selling Climax signal. This identifies moments of pure terror where New Lows hit extreme levels (default 20%). The script marks these panic days with Orange Diamonds, but the real value is the Green Diamond that appears immediately when the panic subsides, often signaling a sharp V-bottom.
Finally, the Bloodbath Rule runs in the background as a defensive filter. When the background turns red (marked by a Red Cross), it means New Lows have breached the "danger" threshold (default 4%). During these periods, internal selling pressure is accelerating, and you should strictly avoid entering new long positions until the background clears.
Note: This script relies on broad market data (ADVN/DECN/LOWN) and works best on Daily timeframes.
Simple VP Shape DetectorSimple VP Shape Detector is a lightweight Pine Script tool designed to help traders quickly identify the four major Volume Profile shapes commonly used in orderflow and auction-market theory:
D-Shape (Balanced Profile)
P-Shape (Short-Covering / Buyer-Dominant)
B-Shape (Long-Liquidation / Seller-Dominant)
Thin Profile (Trend Profile)
This indicator uses candle statistics (range, body size, volume distribution approximation, and directional movement) to estimate the underlying shape of the volume profile when the full Volume Profile tool is not available.
✔️ What this indicator does
Analyzes recent bars to estimate volume concentration vs. price movement
Flags possible VP shapes using simple logic
Displays labels above/below candles showing:
“D” → Balanced
“P” → Buyer-heavy
“B” → Seller-heavy
“T” → Trending / Thin profile
Helps traders quickly identify auction conditions
✔️ Why this is useful
Volume Profile tools require premium data or heavy visual processing.
This script provides a simple, fast, CPU-light alternative that still captures the essential behavior of profile shapes.
✔️ How shapes are detected
D-Shape: small directional movement + larger body clustering
P-Shape: strong upward move + volume weighted to upper half
B-Shape: strong downward move + volume weighted to lower half
Thin: long range candles with little internal consolidation
⚠️ Disclaimer
This script is an approximation. It does NOT replace full Volume Profile tools.
It is designed as an educational / supplemental tool for market structure analysis.
Percentage Distance from 200-Week SMA200-Week SMA % Distance Oscillator (Clean & Simple)
This lightweight, no-nonsense indicator shows how far the current price is from the classic 200-week Simple Moving Average, expressed as a percentage.
Key features:
• True percentage distance: (Price − 200w SMA) / 200w SMA × 100
• Auto-scaling oscillator (no forced ±100% range → the line actually moves and looks alive)
• Clean zero line
• +10% overbought and −10% oversold levels with subtle background shading
• Real-time table showing the exact current percentage
• Small label on the last bar for instant reading
• Alert conditions when price moves >10% above or below the 200-week SMA
Why 200-week SMA?
Many legendary investors and hedge funds (Stan Druckenmiller, Paul Tudor Jones, etc.) use the 200-week SMA as their ultimate long-term trend anchor. Being +10% or more above it has historically signaled extreme optimism, while −10% or lower has marked deep pessimism and generational buying opportunities.
Perfect for Bitcoin, SPX, gold, individual stocks – works on any timeframe (looks especially good on daily and weekly charts).
Open-source • No repainting • Minimalist & fast
Enjoy and trade well!
Sector Performance (2x12 Grid, labeled)Sector Performance Dashboard that tracks short-term and multi-interval returns for 24 major U.S. market ETFs. It renders a clean, color-coded performance grid directly on the chart, making sector rotation and broad-market strength/weakness easy to read at a glance.
The dashboard covers t wo full rows of liquid U.S. sector and thematic ETFs, including:
Row 1 (Core Market + GICS sectors)
SPY, QQQ, IWM, XLF, XLE, XLRE, XLY, XLU, XLP, XLI, XLV, XLB
Row 2 (Extended industries / themes)
XLF, XBI, XHB, CLOU, XOP, IGV, XME, SOXX, DIA, KRE, XLK, VIX (VX1!)
Key features include:
Time-interval selector (1–60 min, 1D, 1W, 1M, 3M, 12M)
Automatic rate-of-return calculation with inside/outside-bar detection
Two-row, twelve-column grid with dynamic layout anchoring (top/middle/bottom + left/center/right)
Uniform white text for clarity, while inside/outside candles retain custom colors
Adaptive transparency rules (heavy/avg/light) based on magnitude of % change
Ticker label normalization (cleans up prefixes like “CBOE_DLY:”)
Market Breadth Decision HelperMarket Breadth Decision Helper (NYSE/NASDAQ VOLD, ADD, TICK)
Combines NYSE VOLD, NASDAQ VOLD (VOLDQ), NYSE/NASDAQ ADD, and TICK into a single intraday dashboard for tactical bias and risk management.
Tiered pressure scale (sign shows direction, abs(tier) shows intensity): 0 = Neutral, 1 = Mild, 2 = Strong, 3 = Severe, 4 = Panic. On-chart legend makes this explicit.
Table view highlights value, tier, bull/bear point contributions, and notes (PANIC, OVERRIDE, DIVERGENCE). VOLD and ADD panic trigger “stand down”; VOLD ±2 triggers bull/bear overrides; NYSE vs NASDAQ ADD divergence triggers “scalp only.”
Bull/bear points: VOLD 2 pts, ADD NYSE 2 pts, ADD NASDAQ 1 pt, TICK 1 pt. ≥3 pts on a side lifts that side’s multiplier to 1.5. Bias flips Bullish/Bearish only if a side leads and has ≥2 pts; otherwise Neutral.
Breadth modes: PANIC_NO_TRADE → DIVERGENCE_SCALP_ONLY → VOLD_OVERRIDE_BULL/BEAR → NORMAL/NO_EDGE.
Intraday context: tracks current session day_high / day_low for the chart symbol.
JSON/Alert export (optional) sends raw values plus *_tier and *_tier_desc labels (NEUTRAL/MILD/STRONG/SEVERE/PANIC) with sign/magnitude hints, so agents/bots never have to guess what “1 vs 2 vs 3 vs 4” mean.
Customizable bands for VOLD/ADD/TICK, table styling, label placement, and dashboard bias input to align with higher-timeframe context.
Best use
Quick read on internal participation and pressure magnitude.
Guardrails: respect PANIC and overrides; treat divergence as “scalp only.”
Pair with your strategy entries; let breadth govern when to press, scale back, or stand down.
Symbols (defaults)
VOLD (NYSE volume diff), VOLDQ (NASDAQ volume diff), ADD (NYSE), ADDQ (NASDAQ), TICK (NYSE). Adjust in Inputs as needed.
Alerts
Panic, divergence, strong bullish/bearish breadth. Enable JSON export to feed algo/agent workflows.
🔰BGL Algo Break out and Trend Indicator publicdesigned for public use no charges identifying chart trends
EMA Trend Alignment (10/20/50) with MTF & SignalsBullish Crossovers 10>20>50 and Bearish Crossover 10<20<50
Mag 8 ± VWAP AlertI have been following Mag 7 plus Avgo for directional indicators for overall market. This is a chart that displays those over or under vwap and alerts can be added, ie 4 of 8 are under vwap, etc.
Combined JADEVO-ATR VIX AdaptiveCombined JADEVO-ATR VIX Adaptive is a next-generation volatility-aware trading engine that merges the precision of the JADEVO framework with the adaptive power of ATR and VIX-based volatility modeling. Built for scalpers, intraday traders, and advanced algorithmic systems, this tool dynamically adjusts its sensitivity, key levels, and trade signals based on real-time market expansion and contraction.
By combining ATR-driven structure mapping, VIX-influenced volatility filters, and the JADEVO decision core, this indicator identifies high-probability zones, adaptive entry signals, and intelligent profit-taking levels—while filtering out low-quality chop that destroys most scalping systems.
FVG Finder + iFVG (labels g/d, bordures tendance)Détecte les fvg et ifvg et met le nombre de pips à coté
FVG Finder + iFVG (labels g/d, bordures tendance)Indique les fvg et ifvg et le nombre de pips à coté
Quantum Money Flow PRO [QUANTUM EDITION]Quantum Money Flow PRO is a sophisticated trading indicator that reveals the hidden movements of institutional "smart money" in real-time. Using advanced quantum-inspired algorithms, it analyzes volume, money flow, and market structure to provide professional-grade trading signals with unprecedented accuracy.
⚡ Key Features:
🔍 SMART MONEY DETECTION:
Quantum Delta Analysis: Tracks institutional order flow through volume delta calculations
Money Flow Index (MFI): Identifies overbought/oversold conditions with precision
Power Histogram: Visualizes smart money accumulation/distribution patterns
Open Interest Simulation: Estimates institutional positioning through volume analysis
🎯 TRADING SIGNALS:
QUANTUM STRONG SIGNALS 🌀: High-probability entries with multiple confirmations
QUANTUM WEAK SIGNALS 🟡: Early warnings for potential trend changes
Divergence Detection: Spot hidden reversals before price moves
Convergence Signals: Confirm trend strength with price-indicator alignment
📊 QUANTUM DASHBOARD:
Real-time percentage-based metrics (0-100%)
Color-coded market state identification
Instant signal recognition with emoji indicators
Professional table layout with quantum-themed design
🔄 MULTI-TIMEFRAME ANALYSIS:
Works on all timeframes from 1-minute to monthly
Adaptive calculations for any market condition
Consistent performance across forex, stocks, and crypto
🚨 ALERT SYSTEM:
8 different alert conditions for automated trading
Customizable sound and visual notifications
Mobile push notifications supported
🎨 VISUAL ENHANCEMENTS:
Quantum-themed oscillators with professional styling
Clear overbought/oversold zones with gradient fills
Chart labels for instant signal recognition
Customizable colors to match your trading style
💡 PERFECT FOR:
Day traders seeking institutional edge
Swing traders identifying major turning points
Position traders monitoring smart money flow
Algorithmic traders needing reliable signals
📈 MARKETS:
Forex (All major/minor pairs)
Stocks (NYSE, NASDAQ, etc.)
Cryptocurrencies (BTC, ETH, altcoins)
Indices (SPX, NASDAQ, DOW)
Commodities (Gold, Oil, etc.)
🔧 EASY SETUP:
Apply to any chart
Customize colors and alerts in settings
Watch quantum signals appear in real-time
Trade with institutional-level insight
⚠️ RISK DISCLAIMER:
This indicator is for educational and informational purposes only. Always practice proper risk management and backtest strategies before live trading. Past performance does not guarantee future results.
Quantum Market Analyzer X7Quantum Market Analyzer X7 - Complete Study Guide
Table of Contents
1. Overview
2. Indicator Components
3. Signal Interpretation
4. Live Market Analysis Guide
5. Best Practices
6. Limitations and Considerations
7. Risk Disclaimer
________________________________________
Overview
The Quantum Market Analyzer X7 is a comprehensive multi-timeframe technical analysis indicator that combines traditional and modern analytical methods. It aggregates signals from multiple technical indicators across seven key analysis categories to provide traders with a consolidated view of market sentiment and potential trading opportunities.
Key Features:
• Multi-Indicator Analysis: Combines 20+ technical indicators
• Real-Time Dashboard: Professional interface with customizable display
• Signal Aggregation: Weighted scoring system for overall market sentiment
• Advanced Analytics: Includes Order Block detection, Supertrend, and Volume analysis
• Visual Progress Indicators: Easy-to-read progress bars for signal strength
________________________________________
Indicator Components
1. Oscillators Section
Purpose: Identifies overbought/oversold conditions and momentum changes
Included Indicators:
• RSI (14): Relative Strength Index - momentum oscillator
• Stochastic (14): Compares closing price to price range
• CCI (20): Commodity Channel Index - cycle identification
• Williams %R (14): Momentum indicator similar to Stochastic
• MACD (12,26,9): Moving Average Convergence Divergence
• Momentum (10): Rate of price change
• ROC (9): Rate of Change
• Bollinger Bands (20,2): Volatility-based indicator
Signal Interpretation:
• Strong Buy (6+ points): Multiple oscillators indicate oversold conditions
• Buy (2-5 points): Moderate bullish momentum
• Neutral (-1 to 1 points): Balanced conditions
• Sell (-2 to -5 points): Moderate bearish momentum
• Strong Sell (-6+ points): Multiple oscillators indicate overbought conditions
2. Moving Averages Section
Purpose: Determines trend direction and strength
Included Indicators:
• SMA: 10, 20, 50, 100, 200 periods
• EMA: 10, 20, 50 periods
Signal Logic:
• Price >2% above MA = Strong Buy (+2)
• Price above MA = Buy (+1)
• Price below MA = Sell (-1)
• Price >2% below MA = Strong Sell (-2)
Signal Interpretation:
• Strong Buy (6+ points): Price well above multiple MAs, strong uptrend
• Buy (2-5 points): Price above most MAs, bullish trend
• Neutral (-1 to 1 points): Mixed MA signals, consolidation
• Sell (-2 to -5 points): Price below most MAs, bearish trend
• Strong Sell (-6+ points): Price well below multiple MAs, strong downtrend
3. Order Block Analysis
Purpose: Identifies institutional support/resistance levels and breakouts
How It Works:
• Detects historical levels where large orders were placed
• Monitors price behavior around these levels
• Identifies breakouts from established order blocks
Signal Types:
• BULLISH BRK (+2): Breakout above resistance order block
• BEARISH BRK (-2): Breakdown below support order block
• ABOVE SUP (+1): Price holding above support
• BELOW RES (-1): Price rejected at resistance
• NEUTRAL (0): No significant order block interaction
4. Supertrend Analysis
Purpose: Trend following indicator based on Average True Range
Parameters:
• ATR Period: 10 (default)
• ATR Multiplier: 6.0 (default)
Signal Types:
• BULLISH (+2): Price above Supertrend line
• BEARISH (-2): Price below Supertrend line
• NEUTRAL (0): Transition period
5. Trendline/Channel Analysis
Purpose: Identifies trend channels and breakout patterns
Components:
• Dynamic trendline calculation using pivot points
• Channel width based on historical volatility
• Breakout detection algorithm
Signal Types:
• UPPER BRK (+2): Breakout above upper channel
• LOWER BRK (-2): Breakdown below lower channel
• ABOVE MID (+1): Price above channel midline
• BELOW MID (-1): Price below channel midline
6. Volume Analysis
Purpose: Confirms price movements with volume data
Components:
• Volume spikes detection
• On Balance Volume (OBV)
• Volume Price Trend (VPT)
• Money Flow Index (MFI)
• Accumulation/Distribution Line
Signal Calculation: Multiple volume indicators are combined to determine institutional activity and confirm price movements.
________________________________________
Signal Interpretation
Overall Summary Signals
The indicator aggregates all component signals into an overall market sentiment:
Signal Score Range Interpretation Action
STRONG BUY 10+ Overwhelming bullish consensus Consider long positions
BUY 4-9 Moderate to strong bullish bias Look for long opportunities
NEUTRAL -3 to 3 Mixed signals, consolidation Wait for clearer direction
SELL -4 to -9 Moderate to strong bearish bias Look for short opportunities
STRONG SELL -10+ Overwhelming bearish consensus Consider short positions
Progress Bar Interpretation
• Filled bars indicate signal strength
• Green bars: Bullish signals
• Red bars: Bearish signals
• More filled bars = stronger conviction
________________________________________
Live Market Analysis Guide
Step 1: Initial Assessment
1. Check Overall Summary: Start with the main signal
2. Verify with Component Analysis: Ensure signals align
3. Look for Divergences: Identify conflicting signals
Step 2: Timeframe Analysis
1. Set Appropriate Timeframe: Use 1H for intraday, 4H/1D for swing trading
2. Multi-Timeframe Confirmation: Check higher timeframes for trend context
3. Entry Timing: Use lower timeframes for precise entry points
Step 3: Signal Confirmation Process.
For Buy Signals:
1. Oscillators: Look for oversold conditions (RSI <30, Stoch <20)
2. Moving Averages: Price should be above key MAs
3. Order Blocks: Confirm bounce from support levels
4. Volume: Check for accumulation patterns
5. Supertrend: Ensure bullish trend alignment.
For Sell Signals:
1. Oscillators: Look for overbought conditions (RSI >70, Stoch >80)
2. Moving Averages: Price should be below key MAs
3. Order Blocks: Confirm rejection at resistance levels
4. Volume: Check for distribution patterns
5. Supertrend: Ensure bearish trend alignment.
Step 4: Risk Management Integration
1. Signal Strength Assessment: Stronger signals = larger position size
2. Stop Loss Placement: Use Order Block levels for stops
3. Take Profit Targets: Based on channel analysis and resistance levels
4. Position Sizing: Adjust based on signal confidence
________________________________________
Best Practices
Entry Strategies
1. High Conviction Entries: Wait for STRONG BUY/SELL signals
2. Confluence Trading: Look for multiple components aligning
3. Breakout Trading: Use Order Block and Trendline breakouts
4. Trend Following: Align with Supertrend direction.
Risk Management
1. Never Risk More Than 2% Per Trade: Regardless of signal strength
2. Use Stop Losses: Place at invalidation levels
3. Scale Positions: Stronger signals warrant larger (but still controlled) positions
4. Diversification: Don't rely solely on one indicator.
Market Conditions
1. Trending Markets: Focus on Supertrend and MA signals
2. Range-Bound Markets: Emphasize Oscillator and Order Block signals
3. High Volatility: Reduce position sizes, widen stops
4. Low Volume: Be cautious of breakout signals.
Common Mistakes to Avoid
1. Signal Chasing: Don't enter after signals have already moved significantly
2. Ignoring Context: Consider overall market conditions
3. Overtrading: Wait for high-quality setups
4. Poor Risk Management: Always use appropriate position sizing
________________________________________
Limitations and Considerations
Technical Limitations
1. Lagging Nature: All technical indicators are based on historical data
2. False Signals: No indicator is 100% accurate
3. Market Regime Changes: Indicators may perform differently in various market conditions
4. Whipsaws: Possible in choppy, sideways markets.
Optimal Use Cases
1. Trending Markets: Performs best in clear trending environments
2. Medium to High Volatility: Requires sufficient price movement for signals
3. Liquid Markets: Works best with adequate volume and tight spreads
4. Multiple Timeframe Analysis: Most effective when used across different timeframes.
When to Use Caution
1. Major News Events: Fundamental analysis may override technical signals
2. Market Opens/Closes: Higher volatility can create false signals
3. Low Volume Periods: Signals may be less reliable
4. Holiday Trading: Reduced participation affects signal quality
________________________________________
Risk Disclaimer
IMPORTANT LEGAL DISCLAIMER FROM aiTrendview
WARNING: TRADING INVOLVES SUBSTANTIAL RISK OF LOSS
This Quantum Market Analyzer X7 indicator ("the Indicator") is provided for educational and informational purposes only. By using this indicator, you acknowledge and agree to the following terms:
No Investment Advice
• The Indicator does NOT constitute investment advice, financial advice, or trading recommendations
• All signals generated are based on historical price data and mathematical calculations
• Past performance does not guarantee future results
• No representation is made that any account will achieve profits or losses similar to those shown.
Risk Acknowledgment
• TRADING CARRIES SUBSTANTIAL RISK: You may lose some or all of your invested capital
• LEVERAGE AMPLIFIES RISK: Margin trading can result in losses exceeding your initial investment
• MARKET VOLATILITY: Financial markets are inherently unpredictable and volatile
• TECHNICAL ANALYSIS LIMITATIONS: No technical indicator is infallible or guarantees profitable trades.
User Responsibility
• YOU ARE SOLELY RESPONSIBLE for all trading decisions and their consequences
• CONDUCT YOUR OWN RESEARCH: Always perform independent analysis before making trading decisions
• CONSULT PROFESSIONALS: Seek advice from qualified financial advisors
• RISK MANAGEMENT: Implement appropriate risk management strategies
No Warranties
• The Indicator is provided "AS IS" without warranties of any kind
• aiTrendview makes no representations about the accuracy, reliability, or suitability of the Indicator
• Technical glitches, data feed issues, or calculation errors may occur
• The Indicator may not work as expected in all market conditions.
Limitation of Liability
• aiTrendview SHALL NOT BE LIABLE for any direct, indirect, incidental, or consequential damages
• This includes but is not limited to: trading losses, missed opportunities, data inaccuracies, or system failures
• MAXIMUM LIABILITY is limited to the amount paid for the indicator (if any)
Code Usage and Distribution
• This indicator is published on TradingView in accordance with TradingView's house rules
• UNAUTHORIZED MODIFICATION or redistribution of this code is prohibited
• Users may not claim ownership of this intellectual property
• Commercial use requires explicit written permission from aiTrendview.
Compliance and Regulations
• VERIFY LOCAL REGULATIONS: Ensure compliance with your jurisdiction's trading laws
• Some trading strategies may not be suitable for all investors
• Tax implications of trading are your responsibility
• Report trading activities as required by law
Specific Risk Factors
1. False Signals: The Indicator may generate incorrect buy/sell signals
2. Market Gaps: Overnight gaps can invalidate technical analysis
3. Fundamental Events: News and economic data can override technical signals
4. Liquidity Risk: Some markets may have insufficient liquidity
5. Technology Risk: Platform failures or connectivity issues may prevent order execution.
Professional Trading Warning
• THIS IS NOT PROFESSIONAL TRADING SOFTWARE: Not intended for institutional or professional trading
• NO REGULATORY APPROVAL: This indicator has not been approved by any financial regulatory authority
• EDUCATIONAL PURPOSE: Designed primarily for learning technical analysis concepts
FINAL WARNING
NEVER INVEST MONEY YOU CANNOT AFFORD TO LOSE
Trading financial instruments involves significant risk. The majority of retail traders lose money. Before using this indicator in live trading:
1. Practice on paper/demo accounts extensively
2. Start with small position sizes
3. Develop a comprehensive trading plan
4. Implement strict risk management rules
5. Continuously educate yourself about market dynamics
By using the Quantum Market Analyzer X7, you acknowledge that you have read, understood, and agree to this disclaimer. You assume full responsibility for all trading decisions and their outcomes.
Contact: For questions about this disclaimer or the indicator, contact aiTrendview through official TradingView channels only.
________________________________________
This study guide and indicator are published on TradingView in compliance with TradingView's community guidelines and house rules. All users must adhere to TradingView's terms of service when using this indicator.
Document Version: 1.0
Publisher: aiTrendview
________________________________________
Disclaimer
The content provided in this blog post is for educational and training purposes only. It is not intended to be, and should not be construed as, financial, investment, or trading advice. All charting and technical analysis examples are for illustrative purposes. Trading and investing in financial markets involve substantial risk of loss and are not suitable for every individual. Before making any financial decisions, you should consult with a qualified financial professional to assess your personal financial situation.
Previous Day Levels @darshaksscThis indicator provides intraday traders and analysts with immediate visual reference to the previous day's high, low, and close. These historical price levels are frequently watched by market participants for potential reaction, context, and session structure.
How to Add the Indicator:
Open any chart on TradingView.
Click the Indicators button at the top.
Search for “Previous Day Levels @darshakssc” in the Public Library.
Click the ★ Favorite icon if you wish to save it for quick access in the future.
Click the indicator’s name to add it to your chart.
The lines and labels will appear automatically on any intraday timeframe.
What You Will See:
Previous day’s High (red line and label: “Previous High”).
Previous day’s Low (green line and label: “Previous Low”).
Previous day’s Close (blue line and label: “Previous Close”).
These are drawn automatically at each new session and remain visible throughout today’s trading.
Usage:
Use these levels as reference points for context, risk placement, or understanding shifts in session structure.
Watch for price interactions, rejections, or consolidations around these lines—they often act as support/resistance for many trading strategies.
No signals or trade advice are provided by this tool. All decisions are made manually by the trader.
Features:
Persistent, color-coded horizontal lines and clear, small labels.
No alerts, buy/sell arrows, or any indication of trading performance.
Fully automated for each new session—no action required from the user after adding.
Disclaimer:
This indicator is intended for informational and charting purposes only. It is not financial advice or a buy/sell recommendation. Always perform your own due diligence before making trading decisions.






















