Indicator · Pine Script v6 · On the chart

JCO Previous DWM + Midnight NY

by jcornierfra· code credited to jcornier

This indicator overlays horizontal lines on the price chart for the high and low of the previous day, week and month, plus the mid-range of the previous day.

View on GitHub

Repaints

GitHub stars1on the repository
Pine versionv6current
Lines of code379
Settings29inputs
LicenceNone statedfile: MPL-2.0
Last update7 months ago26 Mar 2026

Add It to Your TradingView Chart

  1. 1Copy the scriptPress Copy script above, or the copy button on the code below.
  2. 2Open the Pine EditorOpen a TradingView chart and choose Pine Editor at the bottom of the screen.
  3. 3Paste over the templateCreate a new indicator, select all of the template text and paste. Press Save and give it a name.
  4. 4Add it to the chartPress Add to chart, then adjust the settings with the gear icon next to its name.

Source Code

379 lines of Pine Script v6 from Indicator_JCO_Previous_DWM_MidnightNY.pine, published under MPL-2.0 (file header). Keep the author's credit and licence lines when you reuse it.

Indicator_JCO_Previous_DWM_MidnightNY.pine
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © jcornier
//
// Version: 1.2.0
// GitHub: https://github.com/jcornierfra/TradingView_Indicator_JCO_Previous_DWM_MidnightNY
//
// Description: Displays Previous Day/Week/Month High/Low levels, Daily Mid Range,
//              and Midnight NY Open with customizable parameters.

//@version=6
indicator("JCO Previous DWM + Midnight NY", overlay=true, max_lines_count=500)

// ══════════════════════════════════════════════════════════════════════════════
// TIMEZONE OPTIONS
// ══════════════════════════════════════════════════════════════════════════════
var TZ_NEW_YORK     = "America/New_York"
var TZ_CHICAGO      = "America/Chicago"
var TZ_LOS_ANGELES  = "America/Los_Angeles"
var TZ_LONDON       = "Europe/London"
var TZ_PARIS        = "Europe/Paris"
var TZ_BERLIN       = "Europe/Berlin"
var TZ_TOKYO        = "Asia/Tokyo"
var TZ_HONG_KONG    = "Asia/Hong_Kong"
var TZ_SYDNEY       = "Australia/Sydney"
var TZ_UTC          = "UTC"

timezoneToString(string tz) =>
    switch tz
        "New York"    => TZ_NEW_YORK
        "Chicago"     => TZ_CHICAGO
        "Los Angeles" => TZ_LOS_ANGELES
        "London"      => TZ_LONDON
        "Paris"       => TZ_PARIS
        "Berlin"      => TZ_BERLIN
        "Tokyo"       => TZ_TOKYO
        "Hong Kong"   => TZ_HONG_KONG
        "Sydney"      => TZ_SYDNEY
        "UTC"         => TZ_UTC
        => TZ_NEW_YORK

// ══════════════════════════════════════════════════════════════════════════════
// INPUTS - PREVIOUS DAILY
// ══════════════════════════════════════════════════════════════════════════════
grpDaily = "══════ Previous Daily ══════"
i_showDaily      = input.bool(true, "Show Daily Lines", group=grpDaily)
i_dailyHighColor = input.color(color.green, "High Color", group=grpDaily)
i_dailyLowColor  = input.color(color.green, "Low Color", group=grpDaily)
i_dailyWidth     = input.int(1, "Line Width (High/Low)", minval=1, maxval=5, group=grpDaily)
i_dailyStyle     = input.string("Solid", "Line Style (High/Low)", options=["Solid", "Dashed", "Dotted"], group=grpDaily)
i_dailyMidColor  = input.color(color.gray, "Mid Color", group=grpDaily)
i_dailyMidWidth  = input.int(1, "Mid Line Width", minval=1, maxval=5, group=grpDaily)
i_dailyMidStyle  = input.string("Dashed", "Mid Line Style", options=["Solid", "Dashed", "Dotted"], group=grpDaily)

// ══════════════════════════════════════════════════════════════════════════════
// INPUTS - PREVIOUS WEEKLY
// ══════════════════════════════════════════════════════════════════════════════
grpWeekly = "══════ Previous Weekly ══════"
i_showWeekly      = input.bool(true, "Show Weekly Lines", group=grpWeekly)
i_weeklyHighColor = input.color(color.orange, "High Color", group=grpWeekly)
i_weeklyLowColor  = input.color(color.orange, "Low Color", group=grpWeekly)
i_weeklyWidth     = input.int(1, "Line Width", minval=1, maxval=5, group=grpWeekly)
i_weeklyStyle     = input.string("Solid", "Line Style", options=["Solid", "Dashed", "Dotted"], group=grpWeekly)

// ══════════════════════════════════════════════════════════════════════════════
// INPUTS - PREVIOUS MONTHLY
// ══════════════════════════════════════════════════════════════════════════════
grpMonthly = "══════ Previous Monthly ══════"
i_showMonthly      = input.bool(true, "Show Monthly Lines", group=grpMonthly)
i_monthlyHighColor = input.color(color.purple, "High Color", group=grpMonthly)
i_monthlyLowColor  = input.color(color.purple, "Low Color", group=grpMonthly)
i_monthlyWidth     = input.int(1, "Line Width", minval=1, maxval=5, group=grpMonthly)
i_monthlyStyle     = input.string("Solid", "Line Style", options=["Solid", "Dashed", "Dotted"], group=grpMonthly)

// ══════════════════════════════════════════════════════════════════════════════
// INPUTS - MIDNIGHT OPEN
// ══════════════════════════════════════════════════════════════════════════════
grpMidnight = "══════ Midnight Open ══════"
i_showMidnight      = input.bool(true, "Show Midnight Line", group=grpMidnight)
i_midnightColor     = input.color(color.blue, "Color", group=grpMidnight)
i_midnightWidth     = input.int(1, "Line Width", minval=1, maxval=5, group=grpMidnight)
i_midnightStyle     = input.string("Solid", "Line Style", options=["Solid", "Dashed", "Dotted"], group=grpMidnight)
i_midnightTimezone  = input.string("New York", "Timezone", options=["New York", "Chicago", "Los Angeles", "London", "Paris", "Berlin", "Tokyo", "Hong Kong", "Sydney", "UTC"], group=grpMidnight)
i_midnightHour      = input.int(0, "Hour (0-23)", minval=0, maxval=23, group=grpMidnight)
i_midnightMinute    = input.int(0, "Minute (0-59)", minval=0, maxval=59, group=grpMidnight)

// ══════════════════════════════════════════════════════════════════════════════
// FUNCTIONS
// ══════════════════════════════════════════════════════════════════════════════
getLineStyle(string style) =>
    switch style
        "Solid"  => line.style_solid
        "Dashed" => line.style_dashed
        "Dotted" => line.style_dotted
        => line.style_solid

// ══════════════════════════════════════════════════════════════════════════════
// PREVIOUS DAILY DATA (using daily timeframe)
// ══════════════════════════════════════════════════════════════════════════════
[prevDayHigh, prevDayLow, prevDayClose] = request.security(syminfo.tickerid, "D", [high[1], low[1], close[1]], lookahead=barmerge.lookahead_on)
prevDayMid = (prevDayHigh + prevDayLow) / 2

// Detect new day
dayChange = ta.change(time("D"))
newDay = dayChange != 0

// ══════════════════════════════════════════════════════════════════════════════
// PREVIOUS WEEKLY DATA (using weekly timeframe)
// ══════════════════════════════════════════════════════════════════════════════
[prevWeekHigh, prevWeekLow] = request.security(syminfo.tickerid, "W", [high[1], low[1]], lookahead=barmerge.lookahead_on)

// Detect new week
weekChange = ta.change(time("W"))
newWeek = weekChange != 0

// ══════════════════════════════════════════════════════════════════════════════
// PREVIOUS MONTHLY DATA (using monthly timeframe)
// ══════════════════════════════════════════════════════════════════════════════
[prevMonthHigh, prevMonthLow] = request.security(syminfo.tickerid, "M", [high[1], low[1]], lookahead=barmerge.lookahead_on)

// Detect new month
monthChange = ta.change(time("M"))
newMonth = monthChange != 0

// ══════════════════════════════════════════════════════════════════════════════
// MIDNIGHT OPEN DATA
// ══════════════════════════════════════════════════════════════════════════════
midnightTz = timezoneToString(i_midnightTimezone)

// Get hour and minute in the selected timezone
currentHour   = hour(time, midnightTz)
currentMinute = minute(time, midnightTz)

// Detect midnight candle (first candle at or after the specified time)
isMidnightBar = currentHour == i_midnightHour and currentMinute == i_midnightMinute

// Get the open price at midnight from 1-minute timeframe for accuracy
midnightOpen = request.security(syminfo.tickerid, "1", isMidnightBar ? open : na, lookahead=barmerge.lookahead_on)

// Track the current midnight open value
var float currentMidnightOpen = na
var int   midnightStartBar    = na

if not na(midnightOpen)
    currentMidnightOpen := midnightOpen
    midnightStartBar    := bar_index

// Detect new midnight (for drawing new line)
newMidnight = not na(midnightOpen)

// ══════════════════════════════════════════════════════════════════════════════
// LINE DRAWING - DAILY
// ══════════════════════════════════════════════════════════════════════════════
var line dailyHighLine = na
var line dailyLowLine  = na
var line dailyMidLine  = na

if i_showDaily
    if newDay
        // Delete old lines
        line.delete(dailyHighLine)
        line.delete(dailyLowLine)
        line.delete(dailyMidLine)

        // Create new lines
        dailyHighLine := line.new(bar_index, prevDayHigh, bar_index + 1, prevDayHigh,
             color=i_dailyHighColor, width=i_dailyWidth, style=getLineStyle(i_dailyStyle), extend=extend.none)
        dailyLowLine := line.new(bar_index, prevDayLow, bar_index + 1, prevDayLow,
             color=i_dailyLowColor, width=i_dailyWidth, style=getLineStyle(i_dailyStyle), extend=extend.none)
        dailyMidLine := line.new(bar_index, prevDayMid, bar_index + 1, prevDayMid,
             color=i_dailyMidColor, width=i_dailyMidWidth, style=getLineStyle(i_dailyMidStyle), extend=extend.none)
    else
        // Extend lines to current bar
        if not na(dailyHighLine)
            line.set_x2(dailyHighLine, bar_index)
            line.set_y2(dailyHighLine, prevDayHigh)
        if not na(dailyLowLine)
            line.set_x2(dailyLowLine, bar_index)
            line.set_y2(dailyLowLine, prevDayLow)
        if not na(dailyMidLine)
            line.set_x2(dailyMidLine, bar_index)
            line.set_y2(dailyMidLine, prevDayMid)

// ══════════════════════════════════════════════════════════════════════════════
// LINE DRAWING - WEEKLY
// ══════════════════════════════════════════════════════════════════════════════
var line weeklyHighLine = na
var line weeklyLowLine  = na

if i_showWeekly
    if newWeek
        // Delete old lines
        line.delete(weeklyHighLine)
        line.delete(weeklyLowLine)

        // Create new lines
        weeklyHighLine := line.new(bar_index, prevWeekHigh, bar_index + 1, prevWeekHigh,
             color=i_weeklyHighColor, width=i_weeklyWidth, style=getLineStyle(i_weeklyStyle), extend=extend.none)
        weeklyLowLine := line.new(bar_index, prevWeekLow, bar_index + 1, prevWeekLow,
             color=i_weeklyLowColor, width=i_weeklyWidth, style=getLineStyle(i_weeklyStyle), extend=extend.none)
    else
        // Extend lines to current bar
        if not na(weeklyHighLine)
            line.set_x2(weeklyHighLine, bar_index)
            line.set_y2(weeklyHighLine, prevWeekHigh)
        if not na(weeklyLowLine)
            line.set_x2(weeklyLowLine, bar_index)
            line.set_y2(weeklyLowLine, prevWeekLow)

// ══════════════════════════════════════════════════════════════════════════════
// LINE DRAWING - MONTHLY
// ══════════════════════════════════════════════════════════════════════════════
var line monthlyHighLine = na
var line monthlyLowLine  = na

if i_showMonthly
    if newMonth
        // Delete old lines
        line.delete(monthlyHighLine)
        line.delete(monthlyLowLine)

        // Create new lines
        monthlyHighLine := line.new(bar_index, prevMonthHigh, bar_index + 1, prevMonthHigh,
             color=i_monthlyHighColor, width=i_monthlyWidth, style=getLineStyle(i_monthlyStyle), extend=extend.none)
        monthlyLowLine := line.new(bar_index, prevMonthLow, bar_index + 1, prevMonthLow,
             color=i_monthlyLowColor, width=i_monthlyWidth, style=getLineStyle(i_monthlyStyle), extend=extend.none)
    else
        // Extend lines to current bar
        if not na(monthlyHighLine)
            line.set_x2(monthlyHighLine, bar_index)
            line.set_y2(monthlyHighLine, prevMonthHigh)
        if not na(monthlyLowLine)
            line.set_x2(monthlyLowLine, bar_index)
            line.set_y2(monthlyLowLine, prevMonthLow)

// ══════════════════════════════════════════════════════════════════════════════
// LINE DRAWING - MIDNIGHT
// ══════════════════════════════════════════════════════════════════════════════
var line midnightLine = na

if i_showMidnight
    if newMidnight
        // Delete old line
        line.delete(midnightLine)

        // Create new line
        midnightLine := line.new(bar_index, currentMidnightOpen, bar_index + 1, currentMidnightOpen,
             color=i_midnightColor, width=i_midnightWidth, style=getLineStyle(i_midnightStyle), extend=extend.none)
    else
        // Extend line to current bar
        if not na(midnightLine) and not na(currentMidnightOpen)
            line.set_x2(midnightLine, bar_index)
            line.set_y2(midnightLine, currentMidnightOpen)

// ══════════════════════════════════════════════════════════════════════════════
// LABELS (optional - for price display)
// ══════════════════════════════════════════════════════════════════════════════
grpLabels = "══════ Labels ══════"
i_showLabels = input.bool(true, "Show Price Labels", group=grpLabels)
i_labelSize  = input.string("Small", "Label Size", options=["Tiny", "Small", "Normal", "Large"], group=grpLabels)
i_proximityThreshold = input.float(0.15, "Proximity Threshold (%)", minval=0.01, maxval=1.0, step=0.01, group=grpLabels, tooltip="Labels are offset when prices are within this % of each other")
i_labelOffset = input.int(12, "Label Offset (bars)", minval=1, maxval=50, group=grpLabels, tooltip="Offset applied when labels are close")

getLabelSize(string size) =>
    switch size
        "Tiny"   => size.tiny
        "Small"  => size.small
        "Normal" => size.normal
        "Large"  => size.large
        => size.small

// Function to check if two prices are close (within threshold %)
isClose(float price1, float price2, float thresholdPct) =>
    if na(price1) or na(price2)
        false
    else
        math.abs(price1 - price2) / math.max(price1, price2) * 100 < thresholdPct

// Function to count how many daily prices are close to a given price
countCloseDailyPrices(float price, float thresholdPct) =>
    count = 0
    if i_showDaily and not na(prevDayHigh)
        if isClose(price, prevDayHigh, thresholdPct)
            count += 1
        if isClose(price, prevDayLow, thresholdPct)
            count += 1
        if isClose(price, prevDayMid, thresholdPct)
            count += 1
    count

// Function to count how many weekly prices are close to a given price
countCloseWeeklyPrices(float price, float thresholdPct) =>
    count = 0
    if i_showWeekly and not na(prevWeekHigh)
        if isClose(price, prevWeekHigh, thresholdPct)
            count += 1
        if isClose(price, prevWeekLow, thresholdPct)
            count += 1
    count

var label dailyHighLabel   = na
var label dailyLowLabel    = na
var label dailyMidLabel    = na
var label weeklyHighLabel  = na
var label weeklyLowLabel   = na
var label monthlyHighLabel = na
var label monthlyLowLabel  = na
var label midnightLabel    = na

if i_showLabels and barstate.islast
    // Base offset for all labels
    baseOffset = 2

    // Daily labels (always at base offset)
    if i_showDaily and not na(prevDayHigh)
        label.delete(dailyHighLabel)
        label.delete(dailyLowLabel)
        label.delete(dailyMidLabel)
        dailyHighLabel := label.new(bar_index + baseOffset, prevDayHigh, "PDH " + str.tostring(prevDayHigh, format.mintick),
             color=color.new(i_dailyHighColor, 100), textcolor=i_dailyHighColor, style=label.style_label_left, size=getLabelSize(i_labelSize))
        dailyLowLabel := label.new(bar_index + baseOffset, prevDayLow, "PDL " + str.tostring(prevDayLow, format.mintick),
             color=color.new(i_dailyLowColor, 100), textcolor=i_dailyLowColor, style=label.style_label_left, size=getLabelSize(i_labelSize))
        dailyMidLabel := label.new(bar_index + baseOffset, prevDayMid, "PDM " + str.tostring(prevDayMid, format.mintick),
             color=color.new(i_dailyMidColor, 100), textcolor=i_dailyMidColor, style=label.style_label_left, size=getLabelSize(i_labelSize))

    // Weekly labels - offset if close to any daily price
    if i_showWeekly and not na(prevWeekHigh)
        label.delete(weeklyHighLabel)
        label.delete(weeklyLowLabel)

        weeklyHighOffset = countCloseDailyPrices(prevWeekHigh, i_proximityThreshold) > 0 ? baseOffset + i_labelOffset : baseOffset
        weeklyLowOffset  = countCloseDailyPrices(prevWeekLow, i_proximityThreshold) > 0 ? baseOffset + i_labelOffset : baseOffset

        weeklyHighLabel := label.new(bar_index + weeklyHighOffset, prevWeekHigh, "PWH " + str.tostring(prevWeekHigh, format.mintick),
             color=color.new(i_weeklyHighColor, 100), textcolor=i_weeklyHighColor, style=label.style_label_left, size=getLabelSize(i_labelSize))
        weeklyLowLabel := label.new(bar_index + weeklyLowOffset, prevWeekLow, "PWL " + str.tostring(prevWeekLow, format.mintick),
             color=color.new(i_weeklyLowColor, 100), textcolor=i_weeklyLowColor, style=label.style_label_left, size=getLabelSize(i_labelSize))

    // Monthly labels - offset if close to any daily or weekly price
    if i_showMonthly and not na(prevMonthHigh)
        label.delete(monthlyHighLabel)
        label.delete(monthlyLowLabel)

        monthlyHighCloseToDaily  = countCloseDailyPrices(prevMonthHigh, i_proximityThreshold) > 0
        monthlyHighCloseToWeekly = countCloseWeeklyPrices(prevMonthHigh, i_proximityThreshold) > 0
        monthlyLowCloseToDaily   = countCloseDailyPrices(prevMonthLow, i_proximityThreshold) > 0
        monthlyLowCloseToWeekly  = countCloseWeeklyPrices(prevMonthLow, i_proximityThreshold) > 0

        monthlyHighOffset = baseOffset
        if monthlyHighCloseToDaily
            monthlyHighOffset += i_labelOffset
        if monthlyHighCloseToWeekly
            monthlyHighOffset += i_labelOffset

        monthlyLowOffset = baseOffset
        if monthlyLowCloseToDaily
            monthlyLowOffset += i_labelOffset
        if monthlyLowCloseToWeekly
            monthlyLowOffset += i_labelOffset

        monthlyHighLabel := label.new(bar_index + monthlyHighOffset, prevMonthHigh, "PMH " + str.tostring(prevMonthHigh, format.mintick),
             color=color.new(i_monthlyHighColor, 100), textcolor=i_monthlyHighColor, style=label.style_label_left, size=getLabelSize(i_labelSize))
        monthlyLowLabel := label.new(bar_index + monthlyLowOffset, prevMonthLow, "PML " + str.tostring(prevMonthLow, format.mintick),
             color=color.new(i_monthlyLowColor, 100), textcolor=i_monthlyLowColor, style=label.style_label_left, size=getLabelSize(i_labelSize))

    // Midnight label - offset if close to any daily or weekly price
    if i_showMidnight and not na(currentMidnightOpen)
        label.delete(midnightLabel)

        midnightCloseToDaily  = countCloseDailyPrices(currentMidnightOpen, i_proximityThreshold) > 0
        midnightCloseToWeekly = countCloseWeeklyPrices(currentMidnightOpen, i_proximityThreshold) > 0

        midnightOffset = baseOffset
        if midnightCloseToDaily
            midnightOffset += i_labelOffset
        if midnightCloseToWeekly
            midnightOffset += i_labelOffset

        midnightLabel := label.new(bar_index + midnightOffset, currentMidnightOpen, "Midnight NY " + str.tostring(currentMidnightOpen, format.mintick),
             color=color.new(i_midnightColor, 100), textcolor=i_midnightColor, style=label.style_label_left, size=getLabelSize(i_labelSize))

Overview

JCO Previous DWM + Midnight NY also plots the open price at midnight in the selected timezone (New York by default) or a custom hour and minute. Users can toggle each level group on or off, customize colors, widths and styles independently, and enable dynamic price labels with offset when levels are close together. The lines update automatically at the start of each new period.

Details

Published by

jcornierfra on GitHub

Code credit

jcornier, as written in the script's header

Type

Indicator, Pine Script v6

Draws

On the price chart

Category

Support & resistance

Markets

Any symbol

Timeframes

Any timeframe

Risk Notes

  • Reads higher-timeframe data with lookahead on, so the history can show signals that were not there in real time

Topics

indicatortradingview

Settings

The inputs you can change from the gear icon on the chart. Defaults are the author's.

SettingTypeDefaultVariable
Show Daily Linesbooltruei_showDaily
High Colorcolorcolor.greeni_dailyHighColor
Low Colorcolorcolor.greeni_dailyLowColor
Line Width (High/Low)int1i_dailyWidth
Line Style (High/Low)stringSolidi_dailyStyle
Mid Colorcolorcolor.grayi_dailyMidColor
Mid Line Widthint1i_dailyMidWidth
Mid Line StylestringDashedi_dailyMidStyle
Show Weekly Linesbooltruei_showWeekly
High Colorcolorcolor.orangei_weeklyHighColor
Low Colorcolorcolor.orangei_weeklyLowColor
Line Widthint1i_weeklyWidth
Show all 29 settings
SettingTypeDefaultVariable
Line StylestringSolidi_weeklyStyle
Show Monthly Linesbooltruei_showMonthly
High Colorcolorcolor.purplei_monthlyHighColor
Low Colorcolorcolor.purplei_monthlyLowColor
Line Widthint1i_monthlyWidth
Line StylestringSolidi_monthlyStyle
Show Midnight Linebooltruei_showMidnight
Colorcolorcolor.bluei_midnightColor
Line Widthint1i_midnightWidth
Line StylestringSolidi_midnightStyle
TimezonestringNew Yorki_midnightTimezone
Hour (0-23)int0i_midnightHour
Minute (0-59)int0i_midnightMinute
Show Price Labelsbooltruei_showLabels
Label SizestringSmalli_labelSize
Proximity Threshold (%)float0.15i_proximityThreshold
Label Offset (bars)int12i_labelOffset
Third-party code. ForexR did not write, test or endorse this script, and the summary above was generated automatically from its code and README. Indicators describe the past, and a strategy's backtest can look better than live trading, especially when a script repaints. Check it in the Strategy Tester and on a demo account before you rely on it.

Similar Pine Scripts

948 stars

Moving Average Channel plots separate simple moving averages for upper and lower bands on the price chart. It fills the space between bands with semi-transparent color and colors bars green above the upper band, red below the lower band, or gray in between. Us

Indicator v4 Moving averagesSupport & resistance
Updated 10 days ago · GPL-3.0 GitHub repository of Moving Average Channel

ICT Equal Highs and Lows

by ArunKBhaskar
575 stars

This overlay indicator finds pivot highs and lows on the price chart and compares the last two highs and the last two lows. When the percentage difference between a pair is below the Equal HL threshold, it treats them as equal levels and draws a box. Left and

Indicator v5 SMC / ICT / price actionSupport & resistance
Updated 1 year ago · MPL-2.0 GitHub repository of ICT Equal Highs and Lows
330 stars

This indicator monitors multiple cryptocurrency symbols for trading signals. It calculates and plots entry prices, take profit, and stop loss levels for each symbol including BTCUSDT, ETHUSDT, BNBUSDT and others. Price crossovers trigger buy, sell or close ale

Indicator v5 Support & resistanceScreeners & dashboards
Updated 2 months ago · None stated GitHub repository of Multi Alert Long/Short [Alorse]

This overlay indicator draws a fixed-range volume profile on the price chart, splitting traded activity into up and down volume at each price level. It also plots a sentiment profile, a developing point of control, and value-area high and low around a configur

Indicator v5 VolumeSupport & resistance
Updated 2 months ago · MIT GitHub repository of Volume Profile and Indicator by DGT

BZ-tracker

by Allen1212
303 stars

The BZ-tracker indicator marks ARK Invest buy and sell transactions on stock charts with labels. It plots green labels for purchases and red labels for sales, each annotated with a multiplier such as X1 or X2 to show the number of ARK ETFs trading the stock on

Indicator v4 Support & resistanceScreeners & dashboards
Updated 2 years ago · None stated GitHub repository of BZ-tracker

Function - Linear Regression

by ricardosantos79
261 stars

This indicator fits a linear regression through stored pivot highs and lows and draws the resulting channel on the price chart. A function returns predicted values, maximum and minimum deviations, and the average absolute deviation. Confirmed two-bar pivots up

Indicator v5 TrendSupport & resistance
Updated 4 years ago · None stated GitHub repository of Function - Linear Regression

More indicators

Trade Your Charts With a Regulated Broker

Compare brokers that connect to TradingView, with spreads, minimum deposits and leverage side by side.

Compare brokers