This is my customised indicator 

I want you to act  as a pro trader, and help me understand whether I should consider improvements or leave it the way it is.

//@version=6
indicator("Bias and Levels Dashboard", overlay=true, max_labels_count=500)

// === INPUTS ===
symbolInput = input.symbol("", "Symbol (leave blank for current)")
emaLength = input.int(20, "EMA Length", minval=1)
supportLookback = input.int(50, "Support Lookback Bars", minval=1)
resistanceLookback = input.int(50, "Resistance Lookback Bars", minval=1)
layoutOption = input.string("top_right", "Table Position",  options=["top_right", "top_left", "top_center", "middle_right", "middle_left", "middle_center", "bottom_right", "bottom_left", "bottom_center"])
showWeekly = input.bool(true, "Show Weekly Trend")
showDaily = input.bool(true, "Show Daily Trend")
show4H = input.bool(true, "Show 4H Trend")

// === REQUEST SECURITY ===
sy = (symbolInput == "") ? syminfo.tickerid : symbolInput

// Weekly, Daily, 4H timeframe EMAs and Close
emaWeek = request.security(sy, "W", ta.ema(close, emaLength))
emaDay = request.security(sy, "D", ta.ema(close, emaLength))
ema4h = request.security(sy, "240", ta.ema(close, emaLength))

closeWeek = request.security(sy, "W", close)
closeDay = request.security(sy, "D", close)
close4h = request.security(sy, "240", close)

// Trend determination function
trendDir(price, ema) =>
    price > ema ? "Up" : price < ema ? "Down" : "Flat"

determineTrend(tf, price, ema) =>
    tf ? trendDir(price, ema) : na

// Trends
weeklyTrend = determineTrend(showWeekly, closeWeek, emaWeek)
dailyTrend = determineTrend(showDaily, closeDay, emaDay)
fourHTrend = determineTrend(show4H, close4h, ema4h)

// Multi-TF Rolling Support and Resistance
supportW = request.security(sy, "W", ta.lowest(low, supportLookback))
resistanceW = request.security(sy, "W", ta.highest(high, resistanceLookback))
supportD = request.security(sy, "D", ta.lowest(low, supportLookback))
resistanceD = request.security(sy, "D", ta.highest(high, resistanceLookback))
supportH = request.security(sy, "240", ta.lowest(low, supportLookback))
resistanceH = request.security(sy, "240", ta.highest(high, resistanceLookback))

// === Momentum Indicators ===
macdSrc = request.security(sy, "240", close)
[macdLine, signalLine, macdHist] = ta.macd(macdSrc, 12, 26, 9)
macdHistPrev = macdHist[1]
macdSlope = macdHist > macdHistPrev ? "Up" : macdHist < macdHistPrev ? "Down" : "Flat"
macdColor = macdSlope == "Up" ? color.green : macdSlope == "Down" ? color.red : color.gray

rsiSrc = request.security(sy, "240", close)
rsi = ta.rsi(rsiSrc, 14)
rsiAvg = ta.rma(rsi, 5)
rsiSlope = rsi > rsiAvg ? "Up" : rsi < rsiAvg ? "Down" : "Flat"
rsiColor = rsiSlope == "Up" ? color.green : rsiSlope == "Down" ? color.red : color.gray

// Current Price
currPrice = close

// Bias
bias = (weeklyTrend == "Up" and dailyTrend == "Up" and fourHTrend == "Up") ? "Bullish" :
       (weeklyTrend == "Down" and dailyTrend == "Down" and fourHTrend == "Down") ? "Bearish" : "Neutral"

// Suggested Action
suggestedAction = bias == "Bullish" ? "Watch Breakout" : bias == "Bearish" ? "Caution / Look for Reversal" : "Wait for Clarity"

// === Momentum Watch Summary ===
momentumWatch = (macdSlope == "Up" and rsiSlope == "Up") ? "Strong Momentum" :
                 (macdSlope == "Down" and rsiSlope == "Down") ? "Weak Momentum" : "Mixed Momentum"

// === TABLE (LANDSCAPE MODE WITH TOGGLE POSITION) ===
var table biasTable = table.new(position=layoutOption, columns=13, rows=2, frame_color=color.gray, frame_width=1)

if barstate.islast
    table.cell(biasTable, 0, 0, "Symbol", text_color=color.black, bgcolor=color.silver)
    table.cell(biasTable, 0, 1, syminfo.ticker, text_color=color.black, bgcolor=color.white)

    table.cell(biasTable, 1, 0, "Weekly Trend", bgcolor=#C5D9F1, text_color=color.black)
    table.cell(biasTable, 1, 1, str.tostring(weeklyTrend), text_color=color.black, bgcolor=color.white)

    table.cell(biasTable, 2, 0, "Daily Trend", bgcolor=#C5D9F1, text_color=color.black)
    table.cell(biasTable, 2, 1, str.tostring(dailyTrend), text_color=color.black, bgcolor=color.white)

    table.cell(biasTable, 3, 0, "4H Trend", bgcolor=#C5D9F1, text_color=color.black)
    table.cell(biasTable, 3, 1, str.tostring(fourHTrend), text_color=color.black, bgcolor=color.white)

    table.cell(biasTable, 4, 0, "W/D/4H Support", bgcolor=color.green)
    table.cell(biasTable, 4, 1, str.tostring(supportW, format.mintick) + "/" + str.tostring(supportD, format.mintick) + "/" + str.tostring(supportH, format.mintick))

    table.cell(biasTable, 5, 0, "W/D/4H Resistance", bgcolor=color.red)
    table.cell(biasTable, 5, 1, str.tostring(resistanceW, format.mintick) + "/" + str.tostring(resistanceD, format.mintick) + "/" + str.tostring(resistanceH, format.mintick))

    table.cell(biasTable, 6, 0, "MACD Slope", bgcolor=color.orange)
    table.cell(biasTable, 6, 1, macdSlope, text_color=macdColor)

    table.cell(biasTable, 7, 0, "RSI Slope", bgcolor=color.teal)
    table.cell(biasTable, 7, 1, rsiSlope, text_color=rsiColor)

    table.cell(biasTable, 8, 0, "Bias", bgcolor=color.silver)
    table.cell(biasTable, 8, 1, bias)

    table.cell(biasTable, 9, 0, "Action", bgcolor=color.yellow)
    table.cell(biasTable, 9, 1, suggestedAction)

    table.cell(biasTable, 10, 0, "Momentum Watch", bgcolor=color.purple, text_color=color.white)
    table.cell(biasTable, 10, 1, momentumWatch)

// === OPTIONAL: PLOT LINES ON CHART ===
plot(supportH, color=color.green, title="4H Support")
plot(resistanceH, color=color.red, title="4H Resistance")

// === WEBHOOK ALERT JSON PAYLOAD ===
alert_message = '{"symbol":"' + syminfo.ticker + '","bias":"' + bias + '","momentum":"' + momentumWatch + '","support":' + str.tostring(supportH, format.mintick) + ',"resistance":' + str.tostring(resistanceH, format.mintick) + '}'

// === DAILY ALERT CONDITION ===
triggerCondition = barstate.isconfirmed and timeframe.isdaily
alertcondition(triggerCondition, title="Bias Alert", message="Bias signal alert")


// === FIRE ALERT ===
if triggerCondition
    alert(alert_message, freq=alert.freq_once_per_bar_close)