Tsar wrote: Fri Feb 06, 2026 8:17 pm MTF Key Levels [Mxwll]
Mxwll MTF S/R :
The Mxwll MTF Support & Resistance indicator is designed to identify crucial Support and Resistance Levels across Multiple Timeframes.
By considering Various Timeframes, this indicator provides a more comprehensive view of the Market's underlying structure.
It allows Traders to extend lines in Various configurations and covers Timeframes ranging from 5 Minutes to Weekly.
By considering Price Action [PA] across Multiple Timeframes, the indicator provides a more comprehensive understanding of the Market's Supply and Demand dynamics.
Mxwll MTF Support & Resistance.jpg
Source Code :
Code: Select all
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © MxwllCapital // //@version=5 indicator("Mxwll MTF S/R", overlay = true, max_lines_count = 500) extend = input.string(defval = "Both", options = ["Left", "Right", "Both", "None"], title = "Extend Lines") style = input.string(defval = "Dotted", title = "Line Style", options = ["Dotted", "Solid", "Dashed"]) min5Show = input.bool (title = "5 Min Levels ", defval = true,group = "S/R Levels", inline = "40") min5col = input.color (title = "", defval = color.blue , group = "S/R Levels", inline = "40") min15Show = input.bool (title = "15 Min Levels", defval = true ,group = "S/R Levels", inline = "40") min15col = input.color (title = "", defval = color.yellow , group = "S/R Levels", inline = "40") min30Show = input.bool (title = "30 Min Levels", defval = true ,group = "S/R Levels", inline = "42") min30col = input.color (title = "", defval = color.orange , group = "S/R Levels", inline = "42") min60Show = input.bool (title = "1 Hour Levels", defval = true, group = "S/R Levels", inline = "42") min60col = input.color (title = "", defval = color.lime, group = "S/R Levels", inline = "42") min240Show = input.bool (title = "4 Hour Levels", defval = true, group = "S/R Levels", inline = "44") min240col = input.color (title = "", defval = color.white, group = "S/R Levels", inline = "44") min1440Show = input.bool (title = "Daily Levels  ", defval = true, group = "S/R Levels", inline = "44") min1440col = input.color (title = "", defval = color.purple, group = "S/R Levels", inline = "44") minWShow = input.bool (title = "Weekly Levels", defval = true, group = "S/R Levels", inline = "46") minWcol = input.color (title = "", defval = color.aqua, group = "S/R Levels", inline = "46") finStyle = switch style "Dotted" => line.style_dotted "Dashed" => line.style_dashed => line.style_solid type priceValues float higH float loW int hiIndex int loIndex var pv = matrix.new<priceValues>(7, 4) if barstate.isfirst for x = 0 to 6 for i = 0 to 3 value = switch i == 0 => priceValues.new(higH = 0 ) i == 1 => priceValues.new(loW = 1e8) i == 2 => priceValues.new(hiIndex = 0 ) i == 3 => priceValues.new(loIndex = 0 ) pv.set(x, i, value), pv.set(x, i, value) pv.set(x, i, value), pv.set(x, i, value) method determine (float id, int A, int B, float C) => switch id == C true => A => B method append (matrix <priceValues> id, int length, int row) => if barstate.islastconfirmedhistory for i = 0 to length id.set(row, 0, priceValues.new(higH = math.max(math.avg(close[i], high[i]), nz(id.get(row, 0).higH, 0)))), id.set(row, 2, priceValues.new(hiIndex = math.avg(close[i], high[i]).determine(math.round(time[i]), nz(id.get(row, 2).hiIndex, 0), id.get(row, 0).higH))) id.set(row, 1, priceValues.new(loW = math.min(math.avg(close[i], low[i] ), nz(id.get(row, 1).loW, 1e8)))), id.set(row, 3, priceValues.new(loIndex = math.avg(close[i], low[i]).determine(math.round(time[i]), nz(id.get(row, 3).loIndex, 0), id.get(row, 1).loW))) req(int length, int row) => pv .append(length, row) loW = pv.get (row, 1).loW higH = pv.get (row, 0).higH hiIndex = pv.get (row, 2).hiIndex loIndex = pv.get (row, 3).loIndex [loW, higH, hiIndex, loIndex] [min5S, min5R, min5Rtime, min5Stime] = request.security(syminfo.tickerid, "5", req(60, 0), lookahead = barmerge.lookahead_on) [min15S, min15R, min15Rtime, min15Stime] = request.security(syminfo.tickerid, "15", req(60, 1), lookahead = barmerge.lookahead_on) [min30S, min30R, min30Rtime, min30Stime] = request.security(syminfo.tickerid, "30", req(60, 2), lookahead = barmerge.lookahead_on) [min60S, min60R, min60Rtime, min60Stime] = request.security(syminfo.tickerid, "60", req(60, 3), lookahead = barmerge.lookahead_on) [min240S, min240R, min240Rtime, min240Stime] = request.security(syminfo.tickerid, "240", req(30, 4), lookahead = barmerge.lookahead_on) [min1440S, min1440R, min1440Rtime, min1440Stime] = request.security(syminfo.tickerid, "1440", req(30, 5), lookahead = barmerge.lookahead_on) [minWS, minWR, minWRtime, minWStime] = request.security(syminfo.tickerid, "W", req(15, 6), lookahead = barmerge.lookahead_on) ex = switch extend "None" => extend.none "Left" => extend.left "Right" => extend.right "Both" => extend.both type objects line support line resistance var obj = matrix.new<objects>(7, 2) method condS (float id) => not na(id) and id != 1e8 method condR (float id) => not na(id) and id != 0 method lineSetSupport(matrix <objects> id, int row, int column, line ) => if not na(id.get(row, column)) id.get(row, column).support.delete() id.set(row, column, objects.new( support = line )) method lineSetResistance(matrix <objects> id, int row, int column, line ) => if not na(obj.get(row, column)) obj.get(row, column).resistance.delete() id.set(row, column, objects.new( resistance = line )) if barstate.islast if min5Show if min5S.condS() obj.lineSetSupport( 0, 0, line.new( min5Stime, min5S, last_bar_time + (time - time[5]), min5S, extend = ex, xloc = xloc.bar_time, width = 1, style = finStyle, color = min5col )) if min5R.condR() obj.lineSetResistance(0, 1, line.new(min5Rtime, min5R, last_bar_time + (time - time[5]), min5R, extend = ex, xloc = xloc.bar_time, width = 1, style = finStyle, color = min5col )) if min15Show if min15S.condS() obj.lineSetSupport(1, 0, line.new(min15Stime, min15S, last_bar_time+ (time - time[5]), min15S, extend = ex, xloc = xloc.bar_time, color = min15col, width = 1, style = finStyle )) if min15R.condR() obj.lineSetResistance(1, 1, line.new(min15Rtime, min15R, last_bar_time+ (time - time[5]), min15R, extend = ex, xloc = xloc.bar_time, color = min15col, width = 1, style = finStyle )) if min30Show if min30S.condS() obj.lineSetSupport(2, 0, line.new(min30Stime, min30S, last_bar_time+ (time - time[5]), min30S, extend = ex, xloc = xloc.bar_time, color = min30col, style = finStyle )) if min30R.condS() obj.lineSetResistance(2, 1, line.new(min30Rtime, min30R, last_bar_time+ (time - time[5]), min30R, extend = ex, xloc = xloc.bar_time, color = min30col, style = finStyle )) if min60Show if min60S.condS() obj.lineSetSupport(3, 0, line.new(min60Stime, min60S, last_bar_time+ (time - time[5]), min60S, extend = ex, xloc = xloc.bar_time, color = min60col, style = finStyle )) if min60R.condR() obj.lineSetResistance(3, 1, line.new(min60Rtime, min60R, last_bar_time+ (time - time[5]), min60R, extend = ex, xloc = xloc.bar_time, color = min60col, style = finStyle )) if min240Show if min240S.condS() obj.lineSetSupport(4, 0, line.new(min240Stime, min240S, last_bar_time+ (time - time[5]), min240S, extend = ex, xloc = xloc.bar_time, color = min240col, style = finStyle )) if min240R.condR() obj.lineSetResistance(4, 1, line.new(min240Rtime, min240R, last_bar_time+ (time - time[5]), min240R, extend = ex, xloc = xloc.bar_time, color = min240col, style = finStyle )) if min1440Show if min1440S.condS() obj.lineSetSupport(5, 0, line.new(min1440Stime, min1440S, last_bar_time+ (time - time[5]), min1440S, extend = ex, xloc = xloc.bar_time, color = min1440col, style = finStyle )) if min1440R.condR() obj.lineSetResistance(5, 1, line.new(min1440Rtime, min1440R, last_bar_time+ (time - time[5]), min1440R, extend = ex, xloc = xloc.bar_time, color = min1440col, style = finStyle )) if minWShow if minWS.condS() obj.lineSetSupport(6, 0, line.new(minWStime, minWS, last_bar_time+ (time - time[5]), minWS, extend = ex, xloc = xloc.bar_time, color = minWcol, style = finStyle )) if minWR.condR() obj.lineSetResistance(6, 1, line.new(minWRtime, minWR, last_bar_time+ (time - time[5]), minWR, extend = ex, xloc = xloc.bar_time, color = minWcol, style = finStyle )) res = array.from("5 Min: ♦", "15 Min: ♦", "30 Min: ♦", "1 Hour: ♦", "4 Hour: ♦", "Daily: ♦", "Weekly: ♦") resCol = array.from (min5col ,min15col ,min30col ,min60col ,min240col ,min1440col ,minWcol) valS = array.from(min5S, min15S, min30S, min60S, min240S, min1440S, minWS) valR = array.from(min5R, min15R, min30R, min60R, min240R, min1440R, minWR) var table tab = table.new(position.bottom_right, 10, 10, bgcolor = #20222C, border_color = #363843, frame_color = #363843, border_width = 1, frame_width = 1 ) tab.cell(1, 0, "Resolution", text_color = color.white), tab.cell(2, 0, "Support", text_color = color.white), tab.cell(3, 0, "Resistance", text_color = color.white) for i = 0 to 6 tab.cell(1, i + 1, text = res.get(i), text_halign = text.align_right, text_size = size.small, text_color = resCol.get(i)) finS = switch valS.get(i).condS() true => str.tostring(valS.get(i), format.mintick) => "Calculating" finR = switch valR.get(i).condR() true => str.tostring(valR.get(i), format.mintick) => "Calculating" tab.cell(2, i + 1, text = finS, text_size = size.small, text_color = resCol.get(i)) tab.cell(3, i + 1, text = finR, text_size = size.small, text_color = resCol.get(i)) alertcondition(ta.crossover(high, min5R), "5-Min Resistance Crossover", "5-Min Resistance Crossover") alertcondition(ta.crossunder(low, min5S), "5-Min Support Crossunder", "5-Min Support Crossunder") alertcondition(ta.crossover(high, min15R), "15-Min Resistance Crossover", "15-Min Resistance Crossover") alertcondition(ta.crossunder(low, min15S), "15-Min Support Crossunder", "15-Min Support Crossunder") alertcondition(ta.crossover(high, min30R), "30-Min Resistance Crossover", "30-Min Resistance Crossover") alertcondition(ta.crossunder(low, min30S), "30-Min Support Crossunder", "30-Min Support Crossunder") alertcondition(ta.crossover(high, min60R), "1-Hour Resistance Crossover", "1-Hour Resistance Crossover") alertcondition(ta.crossunder(low, min60S), "1-Hour Support Crossunder", "1-Hour Support Crossunder") alertcondition(ta.crossover(high, min240R), "4-Hour Resistance Crossover", "4-Hour Resistance Crossover") alertcondition(ta.crossunder(low, min240S), "4-Hour Support Crossunder", "4-Hour Support Crossunder") alertcondition(ta.crossover(high, min1440R), "1-Day Resistance Crossover", "1-Day Resistance Crossover") alertcondition(ta.crossunder(low, min1440S), "1-Day Support Crossunder", "1-Day Support Crossunder") alertcondition(ta.crossover(high, minWR), "1-Week Resistance Crossover", "1-Week Resistance Crossover") alertcondition(ta.crossunder(low, minWS), "1-Week Support Crossunder", "1-Week Support Crossunder")
** LINK Explaint in :
https://in.tradingview.com/script/qfNwt ... vels-Mxwll
Already Converted TradingView Indicator to MT5 Indicator
There are 2 Benefit values obtained from this indicator :
1. To maintain Chart Screen cleanliness, the Coders didn't Add Time frames & the Price values on the Chart.
But Replace it with ; if you direct the Arrow of the Mice, you will get the Data.
2. Available Options for the (Dot) Lines Width -
to the Left or Right / Full Screen & Coverage of certain Areas only (as in the Screen shoot shown in Posted)
Regarding the Price Value stated in the BOX, there is a Little Difference with the (Dot) Lines on the Chart due to the Additional SPREAD value's.
I tested use MetaTrader 5 build 5577 - Work Well and the Signal is Good Responded.
And Compile used MetaEditor 5 build 5577 - Not found any Error and any Warning.
Enjoy...
* Credits for cryptoking as Coder.