OPEN-SOURCE SCRIPT
Manuel_Air

//version=6
indicator(title="Manuel_Air", shorttitle="Manuel_Air", overlay=true)
// ====== Layout / Estilo ======
posInput = input.string(defval="Top Right", title="Posición tabla", options=["Top Left","Top Center","Top Right","Middle Left","Middle Center","Middle Right","Bottom Left","Bottom Center","Bottom Right"])
Table_Position = switch posInput
"Top Left" => position.top_left
"Top Center" => position.top_center
"Top Right" => position.top_right
"Middle Left" => position.middle_left
"Middle Center" => position.middle_center
"Middle Right" => position.middle_right
"Bottom Left" => position.bottom_left
"Bottom Center" => position.bottom_center
"Bottom Right" => position.bottom_right
label_size = input.string(defval="Normal", title="Tamaño texto", options=["Tiny","Small","Normal","Large","Huge"])
Tsize = switch label_size
"Tiny" => size.tiny
"Small" => size.small
"Normal" => size.normal
"Large" => size.large
"Huge" => size.huge
// ====== Inputs checklist y nombres personalizables ======
check1 = input.bool(true, "HTF Alignment")
check2 = input.bool(true, "Liquidity Sweep")
check3 = input.bool(true, "Boss + Imbalance")
check4 = input.bool(true, "71% Retracement")
showTradeScore = input.bool(true, "Mostrar Trade Score")
name1 = input.string("HTF Alignment", "Nombre Check 1")
name2 = input.string("Liquidity Sweep", "Nombre Check 2")
name3 = input.string("Boss + Imbalance", "Nombre Check 3")
name4 = input.string("71% Retracement", "Nombre Check 4")
tableTitle = input.string("Checklist 📝", "Título tabla")
headerText = input.string("Manuel_Air", "Texto header")
// ====== Colores personalizables ======
colorChecked = input.color(color.green, "Color ✔")
colorUnchecked = input.color(color.red, "Color ✘")
colorHeader = input.color(color.black, "Color Header")
colorRow = input.color(color.new(color.black, 85), "Color Filas")
colorTradeHigh = input.color(color.green, "Color Trade Score Alto")
colorTradeMid = input.color(color.yellow, "Color Trade Score Medio")
colorTradeLow = input.color(color.red, "Color Trade Score Bajo")
colorText = input.color(color.white, "Color texto filas")
// ====== Preparar checklist ======
checks = array.new_bool()
names = array.new_string()
array.push(checks, check1)
array.push(checks, check2)
array.push(checks, check3)
array.push(checks, check4)
array.push(names, name1)
array.push(names, name2)
array.push(names, name3)
array.push(names, name4)
numChecks = array.size(checks)
// ====== Calcular Trade Score ======
checkedRows = 0
for i = 0 to numChecks - 1
checkedRows += array.get(checks, i) ? 1 : 0
tradeScore = math.round((checkedRows / numChecks) * 100)
tradeScoreColor = tradeScore >= 75 ? colorTradeHigh : tradeScore >= 50 ? colorTradeMid : colorTradeLow
// ====== Definir filas totales ======
totalRows = 1 + 1 + numChecks + (showTradeScore ? 1 : 0) // Header + título checklist + checks + Trade Score
var table myTable = table.new(position = Table_Position, columns = 2, rows = totalRows, border_width = 1, border_color = color.gray)
if barstate.islast
rowIndex = 0
// Header (merge 2 columnas)
table.cell(table_id = myTable, column = 0, row = rowIndex, text = headerText, text_size = Tsize, text_color = colorText, bgcolor = colorHeader)
table.merge_cells(table_id = myTable, start_column = 0, start_row = rowIndex, end_column = 1, end_row = rowIndex)
rowIndex += 1
// Título checklist (merge)
table.cell(table_id = myTable, column = 0, row = rowIndex, text = tableTitle, text_size = Tsize, text_color = colorText, bgcolor = colorHeader)
table.merge_cells(table_id = myTable, start_column = 0, start_row = rowIndex, end_column = 1, end_row = rowIndex)
rowIndex += 1
// Filas checklist
for i = 0 to numChecks - 1
checked = array.get(checks, i)
name = array.get(names, i)
table.cell(table_id = myTable, column = 0, row = rowIndex, text = (checked ? "✔" : "✘"), text_size = Tsize, text_color = (checked ? colorChecked : colorUnchecked), bgcolor = colorRow)
table.cell(table_id = myTable, column = 1, row = rowIndex, text = name, text_size = Tsize, text_color = colorText, bgcolor = colorRow)
rowIndex += 1
// Trade Score
if showTradeScore
table.cell(table_id = myTable, column = 0, row = rowIndex, text = str.tostring(tradeScore) + "%", text_size = Tsize, text_color = tradeScoreColor, bgcolor = colorRow)
table.cell(table_id = myTable, column = 1, row = rowIndex, text = "Trade Score", text_size = Tsize, text_color = colorText, bgcolor = colorRow)
indicator(title="Manuel_Air", shorttitle="Manuel_Air", overlay=true)
// ====== Layout / Estilo ======
posInput = input.string(defval="Top Right", title="Posición tabla", options=["Top Left","Top Center","Top Right","Middle Left","Middle Center","Middle Right","Bottom Left","Bottom Center","Bottom Right"])
Table_Position = switch posInput
"Top Left" => position.top_left
"Top Center" => position.top_center
"Top Right" => position.top_right
"Middle Left" => position.middle_left
"Middle Center" => position.middle_center
"Middle Right" => position.middle_right
"Bottom Left" => position.bottom_left
"Bottom Center" => position.bottom_center
"Bottom Right" => position.bottom_right
label_size = input.string(defval="Normal", title="Tamaño texto", options=["Tiny","Small","Normal","Large","Huge"])
Tsize = switch label_size
"Tiny" => size.tiny
"Small" => size.small
"Normal" => size.normal
"Large" => size.large
"Huge" => size.huge
// ====== Inputs checklist y nombres personalizables ======
check1 = input.bool(true, "HTF Alignment")
check2 = input.bool(true, "Liquidity Sweep")
check3 = input.bool(true, "Boss + Imbalance")
check4 = input.bool(true, "71% Retracement")
showTradeScore = input.bool(true, "Mostrar Trade Score")
name1 = input.string("HTF Alignment", "Nombre Check 1")
name2 = input.string("Liquidity Sweep", "Nombre Check 2")
name3 = input.string("Boss + Imbalance", "Nombre Check 3")
name4 = input.string("71% Retracement", "Nombre Check 4")
tableTitle = input.string("Checklist 📝", "Título tabla")
headerText = input.string("Manuel_Air", "Texto header")
// ====== Colores personalizables ======
colorChecked = input.color(color.green, "Color ✔")
colorUnchecked = input.color(color.red, "Color ✘")
colorHeader = input.color(color.black, "Color Header")
colorRow = input.color(color.new(color.black, 85), "Color Filas")
colorTradeHigh = input.color(color.green, "Color Trade Score Alto")
colorTradeMid = input.color(color.yellow, "Color Trade Score Medio")
colorTradeLow = input.color(color.red, "Color Trade Score Bajo")
colorText = input.color(color.white, "Color texto filas")
// ====== Preparar checklist ======
checks = array.new_bool()
names = array.new_string()
array.push(checks, check1)
array.push(checks, check2)
array.push(checks, check3)
array.push(checks, check4)
array.push(names, name1)
array.push(names, name2)
array.push(names, name3)
array.push(names, name4)
numChecks = array.size(checks)
// ====== Calcular Trade Score ======
checkedRows = 0
for i = 0 to numChecks - 1
checkedRows += array.get(checks, i) ? 1 : 0
tradeScore = math.round((checkedRows / numChecks) * 100)
tradeScoreColor = tradeScore >= 75 ? colorTradeHigh : tradeScore >= 50 ? colorTradeMid : colorTradeLow
// ====== Definir filas totales ======
totalRows = 1 + 1 + numChecks + (showTradeScore ? 1 : 0) // Header + título checklist + checks + Trade Score
var table myTable = table.new(position = Table_Position, columns = 2, rows = totalRows, border_width = 1, border_color = color.gray)
if barstate.islast
rowIndex = 0
// Header (merge 2 columnas)
table.cell(table_id = myTable, column = 0, row = rowIndex, text = headerText, text_size = Tsize, text_color = colorText, bgcolor = colorHeader)
table.merge_cells(table_id = myTable, start_column = 0, start_row = rowIndex, end_column = 1, end_row = rowIndex)
rowIndex += 1
// Título checklist (merge)
table.cell(table_id = myTable, column = 0, row = rowIndex, text = tableTitle, text_size = Tsize, text_color = colorText, bgcolor = colorHeader)
table.merge_cells(table_id = myTable, start_column = 0, start_row = rowIndex, end_column = 1, end_row = rowIndex)
rowIndex += 1
// Filas checklist
for i = 0 to numChecks - 1
checked = array.get(checks, i)
name = array.get(names, i)
table.cell(table_id = myTable, column = 0, row = rowIndex, text = (checked ? "✔" : "✘"), text_size = Tsize, text_color = (checked ? colorChecked : colorUnchecked), bgcolor = colorRow)
table.cell(table_id = myTable, column = 1, row = rowIndex, text = name, text_size = Tsize, text_color = colorText, bgcolor = colorRow)
rowIndex += 1
// Trade Score
if showTradeScore
table.cell(table_id = myTable, column = 0, row = rowIndex, text = str.tostring(tradeScore) + "%", text_size = Tsize, text_color = tradeScoreColor, bgcolor = colorRow)
table.cell(table_id = myTable, column = 1, row = rowIndex, text = "Trade Score", text_size = Tsize, text_color = colorText, bgcolor = colorRow)
סקריפט קוד פתוח
ברוח TradingView אמיתית, היוצר של הסקריפט הזה הפך אותו לקוד פתוח, כך שסוחרים יכולים לבדוק ולאמת את הפונקציונליות שלו. כל הכבוד למחבר! למרות שאתה יכול להשתמש בו בחינם, זכור שפרסום מחדש של הקוד כפוף לכללי הבית שלנו.
כתב ויתור
המידע והפרסומים אינם אמורים להיות, ואינם מהווים, עצות פיננסיות, השקעות, מסחר או סוגים אחרים של עצות או המלצות שסופקו או מאושרים על ידי TradingView. קרא עוד בתנאים וההגבלות.
סקריפט קוד פתוח
ברוח TradingView אמיתית, היוצר של הסקריפט הזה הפך אותו לקוד פתוח, כך שסוחרים יכולים לבדוק ולאמת את הפונקציונליות שלו. כל הכבוד למחבר! למרות שאתה יכול להשתמש בו בחינם, זכור שפרסום מחדש של הקוד כפוף לכללי הבית שלנו.
כתב ויתור
המידע והפרסומים אינם אמורים להיות, ואינם מהווים, עצות פיננסיות, השקעות, מסחר או סוגים אחרים של עצות או המלצות שסופקו או מאושרים על ידי TradingView. קרא עוד בתנאים וההגבלות.