//@version=5
indicator("Mancini Levels", shorttitle="Mancini Levels", overlay=true)
// User inputs for line properties (Modified Order)
majorResistanceStyleInput = input.string("Solid", "Majoror Resistance Style", options=["Solid", "Dotted"], inline="01")
majorResistanceColor = input.color(color.red, "Color", inline="01")
majorResistanceWidth = input.int(3, "Width", minval=1, inline="01")
minorResistanceStyleInput = input.string("Solid", "Minoror Resistance Style", options=["Solid", "Dotted"], inline="02")
minorResistanceColor = input.color(color.red, "Color", inline="02")
minorResistanceWidth = input.int(2, "Width", minval=1, inline="02")
minorSupportStyleInput = input.string("Solid", "Minoror Support Style", options=["Solid", "Dotted"], inline="03")
minorSupportColor = input.color(color.green, "Color", inline="03")
minorSupportWidth = input.int(2, "Width", minval=1, inline="03")
majorSupportStyleInput = input.string("Solid", "Majoror Support Style", options=["Solid", "Dotted"], inline="04")
majorSupportColor = input.color(color.green, "Color", inline="04")
majorSupportWidth = input.int(3, "Width", minval=1, inline="04")
// Define line styles based on user inputs
majorResistanceStyle = majorResistanceStyleInput == "Dotted" ? line.style_dotted : line.style_solid
minorResistanceStyle = minorResistanceStyleInput == "Dotted" ? line.style_dotted : line.style_solid
minorSupportStyle = minorSupportStyleInput == "Dotted" ? line.style_dotted : line.style_solid
majorSupportStyle = majorSupportStyleInput == "Dotted" ? line.style_dotted : line.style_solid
// Create inputs for LINE 1 Enable, Price, and Type
enableInput1 = input.bool(false, "Enable", inline="05")
priceInput1 = input.float(0.0, "Price", step=0.01, inline="05")
typeInput1 = input.string("Major Resistance", "Type", options=["Major Resistance", "Resistance", "Support", "Major Support"], inline="05")
// Create inputs for LINE 2 Enable, Price, and Type
enableInput2 = input.bool(false, "Enable", inline="06")
priceInput2 = input.float(0.0, "Price", step=0.01, inline="06")
typeInput2 = input.string("Major Resistance", "Type", options=["Major Resistance", "Resistance", "Support", "Major Support"], inline="06")
// Create inputs for LINE 3 Enable, Price, and Type
enableInput3= input.bool(false, "Enable", inline="07")
priceInput3 = input.float(0.0, "Price", step=0.01, inline="07")
typeInput3 = input.string("Major Resistance", "Type", options=["Major Resistance", "Resistance", "Support", "Major Support"], inline="07")
// Create inputs for LINE 4 Enable, Price, and Type
enableInput4= input.bool(false, "Enable", inline="08")
priceInput4 = input.float(0.0, "Price", step=0.01, inline="08")
typeInput4 = input.string("Major Resistance", "Type", options=["Major Resistance", "Resistance", "Support", "Major Support"], inline="08")
// Create inputs for LINE 5 Enable, Price, and Type
enableInput5= input.bool(false, "Enable", inline="09")
priceInput5 = input.float(0.0, "Price", step=0.01, inline="09")
typeInput5 = input.string("Major Resistance", "Type", options=["Major Resistance", "Resistance", "Support", "Major Support"], inline="09")
// Create inputs for LINE 6 Enable, Price, and Type
enableInput6= input.bool(false, "Enable", inline="10")
priceInput6 = input.float(0.0, "Price", step=0.01, inline="10")
typeInput6 = input.string("Major Resistance", "Type", options=["Major Resistance", "Resistance", "Support", "Major Support"], inline="10")
// Create inputs for LINE 7 Enable, Price, and Type
enableInput7= input.bool(false, "Enable", inline="11")
priceInput7 = input.float(0.0, "Price", step=0.01, inline="11")
typeInput7 = input.string("Major Resistance", "Type", options=["Major Resistance", "Resistance", "Support", "Major Support"], inline="11")
// Create inputs for LINE 8 Enable, Price, and Type
enableInput8= input.bool(false, "Enable", inline="12")
priceInput8 = input.float(0.0, "Price", step=0.01, inline="12")
typeInput8 = input.string("Major Resistance", "Type", options=["Major Resistance", "Resistance", "Support", "Major Support"], inline="12")
// Create inputs for LINE 9 Enable, Price, and Type
enableInput9= input.bool(false, "Enable", inline="13")
priceInput9 = input.float(0.0, "Price", step=0.01, inline="13")
typeInput9 = input.string("Major Resistance", "Type", options=["Major Resistance", "Resistance", "Support", "Major Support"], inline="13")
// Create inputs for LINE 10 Enable, Price, and Type
enableInput10 = input.bool(false, "Enable", inline="14")
priceInput10 = input.float(0.0, "Price", step=0.01, inline="14")
typeInput10 = input.string("Major Resistance", "Type", options=["Major Resistance", "Resistance", "Support", "Major Support"], inline="14")
// Create inputs for LINE 11 Enable, Price, and Type
enableInput11 = input.bool(false, "Enable", inline="15")
priceInput11 = input.float(0.0, "Price", step=0.01, inline="15")
typeInput11 = input.string("Major Resistance", "Type", options=["Major Resistance", "Resistance", "Support", "Major Support"], inline="15")
// Create inputs for LINE 12 Enable, Price, and Type
enableInput12 = input.bool(false, "Enable", inline="16")
priceInput12 = input.float(0.0, "Price", step=0.01, inline="16")
typeInput12 = input.string("Major Resistance", "Type", options=["Major Resistance", "Resistance", "Support", "Major Support"], inline="16")
// Create inputs for LINE 13 Enable, Price, and Type
enableInput13 = input.bool(false, "Enable", inline="17")
priceInput13 = input.float(0.0, "Price", step=0.01, inline="17")
typeInput13 = input.string("Major Resistance", "Type", options=["Major Resistance", "Resistance", "Support", "Major Support"], inline="17")
// Create inputs for LINE 14 Enable, Price, and Type
enableInput14 = input.bool(false, "Enable", inline="18")
priceInput14 = input.float(0.0, "Price", step=0.01, inline="18")
typeInput14 = input.string("Major Resistance", "Type", options=["Major Resistance", "Resistance", "Support", "Major Support"], inline="18")
// Create inputs for LINE 15 Enable, Price, and Type
enableInput15 = input.bool(false, "Enable", inline="19")
priceInput15 = input.float(0.0, "Price", step=0.01, inline="19")
typeInput15 = input.string("Major Resistance", "Type", options=["Major Resistance", "Resistance", "Support", "Major Support"], inline="19")
// Create inputs for LINE 16 Enable, Price, and Type
enableInput16 = input.bool(false, "Enable", inline="20")
priceInput16 = input.float(0.0, "Price", step=0.01, inline="20")
typeInput16 = input.string("Major Resistance", "Type", options=["Major Resistance", "Resistance", "Support", "Major Support"], inline="20")
// Function to plot a line based on inputs
plotLine(enable, price, lineType) =>
if (enable and lineType == "Major Resistance")
line.new(x1=bar_index[1], y1=price, x2=bar_index + 100, y2=price, width=majorResistanceWidth, color=majorResistanceColor, style=majorResistanceStyle)
else if (enable and lineType == "Resistance")
line.new(x1=bar_index[1], y1=price, x2=bar_index + 100, y2=price, width=minorResistanceWidth, color=minorResistanceColor, style=minorResistanceStyle)
else if (enable and lineType == "Support")
line.new(x1=bar_index[1], y1=price, x2=bar_index + 100, y2=price, width=minorSupportWidth, color=minorSupportColor, style=minorSupportStyle)
else if (enable and lineType == "Major Support")
line.new(x1=bar_index[1], y1=price, x2=bar_index + 100, y2=price, width=majorSupportWidth, color=majorSupportColor, style=majorSupportStyle)
// Function to display a label at a specific price with a specified color
plotPriceLabel(enable, price, lineType) =>
if (enable and lineType == "Major Resistance")
label.new(x=bar_index, y=price, text="", color=majorResistanceColor, style=label.style_label_left, textcolor=color.white, size=size.small, yloc=yloc.price)
else if (enable and lineType == "Resistance")
label.new(x=bar_index, y=price, text="", color=minorResistanceColor, style=label.style_label_left, textcolor=color.white, size=size.small, yloc=yloc.price)
else if (enable and lineType == "Support")
label.new(x=bar_index, y=price, text="", color=minorSupportColor, style=label.style_label_left, textcolor=color.white, size=size.small, yloc=yloc.price)
else if (enable and lineType == "Major Support")
label.new(x=bar_index, y=price, text="", color=majorSupportColor, style=label.style_label_left, textcolor=color.white, size=size.small, yloc=yloc.price)
// Plot lines based on inputs
plotLine(enableInput1, priceInput1, typeInput1)
plotLine(enableInput2, priceInput2, typeInput2)
plotLine(enableInput3, priceInput3, typeInput3)
plotLine(enableInput4, priceInput4, typeInput4)
plotLine(enableInput5, priceInput5, typeInput5)
plotLine(enableInput6, priceInput6, typeInput6)
plotLine(enableInput7, priceInput7, typeInput7)
plotLine(enableInput8, priceInput8, typeInput8)
plotLine(enableInput9, priceInput9, typeInput9)
plotLine(enableInput10, priceInput10, typeInput10)
plotLine(enableInput11, priceInput11, typeInput11)
plotLine(enableInput12, priceInput12, typeInput12)
plotLine(enableInput13, priceInput13, typeInput13)
plotLine(enableInput14, priceInput14, typeInput14)
plotLine(enableInput15, priceInput15, typeInput15)
plotLine(enableInput16, priceInput16, typeInput16)