Intraday Trend Viewer Indicator for ThinkorSwim


I was watching a video on YouTube a while back about trend trading. The guy mentioned something along the line of:
  • If the stock is trading below the previous day close then there are more sellers than buyers. The trend is bearish. Look for a short opportunity.
  • If the stock is trading above the previous day close then there are more buyers than sellers. There is a strong uptrend. Look for a long opportunity.
With that being said, here is the indicator based on that concept.

Dark red and green candlesticks mean the stock is trading below yesterday's close. You can combine this indicator with another momentum indicator like the FisherTransform to find your trade entry.

thinkScript Code

# Intraday Trend Viewer
# Assembled by BenTen at

def Today = if GetDay() == GetLastDay() then 1 else 0;

plot ystdClose = close(period = "day" )[1];


AssignPriceColor(if close < ystdClose and open < close then Color.DARK_GREEN
  else if close < ystdClose and open > close then Color.DARK_RED else Color.CURRENT);

Shareable Link
Last edited:


New member
2019 Donor

Can you provide more examples regarding "f the stock is trading below the previous day close then there are more sellers than buyers. The trend is bearish. Look for a short opportunity." please?


@mrwind425 Sure. So here is a quick example of the concept. The chart we'll be viewing is NFLX's 5d 5m.

Let's take a look at what happen when NFLX is trading below the previous day close.

Mostly downtrending.

Now, you look for a pull back up and then using the FisherTransform to find bearish crossover.

Can anyone point me in the direction of an indicator that plots a line for the previous day closing price (or an indicator that includes this)? I thought I saw one on here at one point, but now I cannot find it via search. Any help is appreciated! Thank you


Well-known member
@GimmickFace Here is your study that plots the close of the previous day. Run this on an intraday chart, e.g. 15 mins

# Close Previous Day
# tomsk
# 1.9.2020

declare hide_on_daily;

def active = GetTime() >= RegularTradingStart(GetYYYYMMDD());
plot PC = if active then close(period = AggregationPeriod.Day)[1] else Double.NaN;
# End Close Previous Day

Risto Benji

New member
Hoping this is something simple to do, if someone can do it for me or point me in the right direction. As is, the study on plots the current days data. Would like the option to see historical data. Thanks in advance!

# Shadow Trader Pivots
# Mobius
# V01.9.2011
#hint:Shadow Trader Pivots: Take all values from previous intraday market with close taken from the final close value. Settelment Value my differ slightly. POC with dashed line is the previous days point of control and the one Shadow Trader refers to. Volume profile is visible for the past 5 trading days. Pivots are plotted during Market Hours.

# PIVOT = (High + Close + Low)/3 (Values taken from intradays Market)
# R4 = High + 3 x (Pivot - Low)
# R3 = High + 2(Pivot – Low)
# R2 = Pivot + (R1 – S1)
# R1 = (2*Pivot) – Low
# S1 = (2*Pivot) – High
# S2 = Pivot – (R1 – S1)
# S3 = Low – 2(Hi – Pivot)
# S4 = Low - 3 x (High - Pivot)

declare hide_on_daily;

input MktOpen  = 0930; #hint MktOpen: Cash Marekt open EST.
input MktClose = 1600; #hint MktClose: Cash Market close EST.   

def h = high;
def l = low;
def c = close;
def Active = if SecondsFromTime(MktOpen) >= 0 and
                SecondsTillTime(MktClose) >= 0
             then 1
             else 0;
def Today = GetDay() == GetLastDay();
def Yesterday = GetDay() == GetLastDay()-1;
def ap = AggregationPeriod.Day;
def last = if Yesterday and !last[1]
           then close(period = ap)[1]
           else if Yesterday and
              SecondsTillTime(MktClose) == 0 and
              SecondsFromTime(MktClose) == 0
              then if c <> last[1]
                   then c
                   else last[1]
              else last[1];
def prevHigh = if Yesterday and !prevHigh[1]
               then high(period = ap)[1]
               else if Yesterday and Active and !Active[1]
               then h
               else if Yesterday and Active and h > prevHigh[1]
                    then h
               else prevHigh[1];
#addLabel(1, "prevHigh " + prevHigh);
def prevLow = if Yesterday and !prevLow[1]
              then low(period = ap)[1]
              else if Yesterday and Active and !Active[1]
               then l
               else if Yesterday and Active and l < prevLow[1]
                    then l
               else prevLow[1];
def BubbleLocation = if Today and Active and !Active[1]
                     then c
                     else double.nan;
plot LastClose = if Today and Active then last else Double.NaN;
#AddLabel(1, "Yest Close " + LastClose);
AddChartBubble(BubbleLocation, LastClose, "C", Color.Dark_Gray, no);
plot pivot = Round(((LastClose + prevHigh + prevLow) / 3) / TickSize(), 0) * TickSize();
AddChartBubble(BubbleLocation, (pivot), "Pivot", Color.Dark_Gray, yes);
plot R1 = Round(((2 * pivot) - prevLow) / TickSize(), 0) * TickSize();
AddChartBubble(BubbleLocation, HighestAll(R1), "R1", Color.Dark_Gray, no);
plot S1 = Round(((2 * pivot) - prevHigh) / TickSize(), 0) * TickSize();
AddChartBubble(BubbleLocation, HighestAll(S1), "S1", Color.Dark_Gray, yes);
plot R2 = Round((pivot + (R1 - S1)) / TickSize(), 0) * TickSize();
AddChartBubble(BubbleLocation, HighestAll(R2), "R2", Color.Dark_Gray, no);
plot S2 = Round((pivot - (R1 - S1)) / TickSize(), 0) * TickSize();
AddChartBubble(BubbleLocation, HighestAll(S2), "S2", Color.Dark_Gray, yes);
plot R3 = Round((prevHigh + (2 * (pivot - prevLow))) / TickSize(), 0) * TickSize();
AddChartBubble(BubbleLocation, HighestAll(R3), "R3", Color.Dark_Gray, no);
plot S3 = Round((prevLow - (2 * (prevHigh - pivot))) / TickSize(), 0) * TickSize();
AddChartBubble(BubbleLocation, HighestAll(S3), "S3", Color.Dark_Gray, yes);
plot R4 = Round((prevHigh + (3 * (pivot - prevLow))) / TickSize(), 0) * TickSize();
AddChartBubble(BubbleLocation, HighestAll(R4), "R4", Color.Dark_Gray, no);
plot S4 = Round((prevLow - (3 * (prevHigh - pivot))) / TickSize(), 0) * TickSize();
AddChartBubble(BubbleLocation, HighestAll(S4), "S4", Color.Dark_Gray, yes);
def AvgVolume = Average(volume(period = AggregationPeriod.Day), 21);
addLabel(1, volume(period = AggregationPeriod.Day),
         if volume(period = AggregationPeriod.Day) > AvgVolume
         else color.white);
# End Code Shadow Trader Pivots
## VolumeProfile_RTH and Overnight
# Previous POC Extended to Current Day

def bar = BarNumber();
def RTHBar1 = if SecondsFromTime(MktOpen) == 0 and
                 SecondsTillTime(MktOpen) == 0
              then bar
              else RTHBar1[1];
def RTHBarEnd = if SecondsFromTime(MktClose) == 0 and
                   SecondsTillTime(MktClose) == 0
                then 1
                else Double.NaN;
def cond = bar == RTHBar1; #Active != Active[1];
profile vol = VolumeProfile("startNewProfile" = cond, "onExpansion" = no, "numberOfProfiles" = 10, "pricePerRow" = PricePerRow.TICKSIZE, "value area percent" = 68.4);
def pc = if IsNaN(vol.GetPointOfControl())
         then pc[1]
         else vol.GetPointOfControl();
def hVA = if IsNaN(vol.GetHighestValueArea())
          then hVA[1]
          else vol.GetHighestValueArea();
def lVA = if IsNaN(vol.GetLowestValueArea())
          then lVA[1]
          else vol.GetLowestValueArea();
def hProfile = if IsNaN(vol.GetHighest())# and con
               then hProfile[1]
               else vol.GetHighest();
def lProfile = if IsNaN(vol.GetLowest())# and con
               then lProfile[1]
               else vol.GetLowest();
def POC = if Active then pc else Double.NaN;
def VAHigh = if Active then hVA else Double.NaN;
def VALow = if Active then lVA else Double.NaN;
def PrevPC = if !IsNaN(RTHBarEnd)
            then POC[1]
            else PrevPC[1];
def PrevPCBar = if !IsNaN(RTHBarEnd)
               then bar
               else PrevPCBar[1];
def PrevPC_Limit = if bar == PrevPCBar
                  then Double.NaN
                  else if bar > PrevPCBar
                       then bar - PrevPCBar
                       else PrevPC_Limit[1];
def PrevVAH = if !IsNaN(RTHBarEnd)
            then VAHigh[1]
            else PrevVAH[1];
def PrevVAHBar = if !IsNaN(RTHBarEnd)
               then bar
               else PrevVAHBar[1];
def PrevVAH_Limit = if bar == PrevVAHBar
                  then Double.NaN
                  else if bar > PrevVAHBar
                       then bar - PrevVAHBar
                       else PrevVAH_Limit[1];
def PrevVAL = if !IsNaN(RTHBarEnd)
            then VALow[1]
            else PrevVAL[1];
def PrevVALBar = if !IsNaN(RTHBarEnd)
               then bar
               else PrevVALBar[1];
def PrevVAL_Limit = if bar == PrevVALBar
                  then Double.NaN
                  else if bar > PrevVALBar
                       then bar - PrevVALBar
                       else PrevVAL_Limit[1];
script LinePlot {
    input LineLimit = 0;
    input OnExpansion = yes;
    input data = close;
    input bar = 0;
    def ThisBar = HighestAll(bar);
    def cLine = if bar == ThisBar
                then data
                else Double.NaN;
    def cond1 = CompoundValue(1, if IsNaN(data)
                                 then cond1[1]
                                 else data, data);
    plot P = if ThisBar - LineLimit <= bar
             then HighestAll(cLine)
             else Double.NaN;
    plot ExpLine = if OnExpansion and
                   then cond1
                   else Double.NaN;
plot PrevPOC = LinePlot(data = PrevPC, LineLimit = PrevPC_Limit, OnExpansion = no, bar = PrevPCBar).P;
plot PrevVAHline = LinePlot(data = PrevVAH, LineLimit = PrevVAH_Limit, OnExpansion = no, bar = PrevVAHBar).P;
plot PrevVALline = LinePlot(data = PrevVAL, LineLimit = PrevVAL_Limit, OnExpansion = no, bar = PrevVALBar).P;
addCloud(PrevVALline, PrevVAHline, color.dark_Gray, Color.dark_Gray);
input bubbles = yes;
def n = 2;
def n1 = n + 1;
AddChartBubble(bubbles and !IsNaN(close[n1]) and IsNaN(close[n]), PrevVAH[n1], "VAH", color = Color.YELLOW, yes);
AddChartBubble(bubbles and !IsNaN(close[n1]) and IsNaN(close[n]), PrevVAL[n1], "VAL", Color.YELLOW, no);
AddChartBubble(bubbles and !IsNaN(close[n1]) and IsNaN(close[n]), PrevPOC[n1], "POC", Color.RED, no);
# End POC and Value Area

Similar threads