SMC + Boring Candles - KartikCombined Boring candle and smart money concept to get better insight of price range where there is potential demand zone and supply zone.
Bandas e Canais
Ultra Robust Adaptive Trend FlowUltra Robust Adaptive Trend Flow
The Ultra Robust Adaptive Trend Flow indicator is designed to enhance market analysis, specifically for BTC, using a combination of advanced trend-following mechanisms and smooth adaptive techniques. It incorporates two key Exponential Moving Averages (EMAs) of different lengths to identify price direction, with dynamic color coding (green for upward trends, red for downward trends, and gray for neutral) to easily visualize market behavior.
Additionally, the indicator includes a built-in volume analysis filter to reduce "chop" or erratic price movements, ensuring more reliable trend identification. It is optimized for real-time market monitoring and adaptable to multiple timeframes for robust trading insights.
Key Features:
Trend Identification: Fast and slow EMAs to detect bullish and bearish trends.
Volume-based Anti-Chop Filter: Smooths out noise for clearer signals.
Multi-Timeframe Support: Designed for a variety of timeframes with dynamic adaptability.
Simplicity in Design: Offers both a price overlay and a hidden bottom indicator to help traders spot long-term trends without cluttering the chart.
This indicator is ideal for traders looking for adaptive trend-following strategies, with built-in trend reversal filters, ensuring a smoother and more reliable trading experience.
TLP Swing Chart V2// This source code is subject to the terms of the Mozilla Public License 2.0 at mozilla.org
// Sửa đổi trên code gốc của © meomeo105
// © meomeo105
//@version=5
indicator('TLP Swing Chart V2', shorttitle='TLP Swing V2', overlay=true, max_lines_count=500)
//-----Input-------
customTF = input.timeframe(defval="",title = "Show Other TimeFrame")
showTLP = input.bool(false, 'Show TLP', inline = "TLP1")
colorTLP = input.color(color.aqua, '', inline = "TLP1")
showSTLP = input.bool(true, 'Show TLP Swing', inline = "Swing1")
colorSTLP = input.color(color.aqua, '', inline = "Swing1")
showLabel = input.bool(true, 'Show Label TimeFrame')
lineSTLP = input.string(title="",options= ,defval="(─)", inline = "Swing1")
lineStyleSTLP = lineSTLP == "(┈)" ? line.style_dotted : lineSTLP == "(╌)" ? line.style_dashed : line.style_solid
//IOSB
IOSB = "TLPInOutSideBarSetting"
ISB = input(true,group =IOSB, title="showISB")
colorISB = input.color(color.rgb(250, 171, 0), inline = "ISB")
OSB = input(true,group =IOSB, title="showOSB")
colorOSB = input.color(color.rgb(56, 219, 255), inline = "OSB")
ZoneColor = input(defval = color.new(color.orange, 90),group =IOSB, title = "Background Color")
BorderColor = input(defval = color.new(color.orange, 100),group =IOSB, title = "Border Color")
/////////////////
var aCZ = array.new_float(0)
float highest = high
float lowest = low
if (array.size(aCZ) > 0)
highest := array.get(aCZ, 0)
lowest := array.get(aCZ, 1)
insideBarCondtion = low >= lowest and low <= highest and high >= lowest and high <= highest
if ( insideBarCondtion == true )
array.push(aCZ, high )
array.push(aCZ, low )
if( array.size(aCZ) >= 2 and insideBarCondtion == false )
float maxCZ = array.max(aCZ)
float minCZ = array.min(aCZ)
box.new(bar_index - (array.size(aCZ) / 2) - 1, maxCZ, bar_index - 1, minCZ, bgcolor = ZoneColor, border_color = BorderColor)
array.clear(aCZ)
//////////////////////////Global//////////////////////////
var arrayLineTemp = array.new_line()
// Funtion
f_resInMinutes() =>
_resInMinutes = timeframe.multiplier * (
timeframe.isseconds ? 1. / 60. :
timeframe.isminutes ? 1. :
timeframe.isdaily ? 1440. :
timeframe.isweekly ? 10080. :
timeframe.ismonthly ? 43800. : na)
// Converts a resolution expressed in minutes into a string usable by "security()"
f_resFromMinutes(_minutes) =>
_minutes < 1 ? str.tostring(math.round(_minutes*60)) + "S" :
_minutes < 60 ? str.tostring(math.round(_minutes)) + "m" :
_minutes < 1440 ? str.tostring(math.round(_minutes/60)) + "H" :
_minutes < 10080 ? str.tostring(math.round(math.min(_minutes / 1440, 7))) + "D" :
_minutes < 43800 ? str.tostring(math.round(math.min(_minutes / 10080, 4))) + "W" :
str.tostring(math.round(math.min(_minutes / 43800, 12))) + "M"
f_tfRes(_res,_exp) =>
request.security(syminfo.tickerid,_res,_exp,lookahead=barmerge.lookahead_on)
var label labelError = label.new(bar_index, high, text = "", color = #00000000, textcolor = color.white,textalign = text.align_left)
sendError(_mmessage) =>
label.set_xy(labelError, bar_index + 3, close )
label.set_text(labelError, _mmessage)
var arrayLineChoCh = array.new_line()
var label labelTF = label.new(time, close, text = "",color = color.new(showSTLP ? colorSTLP : colorTLP,95), textcolor = showSTLP ? colorSTLP : colorTLP,xloc = xloc.bar_time, textalign = text.align_left)
//////////////////////////TLP//////////////////////////
var arrayXTLP = array.new_int(5,time)
var arrayYTLP = array.new_float(5,close)
var arrayLineTLP = array.new_line()
int drawLineTLP = 0
_high = high
_low = low
_close = close
_open = open
if(customTF != timeframe.period)
_high := f_tfRes(customTF,high)
_low := f_tfRes(customTF,low)
_close := f_tfRes(customTF,close)
_open := f_tfRes(customTF,open)
highPrev = _high
lowPrev = _low
// drawLineTLP => 2:Tiếp tục 1:Đảo chiều; // Outsidebar 2:Tiếp tục 3:Tiếp tục và Đảo chiều 4 : Đảo chiều 2 lần
drawLineTLP := 0
if(_high > highPrev and _low > lowPrev )
if(array.get(arrayYTLP,0) > array.get(arrayYTLP,1))
if(_high <= high)
array.set(arrayXTLP, 0, time)
array.set(arrayYTLP, 0, _high )
drawLineTLP := 2
else
array.unshift(arrayXTLP,time)
array.unshift(arrayYTLP,_high )
drawLineTLP := 1
else if(_high < highPrev and _low < lowPrev )
if(array.get(arrayYTLP,0) > array.get(arrayYTLP,1))
array.unshift(arrayXTLP,time)
array.unshift(arrayYTLP,_low )
drawLineTLP := 1
else
if(_low >= low)
array.set(arrayXTLP, 0, time)
array.set(arrayYTLP, 0, _low )
drawLineTLP := 2
else if(_high >= highPrev and _low < lowPrev or _high > highPrev and _low <= lowPrev )
if(array.get(arrayYTLP,0) > array.get(arrayYTLP,1))
if(_high >= array.get(arrayYTLP,0) and array.get(arrayYTLP,1) < _low )
if(_high <= high)
array.set(arrayXTLP, 0, time)
array.set(arrayYTLP, 0, _high )
drawLineTLP := 2
else if(_high >= array.get(arrayYTLP,0) and array.get(arrayYTLP,1) > _low )
if(_close < _open)
if(_high <= high)
array.set(arrayXTLP, 0, time)
array.set(arrayYTLP, 0, _high )
array.unshift(arrayXTLP,time)
array.unshift(arrayYTLP,_low )
drawLineTLP := 3
else
array.unshift(arrayXTLP,time)
array.unshift(arrayYTLP,_low )
array.unshift(arrayXTLP,time)
array.unshift(arrayYTLP,_high )
drawLineTLP := 4
else if(array.get(arrayYTLP,0) < array.get(arrayYTLP,1))
if(_low <= array.get(arrayYTLP,0) and _high < array.get(arrayYTLP,1))
if(_low >= low)
array.set(arrayXTLP, 0, time)
array.set(arrayYTLP, 0, _low )
drawLineTLP := 2
else if(_low <= array.get(arrayYTLP,0) and _high > array.get(arrayYTLP,1))
if(_close > _open)
if(_low >= low)
array.set(arrayXTLP, 0, time)
array.set(arrayYTLP, 0, _low )
array.unshift(arrayXTLP,time)
array.unshift(arrayYTLP,_high )
drawLineTLP := 3
else
array.unshift(arrayXTLP,time)
array.unshift(arrayYTLP,_high )
array.unshift(arrayXTLP,time)
array.unshift(arrayYTLP,_low )
drawLineTLP := 4
else if((_high <= highPrev and _low >= lowPrev ))
highPrev := highPrev
lowPrev := lowPrev
if(f_resInMinutes() < f_tfRes(customTF,f_resInMinutes()) and drawLineTLP == 0)
if(array.get(arrayYTLP,0) > array.get(arrayYTLP,1))
if(array.get(arrayYTLP,0) <= high)
array.set(arrayXTLP, 0, time)
drawLineTLP := 2
else
if(array.get(arrayYTLP,0) >= low)
array.set(arrayXTLP, 0, time)
drawLineTLP := 2
if((showSTLP or showTLP) and f_resInMinutes() <= f_tfRes(customTF,f_resInMinutes()))
if(drawLineTLP == 2)
if(array.size(arrayLineTLP) >0)
line.set_xy2(array.get(arrayLineTLP,0),array.get(arrayXTLP,0),array.get(arrayYTLP,0))
else
array.unshift(arrayLineTLP,line.new(array.get(arrayXTLP,1),array.get(arrayYTLP,1),array.get(arrayXTLP,0),array.get(arrayYTLP,0), color = colorTLP,xloc = xloc.bar_time, style = lineStyleSTLP))
else if(drawLineTLP == 1)
array.unshift(arrayLineTLP,line.new(array.get(arrayXTLP,1),array.get(arrayYTLP,1),array.get(arrayXTLP,0),array.get(arrayYTLP,0), color = colorTLP,xloc = xloc.bar_time, style = lineStyleSTLP))
else if(drawLineTLP == 3)
if(array.size(arrayLineTLP) >0)
line.set_xy2(array.get(arrayLineTLP,0),array.get(arrayXTLP,1),array.get(arrayYTLP,1))
else
array.unshift(arrayLineTLP,line.new(array.get(arrayXTLP,2),array.get(arrayYTLP,2),array.get(arrayXTLP,1),array.get(arrayYTLP,1), color = colorTLP,xloc = xloc.bar_time, style = lineStyleSTLP))
array.unshift(arrayLineTLP,line.new(array.get(arrayXTLP,1),array.get(arrayYTLP,1),array.get(arrayXTLP,0),array.get(arrayYTLP,0), color = colorTLP,xloc = xloc.bar_time, style = lineStyleSTLP))
else if(drawLineTLP == 4)
array.unshift(arrayLineTLP,line.new(array.get(arrayXTLP,2),array.get(arrayYTLP,2),array.get(arrayXTLP,1),array.get(arrayYTLP,1), color = colorTLP,xloc = xloc.bar_time, style = lineStyleSTLP))
array.unshift(arrayLineTLP,line.new(array.get(arrayXTLP,1),array.get(arrayYTLP,1),array.get(arrayXTLP,0),array.get(arrayYTLP,0), color = colorTLP,xloc = xloc.bar_time, style = lineStyleSTLP))
//////////////////////////Swing TLP//////////////////////////
var arrayXSTLP = array.new_int(5,time)
var arrayYSTLP = array.new_float(5,close)
var arrayLineSTLP = array.new_line()
int drawLineSTLP = 0
int drawLineSTLP1 = 0
if(showSTLP)
if(math.max(array.get(arrayYSTLP,0),array.get(arrayYSTLP,1)) < math.min(array.get(arrayYTLP,0),array.get(arrayYTLP,1)) or math.min(array.get(arrayYSTLP,0),array.get(arrayYSTLP,1)) > math.max(array.get(arrayYTLP,0),array.get(arrayYTLP,1)))
//Khởi tạo bắt đầu
drawLineSTLP1 := 5
array.set(arrayXSTLP, 0, array.get(arrayXTLP,1))
array.set(arrayYSTLP, 0, array.get(arrayYTLP,1))
array.unshift(arrayXSTLP,array.get(arrayXTLP,0))
array.unshift(arrayYSTLP,array.get(arrayYTLP,0))
// drawLineSTLP kiểm tra điểm 1 => 13:Tiếp tục có sóng hồi // 12|19(reDraw):Tiếp tục không có sóng hồi // 14:Đảo chiều
if(array.get(arrayXTLP,0) == array.get(arrayXTLP,1))
if(array.get(arrayXSTLP,0) >= array.get(arrayXTLP,2) and array.get(arrayYSTLP,0) != array.get(arrayYTLP,1) and ((array.get(arrayYTLP,1) > array.get(arrayYTLP,2) and array.get(arrayYSTLP,0) > array.get(arrayYSTLP,1)) or (array.get(arrayYTLP,1) < array.get(arrayYTLP,2) and array.get(arrayYSTLP,0) < array.get(arrayYSTLP,1))))
drawLineSTLP1 := 12
array.set(arrayXSTLP, 0, array.get(arrayXTLP,1))
array.set(arrayYSTLP, 0, array.get(arrayYTLP,1))
else if(array.get(arrayXSTLP,0) <= array.get(arrayXTLP,2))
if((array.get(arrayYSTLP,0) > array.get(arrayYSTLP,1) and array.get(arrayYTLP,1) < array.get(arrayYSTLP,1)) or (array.get(arrayYSTLP,0) < array.get(arrayYSTLP,1) and array.get(arrayYTLP,1) > array.get(arrayYSTLP,1)))
drawLineSTLP1 := 14
array.unshift(arrayXSTLP,array.get(arrayXTLP,1))
array.unshift(arrayYSTLP,array.get(arrayYTLP,1))
else if((array.get(arrayYSTLP,0) > array.get(arrayYSTLP,1) and array.get(arrayYTLP,1) > array.get(arrayYSTLP,0)) or (array.get(arrayYSTLP,0) < array.get(arrayYSTLP,1) and array.get(arrayYTLP,1) < array.get(arrayYSTLP,0)))
drawLineSTLP1 := 13
_max = math.min(array.get(arrayYSTLP,0),array.get(arrayYSTLP,1))
_min = math.max(array.get(arrayYSTLP,0),array.get(arrayYSTLP,1))
_max_idx = 0
_min_idx = 0
for i = 2 to array.size(arrayXTLP)
if(array.get(arrayXSTLP,0) >= array.get(arrayXTLP,i))
break
if(_min > array.get(arrayYTLP,i))
_min := array.get(arrayYTLP,i)
_min_idx := array.get(arrayXTLP,i)
if(_max < array.get(arrayYTLP,i))
_max := array.get(arrayYTLP,i)
_max_idx := array.get(arrayXTLP,i)
if(array.get(arrayYSTLP,0) > array.get(arrayYSTLP,1))
array.unshift(arrayXSTLP,_min_idx)
array.unshift(arrayYSTLP,_min)
else if(array.get(arrayYSTLP,0) < array.get(arrayYSTLP,1))
array.unshift(arrayXSTLP,_max_idx)
array.unshift(arrayYSTLP,_max)
array.unshift(arrayXSTLP,array.get(arrayXTLP,1))
array.unshift(arrayYSTLP,array.get(arrayYTLP,1))
if(f_resInMinutes() < f_tfRes(customTF,f_resInMinutes()))
if(array.get(arrayYSTLP,0) == array.get(arrayYTLP,1) and array.get(arrayXSTLP,0) != array.get(arrayXTLP,1))
array.set(arrayXSTLP, 0, array.get(arrayXTLP,1))
drawLineSTLP1 := 19
if(f_resInMinutes() <= f_tfRes(customTF,f_resInMinutes()))
if(drawLineSTLP1 == 12 or drawLineSTLP1 == 19)
if(array.size(arrayLineSTLP) >0)
line.set_xy2(array.get(arrayLineSTLP,0),array.get(arrayXSTLP,0),array.get(arrayYSTLP,0))
else
array.unshift(arrayLineSTLP,line.new(array.get(arrayXSTLP,1),array.get(arrayYSTLP,1),array.get(arrayXSTLP,0),array.get(arrayYSTLP,0), color = colorSTLP,xloc = xloc.bar_time))
else if(drawLineSTLP1 == 14)
array.unshift(arrayLineSTLP,line.new(array.get(arrayXSTLP,1),array.get(arrayYSTLP,1),array.get(arrayXSTLP,0),array.get(arrayYSTLP,0), color = colorSTLP,xloc = xloc.bar_time))
else if(drawLineSTLP1 == 13)
array.unshift(arrayLineSTLP,line.new(array.get(arrayXSTLP,2),array.get(arrayYSTLP,2),array.get(arrayXSTLP,1),array.get(arrayYSTLP,1), color = colorSTLP,xloc = xloc.bar_time))
array.unshift(arrayLineSTLP,line.new(array.get(arrayXSTLP,1),array.get(arrayYSTLP,1),array.get(arrayXSTLP,0),array.get(arrayYSTLP,0), color = colorSTLP,xloc = xloc.bar_time))
else if(drawLineSTLP1 == 15)
if(array.size(arrayLineSTLP) >0)
line.set_xy2(array.get(arrayLineSTLP,0),array.get(arrayXSTLP,1),array.get(arrayYSTLP,1))
else
array.unshift(arrayLineSTLP,line.new(array.get(arrayXSTLP,2),array.get(arrayYSTLP,2),array.get(arrayXSTLP,1),array.get(arrayYSTLP,1), color = colorSTLP,xloc = xloc.bar_time))
array.unshift(arrayLineSTLP,line.new(array.get(arrayXSTLP,1),array.get(arrayYSTLP,1),array.get(arrayXSTLP,0),array.get(arrayYSTLP,0), color = colorSTLP,xloc = xloc.bar_time))
// drawLineSTLP kiểm tra điểm 0 => 3:Tiếp tục có sóng hồi // 2|9(reDraw):Tiếp tục không có sóng hồi // 4:Đảo chiều
if(array.get(arrayXSTLP,0) >= array.get(arrayXTLP,1) and array.get(arrayYSTLP,0) != array.get(arrayYTLP,0) and ((array.get(arrayYTLP,0) > array.get(arrayYTLP,1) and array.get(arrayYSTLP,0) > array.get(arrayYSTLP,1)) or (array.get(arrayYTLP,0) < array.get(arrayYTLP,1) and array.get(arrayYSTLP,0) < array.get(arrayYSTLP,1))))
drawLineSTLP := 2
array.set(arrayXSTLP, 0, array.get(arrayXTLP,0))
array.set(arrayYSTLP, 0, array.get(arrayYTLP,0))
else if(array.get(arrayXSTLP,0) <= array.get(arrayXTLP,1))
if((array.get(arrayYSTLP,0) > array.get(arrayYSTLP,1) and array.get(arrayYTLP,0) < array.get(arrayYSTLP,1)) or (array.get(arrayYSTLP,0) < array.get(arrayYSTLP,1) and array.get(arrayYTLP,0) > array.get(arrayYSTLP,1)))
drawLineSTLP := 4
array.unshift(arrayXSTLP,array.get(arrayXTLP,0))
array.unshift(arrayYSTLP,array.get(arrayYTLP,0))
else if((array.get(arrayYSTLP,0) > array.get(arrayYSTLP,1) and array.get(arrayYTLP,0) > array.get(arrayYSTLP,0)) or (array.get(arrayYSTLP,0) < array.get(arrayYSTLP,1) and array.get(arrayYTLP,0) < array.get(arrayYSTLP,0)))
drawLineSTLP := 3
_max = math.min(array.get(arrayYSTLP,0),array.get(arrayYSTLP,1))
_min = math.max(array.get(arrayYSTLP,0),array.get(arrayYSTLP,1))
_max_idx = 0
_min_idx = 0
for i = 1 to array.size(arrayXTLP)
if(array.get(arrayXSTLP,0) >= array.get(arrayXTLP,i))
break
if(_min > array.get(arrayYTLP,i))
_min := array.get(arrayYTLP,i)
_min_idx := array.get(arrayXTLP,i)
if(_max < array.get(arrayYTLP,i))
_max := array.get(arrayYTLP,i)
_max_idx := array.get(arrayXTLP,i)
if(array.get(arrayYSTLP,0) > array.get(arrayYSTLP,1))
array.unshift(arrayXSTLP,_min_idx)
array.unshift(arrayYSTLP,_min)
else if(array.get(arrayYSTLP,0) < array.get(arrayYSTLP,1))
array.unshift(arrayXSTLP,_max_idx)
array.unshift(arrayYSTLP,_max)
array.unshift(arrayXSTLP,array.get(arrayXTLP,0))
array.unshift(arrayYSTLP,array.get(arrayYTLP,0))
if(f_resInMinutes() < f_tfRes(customTF,f_resInMinutes()))
if(array.get(arrayYSTLP,0) == array.get(arrayYTLP,0) and array.get(arrayXSTLP,0) != array.get(arrayXTLP,0))
array.set(arrayXSTLP, 0, array.get(arrayXTLP,0))
drawLineSTLP := 9
if(f_resInMinutes() <= f_tfRes(customTF,f_resInMinutes()))
if(drawLineSTLP == 2 or drawLineSTLP == 9)
if(array.size(arrayLineSTLP) >0)
line.set_xy2(array.get(arrayLineSTLP,0),array.get(arrayXSTLP,0),array.get(arrayYSTLP,0))
else
array.unshift(arrayLineSTLP,line.new(array.get(arrayXSTLP,1),array.get(arrayYSTLP,1),array.get(arrayXSTLP,0),array.get(arrayYSTLP,0), color = colorSTLP,xloc = xloc.bar_time))
else if(drawLineSTLP == 4)
array.unshift(arrayLineSTLP,line.new(array.get(arrayXSTLP,1),array.get(arrayYSTLP,1),array.get(arrayXSTLP,0),array.get(arrayYSTLP,0), color = colorSTLP,xloc = xloc.bar_time))
else if(drawLineSTLP == 3)
array.unshift(arrayLineSTLP,line.new(array.get(arrayXSTLP,2),array.get(arrayYSTLP,2),array.get(arrayXSTLP,1),array.get(arrayYSTLP,1), color = colorSTLP,xloc = xloc.bar_time))
array.unshift(arrayLineSTLP,line.new(array.get(arrayXSTLP,1),array.get(arrayYSTLP,1),array.get(arrayXSTLP,0),array.get(arrayYSTLP,0), color = colorSTLP,xloc = xloc.bar_time))
else if(drawLineSTLP == 5)
if(array.size(arrayLineSTLP) >0)
line.set_xy2(array.get(arrayLineSTLP,0),array.get(arrayXSTLP,1),array.get(arrayYSTLP,1))
else
array.unshift(arrayLineSTLP,line.new(array.get(arrayXSTLP,2),array.get(arrayYSTLP,2),array.get(arrayXSTLP,1),array.get(arrayYSTLP,1), color = colorSTLP,xloc = xloc.bar_time))
array.unshift(arrayLineSTLP,line.new(array.get(arrayXSTLP,1),array.get(arrayYSTLP,1),array.get(arrayXSTLP,0),array.get(arrayYSTLP,0), color = colorSTLP,xloc = xloc.bar_time))
///////////////////////Other//////////////////////////////////
if(f_resInMinutes() <= f_tfRes(customTF,f_resInMinutes()))
if(showSTLP)
if(showLabel and (barstate.islast or barstate.islastconfirmedhistory))
texLabel = f_resInMinutes() == f_tfRes(customTF,f_resInMinutes()) ? f_resFromMinutes(f_resInMinutes()) : f_resFromMinutes(f_tfRes(customTF,f_resInMinutes()))
label.set_xy(labelTF,array.get(arrayXSTLP,0),array.get(arrayYSTLP,0))
label.set_text(labelTF,texLabel)
label.set_style(labelTF,array.get(arrayYSTLP,0) < array.get(arrayYSTLP,1) ? label.style_label_upper_right : label.style_label_lower_right)
if(not showTLP)
arrayLineTemp := array.copy(arrayLineTLP)
for itemArray in arrayLineTemp
if(line.get_x1(itemArray) < array.get(arrayXSTLP,0))
line.delete(itemArray)
array.remove(arrayLineTLP,array.indexof(arrayLineTLP, itemArray))
//Inside Bars - Outside Bars
insideBar() => ISB and high <= high and low >= low ? 1 : 0
outsideBar() => OSB and (high > high and low < low ) ? 1 : 0
//Inside and Outside Bars
barcolor(insideBar() ? color.new(colorISB,0) : na )
barcolor(outsideBar() ? color.new(colorOSB,0) : na )
One-Minute Pivot Trading SystemOne-Minute Pivot Trading System for TradingView
This indicator calculates and displays pivot points based on the last 100 one-minute candles. It is designed for scalping and short-term trading, helping traders identify key price levels efficiently.
Features:
✅ Dynamic Pivot Calculation:
The pivot point is calculated based on the previous candle's high, low, and close values.
Updates every new 1-minute candle to reflect the latest market conditions.
✅ Pivot Point Display:
Only the last 100 pivot points are stored and plotted to keep the chart clean.
Automatically removes old pivot points beyond the last 100 candles.
✅ Efficient Line Management:
Uses dynamic line handling to delete outdated pivot lines.
Ensures a clear and updated visual representation of pivot levels.
Usage:
This indicator is ideal for traders who rely on short-term support and resistance levels.
It helps in scalping strategies by marking key price levels in real time.
Can be used in combination with trend indicators to refine trade entries and exits.
💡 Best for traders looking for real-time pivot point tracking on a 1-minute timeframe. 🚀
This description is optimized for TradingView. Let me know if you need any modifications! 😊
Support, Resistance and Median with Trend"This Pine Script indicator, 'Support, Resistance and Median with Trend', offers traders a comprehensive view of market dynamics using key technical analysis principles.
Key Features:
Dynamic Support and Resistance: The script calculates and plots support and resistance levels based on the highest highs and lowest lows over a customizable historical period.
Median Line: A median line is plotted between support and resistance, serving as a key reference for price action.
Trend Detection: The indicator determines the current trend by comparing the closing price to the median line, offering a simple yet effective trend identification method.
Visual Trend Indicator: A color-coded box in the top-right corner displays the current trend (Uptrend, Downtrend, or Neutral), providing at-a-glance trend information.
Level Projections: The script projects support, resistance, and median levels into future periods, helping traders anticipate potential price movements.
Customization: Users can adjust the historical length for calculations, allowing for fine-tuning based on individual trading styles and timeframes.
withoutfaking Advanced charts readerFeatures:
1. Multi-Timeframe Adaptive:
- Triple EMA system (21/50/200) identifies macro/micro trends
- ADX filter ensures trades only in strong momentum phases
2. Elliott Wave Integration:
- Proprietary EWO (Elliott Wave Oscillator) with signal line
- Detects wave 3 acceleration and wave 5 exhaustion
3. Smart Money Detection:
- Volume-weighted MFI filters false breakouts
- Combined with Stochastic for precision timing
4. Adaptive Alerts:
- Multi-condition confluence required for signals
- Self-adjusting to any timeframe (1m - monthly)
Usage:
- Day Trading: Use on 5-15m charts with tighter EMA settings
- Swing Trading: Apply on 1H-4H with default parameters
- Investing: Weekly/Monthly charts with 50/200 EMA cross
Signal Logic:
- Entries require 5/34 EWO cross + EMA alignment + volume confirmation
- Exits trigger at opposing MFI extreme + EMA flip
Risk Management:
- Bullish signals invalidate below 21 EMA
- Bearish signals cancel above 50 EMA
This system combines institutional flow analysis with technical patterns, designed to adapt to both mean-reverting and trending markets.
Triple Trend Indicator [BigBeluga]Triple Trend Indicator is a versatile trend-following tool designed to help traders identify trend strength and potential pullback levels using a three-band system. Each band represents a varying degree of price deviation from the mean, providing progressively stronger trend signals.
🔵 Key Features:
Three Adaptive Bands:
The indicator dynamically calculates three bands (1, 2, and 3) based on moving averages (SMA, EMA, WMA) and ATR multipliers.
Bands are positioned below the price in an uptrend and above the price in a downtrend, offering clear trend direction visualization.
Signal System:
Signals are generated when price interacts with the bands:
Signal 1: Triggered when the price touches Band 1, indicating a minor pullback within the trend.
Signal 2: Triggered at Band 2, showing a stronger price deviation and trend confirmation.
Signal 3: Triggered at Band 3, representing the most significant price deviation and strongest trend signal.
The further the price deviates from the mean, the stronger the trend signal, with Signal 3 being the most robust.
Color-Coded Bands:
Bands dynamically change color based on the trend direction:
Green bands signify an uptrend.
Brown bands signify a downtrend.
Dynamic Trend Line Changes:
Dashed lines highlight trend changes, helping traders visualize key turning points in the market.
🔵 Usage:
Use the bands to identify trend direction and strength.
Monitor the signal system to assess the level of price deviation and potential pullback strength.
Combine Signal 1, 2, and 3 to confirm trend momentum:
Signal 1 suggests a weaker pullback and continuation.
Signal 2 indicates a stronger trend confirmation.
Signal 3 highlights the strongest momentum and potential exhaustion points.
Utilize the color-coded bands for an intuitive understanding of current market conditions.
The Triple Trend Indicator is an ideal tool for trend traders looking for structured signals and dynamic support and resistance levels to optimize entries and exits.
Enhanced Fibonacci Growth Strategy with 20% Target in 5 DaysSummary: Enhanced Fibonacci Growth Strategy with 20% Target in 5 Days
The Enhanced Fibonacci Growth Strategy is a trading script designed to help traders grow their initial capital by 20% over a span of 5 consecutive days. This strategy is based on the Fibonacci retracement levels, moving average trend confirmation, and dynamic risk management using ATR (Average True Range). The script is optimized for a long-only approach, focusing on identifying buy opportunities that align with Fibonacci retracement levels and confirmed trends, while managing risk through stop loss, take profit, and daily drawdown limits.
Key Features:
1. Fibonacci Retracement & Extension Levels:
• The strategy uses Fibonacci levels (38.2%, 50%, 61.8%, and 161.8%) to identify entry points. The script calculates these levels based on the highest high and lowest low over the last 100 bars, plotting the key retracement levels for easy visualization.
2. Moving Average (MA) for Trend Confirmation:
• The strategy ensures that trades are in line with the prevailing market trend by using a simple moving average (SMA). Only positions that are above the moving average are considered, ensuring that the market is trending upwards.
3. Risk Management with ATR:
• Stop loss and take profit levels are dynamically set using ATR, adjusting for volatility. The stop loss is multiplied by a user-defined multiplier, and the take profit level is similarly adjusted, providing efficient risk-reward ratios based on market conditions.
4. Position Sizing:
• Position size is calculated dynamically based on the trader’s equity and the distance to the stop loss. This allows for scalable risk management, where the amount risked per trade is a percentage of the trader’s total equity.
5. Daily Drawdown Limit:
• The strategy includes a daily drawdown limit of $1,500 to protect capital. If the drawdown exceeds this threshold, all positions are closed to prevent further losses on that day.
6. Targeted Account Growth:
• The primary goal is to grow the initial capital by 20% over 5 consecutive trading days. The script tracks daily equity growth and ensures that once the target is achieved, all positions are closed, and a message is displayed to notify the trader that the goal has been reached.
7. Trade Frequency:
• To avoid overtrading, the strategy limits the number of trades per day to a user-defined maximum (e.g., 5 trades), helping to focus on high-quality setups.
8. Exit Strategy:
• Trades are exited either when the take profit or stop loss levels are hit. If the trade drawdown exceeds the specified amount, the trade is closed early to minimize potential losses.
How to Use:
• Inputs: The strategy offers several adjustable inputs:
• Fibonacci Levels: Adjust the retracement and extension levels to customize the Fibonacci tool.
• Risk Settings: Fine-tune position sizing, stop loss, take profit, and daily drawdown limits to align with your risk tolerance.
• Equity Growth Target: Set the desired daily percentage target for account growth.
• Execution: Once the strategy is activated, it will automatically identify potential buy signals based on Fibonacci levels, moving averages, and the ATR-based risk management system. It will execute trades accordingly, managing risk dynamically and protecting capital.
Benefits:
• Automated Risk Management: By using ATR for stop loss and take profit, this strategy adapts to changing market conditions.
• Scalable: The script adjusts position sizes based on your equity and risk factors, allowing for flexibility.
• Growth Focused: The 20% growth target over 5 days ensures a disciplined approach to growing capital while limiting excessive risk.
Best For:
• Traders who want to use Fibonacci retracements as a foundation for trading strategies.
• Those seeking a structured approach to growing a trading account with controlled risk management.
• Traders who prefer automated solutions for dynamic position sizing, exit strategies, and daily drawdown protection.
By following this strategy, traders can focus on high-quality setups while letting the script handle risk management, position sizing, and capital growth targets.
Nextone Daily RangeShow daily range in lower timeframes.
It shows a box for the high and low of the day and an arrow for the open and close of the day with green and red colours.
RSI & BB% Indicator (King369)Here's a TradingView Pine Script that combines the Relative Strength Index (RSI) and Bollinger Bands %B into a single indicator. It includes the following features:
✅ RSI calculation
✅ Bollinger Bands %B calculation
✅ Three level borders (0, 50, 100)
✅ Customizable settings (length, colors, etc.)
✅ Background shading for overbought/oversold zones
Order Block, FVG, Breaker Block Detector//@version=5
indicator("Order Block, FVG, Breaker Block Detector", overlay=true)
// Input parametreleri
lookback = input.int(5, title="Order Block Lookback Period")
fvg_lookback = input.int(3, title="FVG Lookback Period")
// Order Block Tespiti
var float order_block_high = na
var float order_block_low = na
if barstate.isconfirmed
// Yükseliş Order Block
if close > ta.highest(high, lookback)
order_block_high := ta.lowest(low, lookback)
order_block_low := na
// Düşüş Order Block
else if close < ta.lowest(low, lookback)
order_block_low := ta.highest(high, lookback)
order_block_high := na
// Order Block Çizimi
plotshape(series=not na(order_block_high), location=location.belowbar, color=color.green, style=shape.labelup, text="OB-H")
plotshape(series=not na(order_block_low), location=location.abovebar, color=color.red, style=shape.labeldown, text="OB-L")
// Fair Value Gap (FVG) Tespiti
var float fvg_high = na
var float fvg_low = na
if barstate.isconfirmed and bar_index >= fvg_lookback
// FVG için üç mumluk yapı kontrolü
if low > high and high < low
fvg_high := high
fvg_low := low
else
fvg_high := na
fvg_low := na
// FVG Çizimi
plotshape(series=not na(fvg_high), location=location.abovebar, color=color.blue, style=shape.labeldown, text="FVG")
plotshape(series=not na(fvg_low), location=location.belowbar, color=color.blue, style=shape.labelup, text="FVG")
// Breaker Block Tespiti
var float breaker_high = na
var float breaker_low = na
if barstate.isconfirmed
// Yükseliş Breaker Block
if close > order_block_high and not na(order_block_high)
breaker_high := order_block_high
breaker_low := na
// Düşüş Breaker Block
else if close < order_block_low and not na(order_block_low)
breaker_low := order_block_low
breaker_high := na
// Breaker Block Çizimi
plotshape(series=not na(breaker_high), location=location.belowbar, color=color.orange, style=shape.labelup, text="BB-H")
plotshape(series=not na(breaker_low), location=location.abovebar, color=color.orange, style=shape.labeldown, text="BB-L")
Grids lines"Líneas de Grid para Análisis Técnico"
Este indicador dibuja líneas de grid (rejilla) en el gráfico de precios, lo que puede ayudar a visualizar zonas de soporte, resistencia y niveles de interés en un rango de precios determinado.
Características:
Precio Mínimo y Máximo: Configura los precios entre los cuales se dibujarán las líneas de grid.
Número de Grids: Establece cuántas líneas de grid quieres ver en el gráfico.
Color y Grosor de las Líneas: Personaliza los colores y el grosor de las líneas de grid, incluyendo la primera y la última línea.
Estilo de las Líneas: Puedes elegir entre líneas discontinuas (Dotted) o sólidas (Solid), para personalizar aún más tu visualización.
Ticker Específico: Si lo deseas, puedes elegir un ticker específico para dibujar las líneas solo cuando el gráfico esté mostrando ese activo. De lo contrario, las líneas se dibujarán en el gráfico actual.
Parámetros:
Precio Mínimo: El precio más bajo para el rango del grid (por ejemplo: 0.82).
Precio Máximo: El precio más alto para el rango del grid (por ejemplo: 1.24).
Número de Grids: Define cuántas líneas quieres entre el precio mínimo y el máximo (por ejemplo: 30).
Estilo de Línea: Elige entre Dotted (líneas discontinuas) o Solid (líneas sólidas).
Ticker: Si deseas dibujar las líneas solo para un ticker específico, ingresa el símbolo del ticker (por ejemplo, ADAUSDT). Si dejas este campo vacío, las líneas se dibujarán en el gráfico actual.
Ejemplo de Uso:
Si estás analizando el par ADAUSDT, puedes escribir ADAUSDT en el campo del ticker para que las líneas solo se dibujen cuando este par esté visible. Si dejas el campo vacío, las líneas se dibujarán en cualquier ticker que tengas en el gráfico.
Descripción en Inglés:
"Grid Lines for Technical Analysis"
This indicator draws grid lines on the price chart, helping to visualize support, resistance, and key levels within a specific price range.
Features:
Min and Max Price: Set the price range for the grid lines to be drawn.
Number of Grids: Choose how many grid lines you want to display on the chart.
Line Color and Thickness: Customize the color and thickness of the grid lines, including the first and last line.
Line Style: Choose between Dotted (dashed lines) or Solid (solid lines) to further customize your view.
Specific Ticker: If desired, you can specify a ticker for the grid lines to only be drawn when that asset is shown. Otherwise, the lines will be drawn on the current chart.
Parameters:
Min Price: The lowest price for the grid range (for example, 0.82).
Max Price: The highest price for the grid range (for example, 1.24).
Number of Grids: Defines how many lines you want between the minimum and maximum price (for example, 30).
Line Style: Choose between Dotted or Solid.
Ticker: To draw the lines only for a specific ticker, enter the symbol of the ticker (for example, ADAUSDT). If left blank, the lines will be drawn on the current ticker.
Usage Example:
If you're analyzing the pair ADAUSDT, you can enter ADAUSDT in the ticker field to draw the lines only when that pair is visible. If you leave the field blank, the lines will be drawn for any ticker currently on the chart.
Trailing Stop with 21 EMA and ATRTrailing Stop with 21 EMA and ATR
This indicator helps traders to dynamically track their trailing stops based on market volatility, ensuring better risk management and optimized exit points.
This Pine Script indicator for TradingView calculates and plots trailing stops based on the 21-period Exponential Moving Average (EMA) and the Average True Range (ATR). The script uses an ATR multiplier to adjust the trailing stops dynamically.
Key Features:
Trailing Stops Calculation:
Long Trailing Stop: Calculated as EMA21 - (ATR * ATR Multiplier)
Short Trailing Stop: Calculated as EMA21 + (ATR * ATR Multiplier)
Customization Options:
Visibility: Toggle the visibility of long and short trailing stops.
Color: Customize the color of the trailing stops for both long and short positions.
Line Width: Adjust the width of the trailing stop lines.
Inputs:
EMA Length: Set the length for the Exponential Moving Average (default is 21).
ATR Length: Set the length for the Average True Range (default is 14).
ATR Multiplier: Set the multiplier for the ATR to adjust the trailing stop distance (default is 1.0).
Refined Machine Learning Adaptive SuperTrend [AlgoAlpha]The Machine Learning Adaptive SuperTrend is an advanced and dynamic trend-following indicator designed to adapt to changing market conditions using machine learning principles. Unlike traditional SuperTrend indicators, this version incorporates K-Means clustering to intelligently classify volatility levels into three categories: High , Medium , and Low . By dynamically adjusting its sensitivity based on real-time market volatility, this indicator provides more accurate and reliable signals for identifying trends and potential reversals.
Key Features:
Dynamic Volatility Clustering :
Uses K-Means clustering to classify volatility into three distinct levels (High, Medium, Low) based on historical ATR (Average True Range) data.
Automatically adapts to evolving market conditions, ensuring robust performance in both trending and ranging markets.
Adaptive SuperTrend :
Combines the classified volatility levels with the classic SuperTrend formula to generate highly responsive trend signals.
The SuperTrend factor and ATR length are dynamically adjusted based on the current volatility cluster, reducing noise and false signals.
Smoothed ATR Calculation :
Employs an EMA-smoothed ATR to filter out erratic price movements and provide a cleaner representation of true market volatility.
Visual Enhancements :
Customizable transparency settings allow you to emphasize strong trends while de-emphasizing weaker ones.
Clear visual cues (bullish/bearish colors and trend direction labels) make it easy to interpret signals at a glance.
Alerts and Notifications :
Includes built-in alerts for trend shifts (bullish/bearish) and volatility changes (High/Medium/Low), helping traders stay ahead of market moves.
Performance Optimization :
Optimized clustering logic ensures efficient execution without exceeding memory limits, even with large datasets.
thecommonsensiv1.0Just testing an Idea of using concepts of KNN and ATR, and RSI into a single inidcator and its more for study purpose for my Quant project
NASDAQ to ILS Converterמכפיל את שער המניה בארצות הברית כפול ההמרה של שקל לדולר צריך לכתוב ידנית את הטיקר ואת שער ההמרה בהצלחה
bollinger average support resistance (satish)this indiacator uses bollinger band moving average support and resistance
AI Bollinger Bands Strategy with SL, TP, and Bars Till CloseThis auto trader uses Bollinger Bands (with adjustable length and deviation) and an optional EMA filter to trigger trades. It enters short trades when the prior candle closes above the upper band and then reverses, and long trades when the prior candle is below the lower band and then turns bullish. Risk is managed via:
Trailing stops activated when price crosses the middle band.
Predefined stop loss and take profit levels.
An option to close trades after a set number of bars.
Additionally, you can toggle the visual display of Bollinger Bands and EMA on the chart.
Bollinger Band Cross with RSI Filter-RJ Best StratgeyBollinger Band Cross with RSI Filter-RJ Best Stratgey
Support and Resistancelookback: This input allows you to specify the number of bars to look back to calculate the support and resistance levels.
support: This is calculated as the lowest low over the specified lookback period.
resistance: This is calculated as the highest high over the specified lookback period.
plot: The support and resistance levels are plotted on the chart with different colors.
bgcolor: This optional feature highlights the support and resistance zones with a semi-transparent background color.
Tomorrow's CPR by Maddycpr A Central Pivot Range (CPR) indicator calculates and displays key support and resistance levels based on the previous trading session's high, low, and close prices. It consists of a Pivot Point (PP), a Bottom CPR (BC), and a Top CPR (TC). Traders use these levels to anticipate potential price movements, identify possible support and resistance areas, and make informed trading decisions. The CPR is often used in conjunction with other technical analysis tools.for tomorrow
5-Min Gainers & Sellers with Keltner/Bollinger BreakoutsI tried to create a 5 minute scalping script that also uses the Kelner Channels but set at the Bollinger 20 internals which should show the sqeeze as well as at leave 1% gain during the 5 minute period