RD Key Levels (Weekly, Daily, Previous vWAP) For ThinkOrSwim

Grroov

New member
Author states:
The RexDog Key Levels indicator plots the weekly open, daily open, and the previous day vWAP close.

These are all critical price levels (zones) to know when trading any market or instrument. These areas are also high probability reaction areas that you can trade using simple confirmation trading patterns.

Each one of these levels are important levels markets look use for continuation or failure of momentum and bias. I also find it extremely helpful to think of these levels as magnets, dual magnets. They both attract and repel price at the same time. Now you might say, how is that helpful to have opposing views at the same time? Be indifferent to direction, create your own rules on when these price zones repel or attract price, I have my own.

Here's the easiest way to use these price levels.

As price approaches one of these levels to expect a reaction. A reaction is price is going in one direction and price hits a price level zone and reacts in the opposite direction.

These are price zones, sometimes you will see a reaction right at the price but visualize these areas as zones of reaction.

A high percentage of the time when price approaches these level zones there will be a reaction. So trade the reaction.
73NzLjS.png

Here is the original Tradingview code:
https://www.tradingview.com/script/t8XBu8Rz-RD-Key-Levels-Weekly-Daily-Previous-vWAP/

For the new ThinkOrSwim code, you must scroll down to the next post
 
Last edited by a moderator:
hi, can someone please convert this vwap indicator from tradingview.

https://www.tradingview.com/script/t8XBu8Rz-RD-Key-Levels-Weekly-Daily-Previous-vWAP/


//@version=5
// Key Levels created by RexDogACtual
// Plots key levels (week, day, pday vwap) in a very clean fashion with no connecting plot lines.
indicator(title='RD Key Levels', shorttitle='RDKL', overlay=true, precision=8)
aboveBelowBarWeekIndicator = input(true, title='Turn on Above/Below Week Open Top Chart')
// Day
dayOpen = request.security(syminfo.tickerid, 'D', open, lookahead=barmerge.lookahead_on)
preDayOpen = request.security(syminfo.tickerid, 'D', open[1], lookahead=barmerge.lookahead_on)
preDayClose = request.security(syminfo.tickerid, 'D', close[1], lookahead=barmerge.lookahead_on)
// Week
weekOpen = request.security(syminfo.tickerid, 'W', open, lookahead=barmerge.lookahead_on)
prevWeekOpen = request.security(syminfo.tickerid, 'W', open[1], lookahead=barmerge.lookahead_on)
weekClose = request.security(syminfo.tickerid, 'W', close, lookahead=barmerge.lookahead_on)
prevWeekClose = request.security(syminfo.tickerid, 'W', close[1], lookahead=barmerge.lookahead_on)
weekHigh = request.security(syminfo.tickerid, 'W', high, lookahead=barmerge.lookahead_on)
weekLow = request.security(syminfo.tickerid, 'W', low, lookahead=barmerge.lookahead_on)
// Week Plots
notChanged = ta.change(weekOpen) == 0
weeklyOpenCloseColor = close < weekOpen ? color.new(color.orange, 0) : color.new(color.white, 0)
weeklyOpenCloseColor := notChanged ? weeklyOpenCloseColor : na
plot(weekOpen ? weekOpen : na, title='Week Open', style=plot.style_line, linewidth=2, color=weeklyOpenCloseColor)
plot(weekHigh ? weekHigh : na, title='Week High', style=plot.style_circles, linewidth=1, color=notChanged ? color.new(color.green, 0) : na)
plot(weekLow ? weekLow : na, title='Week Low', style=plot.style_circles, linewidth=1, color=color.new(color.red, 0))
thisweek = weekofyear(timenow) == weekofyear(time)
// Day Plots
dayNotChanged = ta.change(dayOpen) == 0
dayOpenCloseColor = close < dayOpen ? color.new(#cc3f3f, 0) : color.new(#68db44, 0)
dayOpenCloseColor := dayNotChanged ? dayOpenCloseColor : na
thisDay = dayofmonth(timenow) == dayofmonth(time)
plot(dayOpen ? dayOpen : na, title='Day Open', style=plot.style_line, linewidth=2, color=dayOpenCloseColor)
// Plot the week top of chart indicators
aboveWeekOpen = close > weekOpen
belowWeekOpen = close < weekOpen
color_1 = color.new(color.green, 90)
color_2 = color.new(color.red, 90)
plotshape(aboveBelowBarWeekIndicator and aboveWeekOpen, title='Week Close Above', location=location.top, color=color.new(color.green, 0), text='', size=size.tiny, style=shape.triangleup)
plotshape(aboveBelowBarWeekIndicator and belowWeekOpen, title='Week Close Below', location=location.top, color=color.new(color.red, 0), text='', size=size.tiny, style=shape.triangledown)
// vWAP calcss and plots
higherTF = input.timeframe('D', title='VWAP Line Resolution')
showIntradayOnly = input(true, title='Show on Intraday Charts Only')
vWapLineColor = input.color(color.aqua, "Previous Day vWAP Color")
showPrevVwapLabel = input(false, title='Show PDay vWAP Label')
prevVwapHTF = request.security(syminfo.tickerid, higherTF, ta.vwap[1], lookahead=barmerge.lookahead_on)
showVWAP = timeframe.isintraday or not showIntradayOnly
var line vwapLine = na
if showVWAP
if prevVwapHTF[1] != prevVwapHTF
line.set_x2(vwapLine, bar_index)
line.set_extend(vwapLine, extend.none)
vwapLine := line.new(bar_index, prevVwapHTF, bar_index, prevVwapHTF, width=2, extend=extend.none)
if(showPrevVwapLabel)
label.new(bar_index, prevVwapHTF, 'yDayVWAP \n' + str.tostring(prevVwapHTF, '#.##'), style=label.style_none, textcolor=color.new(color.aqua,50))
if not na(vwapLine) and line.get_x2(vwapLine) != bar_index
line.set_x2(vwapLine, bar_index)
line.set_color(vwapLine, vWapLineColor)
try this

CSS:
#//@version=5
#// Key Levels created by RexDogACtual
#// Plots key levels (week, day, pday vwap) in a very clean fashion with no connecting plot lines.
#indicator(title='RD Key Levels', shorttitle='RDKL', overlay=true, precision=8)
# Converted by Sam4COK@Samer800     - 04/2023
input aboveBelowBarWeekIndicator = yes;    # 'Turn on Above/Below Week Open Top Chart'
input higherTF = {default DAY, WEEK, MONTH};
input showIntradayOnly = yes;              # 'Show on Intraday Charts Only'
input showPrevVwapLabel = no;#(false, title='Show PDay vWAP Label')
input showStdvBand_1  = no;    # "Show Standard Deviation Bands #1"
input stdevMult_1     = 1.0;    # "Bands Multiplier #1"
input showStdvBand_2  = no;     # "Show Standard Deviation Bands #2"
input stdevMult_2     = 2.0;    # "Bands Multiplier #2"
input showStdvBand_3  = no;     # "Show Standard Deviation Bands #3"
input stdevMult_3     = 3.0;    # "Bands Multiplier #3"

def na = Double.NaN;
def last = IsNaN(close);
#--- Color
DefineGlobalColor("orange" , CreateColor(255, 152, 0));
DefineGlobalColor("green" , CreateColor(104, 219, 68));
DefineGlobalColor("green1" , CreateColor(76, 175, 80));
DefineGlobalColor("red"  , CreateColor(255, 82, 82));
DefineGlobalColor("red1" , CreateColor(204, 63, 63));

DefineGlobalColor("green2" , CreateColor(0, 196,08));
DefineGlobalColor("green3" , CreateColor(0, 177,07));
DefineGlobalColor("green4" , CreateColor(0, 137,05));

DefineGlobalColor("red2" , CreateColor(216,14,0));
DefineGlobalColor("red3" , CreateColor(196,13,0));
DefineGlobalColor("red4" , CreateColor(177,12,0));
#// Day
def dayOpen    = open(Period = "Day");
def preDayOpen = open(Period = "Day")[1];
def preDayClose = close(Period = "Day")[1];
#// Week
def weekOpen = open(Period = "Week");
def prevWeekOpen = open(Period = "Week")[1];
def weekClose = close(Period = "Week");
def prevWeekClose = close(Period = "Week")[1];
def weekHigh = high(Period = "Week");
def weekLow = low(Period = "Week");

#// Week Plots
#def notChanged = (weekOpen - weekOpen) == 0;
def weeklyOpenCloseColor = if close < weekOpen then -1 else 1;

plot Week_Open = if last then na else
                 if weekOpen then weekOpen else na;    # 'Week Open'
Week_Open.AssignValueColor(if weeklyOpenCloseColor > 0 then Color.WHITE else GlobalColor("orange"));
plot Week_High = if last then na else
                 if weekHigh then weekHigh else na;    # 'Week High'
plot Week_Low =  if last then na else
                 if weekLow then weekLow else na;      # 'Week Low'
Week_Open.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
Week_High.SetPaintingStrategy(PaintingStrategy.POINTS);
Week_Low.SetPaintingStrategy(PaintingStrategy.POINTS);
Week_High.SetDefaultColor(GlobalColor("green"));
Week_Low.SetDefaultColor(GlobalColor("red"));

#// Day Plots
def dayOpenCloseColor = if close < dayOpen then -1 else 1;

plot Day_Open = if last then na else
                if dayOpen then dayOpen else na;    # 'Day Open'
Day_Open.AssignValueColor(if dayOpenCloseColor > 0 then GlobalColor("green1") else GlobalColor("red1"));
Day_Open.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
#// Plot the week top of chart indicators
def aboveWeekOpen = close > weekOpen;
def belowWeekOpen = close < weekOpen;

plot WeekCloseAbove = if aboveBelowBarWeekIndicator and aboveWeekOpen then Week_High - Week_High * 0.05 / 100 else na;
plot WeekCloseBelow = if aboveBelowBarWeekIndicator and belowWeekOpen then Week_High - Week_High * 0.05 / 100 else na;
WeekCloseAbove.SetPaintingStrategy(PaintingStrategy.TRIANGLES);
WeekCloseBelow.SetPaintingStrategy(PaintingStrategy.TRIANGLES);
WeekCloseAbove.SetDefaultColor(GlobalColor("green1"));
WeekCloseBelow.SetDefaultColor(GlobalColor("red1"));

#// vWAP calcss and plots

def isintraday = GetAggregationPeriod() < AggregationPeriod.DAY;
def showVWAP = isintraday or !showIntradayOnly;

def day = GetDay();
def week = GetWeek();
def month =  GetMonth();
def VWAP_TF;
def prevClose;
switch (higherTF) {
case DAY:
    VWAP_TF = day;
    prevClose = close(Period = AggregationPeriod.DAY);
case WEEK:
    VWAP_TF = week;
    prevClose = close(Period = AggregationPeriod.WEEK);
case MONTH:
    VWAP_TF = month;
    prevClose = close(Period = AggregationPeriod.MONTH);
}

#export f_Pre_Vwap(simple string tf, float Vwap, int occurrence) =>
script f_Pre_Vwap {
    input tf = close;
    input src = close;
    def src_v = volume;
    def start0 = tf - tf[1];
    def sumSrc0 = src * src_v;
    def sumVol0 = src_v;
    def sumSrc2 = src_v * Sqr(src);
    def sumSrc1 = CompoundValue(1, if start0 then sumSrc0 else sumSrc0 + sumSrc1[1], sumSrc0);
    def sumVol1 = CompoundValue(1, if start0 then sumVol0 else sumVol0 + sumVol1[1], sumVol0);
    def sumVol2 = CompoundValue(1, if start0 then sumSrc2 else sumSrc2 + sumVol2[1], sumSrc2);
    def Vwap = sumSrc1 / sumVol1;
    def deviation = Sqrt(Max(sumVol2 / sumVol1 - Sqr(Vwap), 0));
    def Pre_Vwap = CompoundValue(1, if start0 then Vwap[1] else Pre_Vwap[1], Vwap);
    def Dev_Vwap = CompoundValue(1, if start0 then deviation[1] else Dev_Vwap[1], deviation);
    plot wap = Pre_Vwap;
    plot dev = Dev_Vwap;
}
def prevVwapHTF = f_Pre_Vwap(VWAP_TF, hl2).wap;
def PredevVwap = f_Pre_Vwap(VWAP_TF, hl2).dev;

def vwapCond = prevVwapHTF[1] == prevVwapHTF;

plot vwapLine =  if last or !showVWAP then na else prevVwapHTF;
vwapLine.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
vwapLine.SetDefaultColor(Color.CYAN);

plot PrevwapUp1 = if last or !showStdvBand_1 then na else prevVwapHTF + PredevVwap * stdevMult_1;
PrevwapUp1.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
PrevwapUp1.SetDefaultColor(GlobalColor("green2"));
plot PrevwapUp2 = if last or !showStdvBand_2 then na else prevVwapHTF + PredevVwap * stdevMult_2;
PrevwapUp2.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
PrevwapUp2.SetDefaultColor(GlobalColor("green3"));
plot PrevwapUp3 = if last or !showStdvBand_3 then na else prevVwapHTF + PredevVwap * stdevMult_3;
PrevwapUp3.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
PrevwapUp3.SetDefaultColor(GlobalColor("green4"));

plot PrevwapLo1 = if last or !showStdvBand_1 then na else prevVwapHTF - PredevVwap * stdevMult_1;
PrevwapLo1.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
PrevwapLo1.SetDefaultColor(GlobalColor("red2"));
plot PrevwapLo2 = if last or !showStdvBand_2 then na else prevVwapHTF - PredevVwap * stdevMult_2;
PrevwapLo2.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
PrevwapLo2.SetDefaultColor(GlobalColor("red3"));
plot PrevwapLo3 = if last or !showStdvBand_3 then na else prevVwapHTF - PredevVwap * stdevMult_3;
PrevwapLo3.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
PrevwapLo3.SetDefaultColor(GlobalColor("red4"));



#--- END of CODE
 
try this

CSS:
#//@version=5
#// Key Levels created by RexDogACtual
#// Plots key levels (week, day, pday vwap) in a very clean fashion with no connecting plot lines.
#indicator(title='RD Key Levels', shorttitle='RDKL', overlay=true, precision=8)
# Converted by Sam4COK@Samer800     - 04/2023
input aboveBelowBarWeekIndicator = yes;    # 'Turn on Above/Below Week Open Top Chart'
input higherTF = {default DAY, WEEK, MONTH};
input showIntradayOnly = yes;              # 'Show on Intraday Charts Only'
input showPrevVwapLabel = no;#(false, title='Show PDay vWAP Label')
input showStdvBand_1  = no;    # "Show Standard Deviation Bands #1"
input stdevMult_1     = 1.0;    # "Bands Multiplier #1"
input showStdvBand_2  = no;     # "Show Standard Deviation Bands #2"
input stdevMult_2     = 2.0;    # "Bands Multiplier #2"
input showStdvBand_3  = no;     # "Show Standard Deviation Bands #3"
input stdevMult_3     = 3.0;    # "Bands Multiplier #3"

def na = Double.NaN;
def last = IsNaN(close);
#--- Color
DefineGlobalColor("orange" , CreateColor(255, 152, 0));
DefineGlobalColor("green" , CreateColor(104, 219, 68));
DefineGlobalColor("green1" , CreateColor(76, 175, 80));
DefineGlobalColor("red"  , CreateColor(255, 82, 82));
DefineGlobalColor("red1" , CreateColor(204, 63, 63));

DefineGlobalColor("green2" , CreateColor(0, 196,08));
DefineGlobalColor("green3" , CreateColor(0, 177,07));
DefineGlobalColor("green4" , CreateColor(0, 137,05));

DefineGlobalColor("red2" , CreateColor(216,14,0));
DefineGlobalColor("red3" , CreateColor(196,13,0));
DefineGlobalColor("red4" , CreateColor(177,12,0));
#// Day
def dayOpen    = open(Period = "Day");
def preDayOpen = open(Period = "Day")[1];
def preDayClose = close(Period = "Day")[1];
#// Week
def weekOpen = open(Period = "Week");
def prevWeekOpen = open(Period = "Week")[1];
def weekClose = close(Period = "Week");
def prevWeekClose = close(Period = "Week")[1];
def weekHigh = high(Period = "Week");
def weekLow = low(Period = "Week");

#// Week Plots
#def notChanged = (weekOpen - weekOpen) == 0;
def weeklyOpenCloseColor = if close < weekOpen then -1 else 1;

plot Week_Open = if last then na else
                 if weekOpen then weekOpen else na;    # 'Week Open'
Week_Open.AssignValueColor(if weeklyOpenCloseColor > 0 then Color.WHITE else GlobalColor("orange"));
plot Week_High = if last then na else
                 if weekHigh then weekHigh else na;    # 'Week High'
plot Week_Low =  if last then na else
                 if weekLow then weekLow else na;      # 'Week Low'
Week_Open.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
Week_High.SetPaintingStrategy(PaintingStrategy.POINTS);
Week_Low.SetPaintingStrategy(PaintingStrategy.POINTS);
Week_High.SetDefaultColor(GlobalColor("green"));
Week_Low.SetDefaultColor(GlobalColor("red"));

#// Day Plots
def dayOpenCloseColor = if close < dayOpen then -1 else 1;

plot Day_Open = if last then na else
                if dayOpen then dayOpen else na;    # 'Day Open'
Day_Open.AssignValueColor(if dayOpenCloseColor > 0 then GlobalColor("green1") else GlobalColor("red1"));
Day_Open.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
#// Plot the week top of chart indicators
def aboveWeekOpen = close > weekOpen;
def belowWeekOpen = close < weekOpen;

plot WeekCloseAbove = if aboveBelowBarWeekIndicator and aboveWeekOpen then Week_High - Week_High * 0.05 / 100 else na;
plot WeekCloseBelow = if aboveBelowBarWeekIndicator and belowWeekOpen then Week_High - Week_High * 0.05 / 100 else na;
WeekCloseAbove.SetPaintingStrategy(PaintingStrategy.TRIANGLES);
WeekCloseBelow.SetPaintingStrategy(PaintingStrategy.TRIANGLES);
WeekCloseAbove.SetDefaultColor(GlobalColor("green1"));
WeekCloseBelow.SetDefaultColor(GlobalColor("red1"));

#// vWAP calcss and plots

def isintraday = GetAggregationPeriod() < AggregationPeriod.DAY;
def showVWAP = isintraday or !showIntradayOnly;

def day = GetDay();
def week = GetWeek();
def month =  GetMonth();
def VWAP_TF;
def prevClose;
switch (higherTF) {
case DAY:
    VWAP_TF = day;
    prevClose = close(Period = AggregationPeriod.DAY);
case WEEK:
    VWAP_TF = week;
    prevClose = close(Period = AggregationPeriod.WEEK);
case MONTH:
    VWAP_TF = month;
    prevClose = close(Period = AggregationPeriod.MONTH);
}

#export f_Pre_Vwap(simple string tf, float Vwap, int occurrence) =>
script f_Pre_Vwap {
    input tf = close;
    input src = close;
    def src_v = volume;
    def start0 = tf - tf[1];
    def sumSrc0 = src * src_v;
    def sumVol0 = src_v;
    def sumSrc2 = src_v * Sqr(src);
    def sumSrc1 = CompoundValue(1, if start0 then sumSrc0 else sumSrc0 + sumSrc1[1], sumSrc0);
    def sumVol1 = CompoundValue(1, if start0 then sumVol0 else sumVol0 + sumVol1[1], sumVol0);
    def sumVol2 = CompoundValue(1, if start0 then sumSrc2 else sumSrc2 + sumVol2[1], sumSrc2);
    def Vwap = sumSrc1 / sumVol1;
    def deviation = Sqrt(Max(sumVol2 / sumVol1 - Sqr(Vwap), 0));
    def Pre_Vwap = CompoundValue(1, if start0 then Vwap[1] else Pre_Vwap[1], Vwap);
    def Dev_Vwap = CompoundValue(1, if start0 then deviation[1] else Dev_Vwap[1], deviation);
    plot wap = Pre_Vwap;
    plot dev = Dev_Vwap;
}
def prevVwapHTF = f_Pre_Vwap(VWAP_TF, hl2).wap;
def PredevVwap = f_Pre_Vwap(VWAP_TF, hl2).dev;

def vwapCond = prevVwapHTF[1] == prevVwapHTF;

plot vwapLine =  if last or !showVWAP then na else prevVwapHTF;
vwapLine.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
vwapLine.SetDefaultColor(Color.CYAN);

plot PrevwapUp1 = if last or !showStdvBand_1 then na else prevVwapHTF + PredevVwap * stdevMult_1;
PrevwapUp1.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
PrevwapUp1.SetDefaultColor(GlobalColor("green2"));
plot PrevwapUp2 = if last or !showStdvBand_2 then na else prevVwapHTF + PredevVwap * stdevMult_2;
PrevwapUp2.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
PrevwapUp2.SetDefaultColor(GlobalColor("green3"));
plot PrevwapUp3 = if last or !showStdvBand_3 then na else prevVwapHTF + PredevVwap * stdevMult_3;
PrevwapUp3.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
PrevwapUp3.SetDefaultColor(GlobalColor("green4"));

plot PrevwapLo1 = if last or !showStdvBand_1 then na else prevVwapHTF - PredevVwap * stdevMult_1;
PrevwapLo1.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
PrevwapLo1.SetDefaultColor(GlobalColor("red2"));
plot PrevwapLo2 = if last or !showStdvBand_2 then na else prevVwapHTF - PredevVwap * stdevMult_2;
PrevwapLo2.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
PrevwapLo2.SetDefaultColor(GlobalColor("red3"));
plot PrevwapLo3 = if last or !showStdvBand_3 then na else prevVwapHTF - PredevVwap * stdevMult_3;
PrevwapLo3.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
PrevwapLo3.SetDefaultColor(GlobalColor("red4"));



#--- END of CODE
Thank you @samer800
 

Join useThinkScript to post your question to a community of 21,000+ developers and traders.

Similar threads

Not the exact question you're looking for?

Start a new thread and receive assistance from our community.

87k+ Posts
354 Online
Create Post

Similar threads

Similar threads

The Market Trading Game Changer

Join 2,500+ subscribers inside the useThinkScript VIP Membership Club
  • Exclusive indicators
  • Proven strategies & setups
  • Private Discord community
  • ‘Buy The Dip’ signal alerts
  • Exclusive members-only content
  • Add-ons and resources
  • 1 full year of unlimited support

Frequently Asked Questions

What is useThinkScript?

useThinkScript is the #1 community of stock market investors using indicators and other tools to power their trading strategies. Traders of all skill levels use our forums to learn about scripting and indicators, help each other, and discover new ways to gain an edge in the markets.

How do I get started?

We get it. Our forum can be intimidating, if not overwhelming. With thousands of topics, tens of thousands of posts, our community has created an incredibly deep knowledge base for stock traders. No one can ever exhaust every resource provided on our site.

If you are new, or just looking for guidance, here are some helpful links to get you started.

What are the benefits of VIP Membership?
VIP members get exclusive access to these proven and tested premium indicators: Buy the Dip, Advanced Market Moves 2.0, Take Profit, and Volatility Trading Range. In addition, VIP members get access to over 50 VIP-only custom indicators, add-ons, and strategies, private VIP-only forums, private Discord channel to discuss trades and strategies in real-time, customer support, trade alerts, and much more. Learn all about VIP membership here.
How can I access the premium indicators?
To access the premium indicators, which are plug and play ready, sign up for VIP membership here.
Back
Top