vZone (Volumes Based Support/Resistance)

PT_Scalper

Member
VIP
@PT_Scalper
Looks like no contributor has been able to help you. It could be that you did not provide enough information. What more can you tell us?

When there is no reply to your question, perhaps it is because it is not clear what you are asking. Please reply with more information or there is a risk that your post will be deleted due to inactivity.

Help us help you:
Provide a detail explanation of what you are trying to accomplish.
Provide a marked-up screenshot of what a chart that meets all your conditions would look like.
Unsure of how to upload screenshots to the forum, Here are directions.

When you are posting your question, please follow the guidelines found here:
https://usethinkscript.com/threads/answers-to-commonly-asked-questions.6006/#post-58016

Here are some other options.
There are other resources.

If you have this question, others will also. So if you find an answer to your question, could you post it to the forum? Your contribution will be helping a legion of like-minded traders and thinkscripters. Thanks! :)

Hi @MerryDay,

I think the questions were pretty to the point and not sure if there is a different way to ask them but I will try;

Is there anyway to modify the time or add a Pre-Market and After Hours to this V Box?
- Is there any way to add premarket and after hours boxes to the study?
1- Premarket 04:00-09:00
2- After hours 16:00-20:00


I tried to change the times but it did not work.

Also, is there any way to turn off volume zone one from showing the full trading day while zones 2 and 3 only show the desired timeframe?
- There are 3 time zones in the indicator
1- 09:30-11:00
2- 11:00-14:00
3- 14:00-16:00
Zone 1 always displays the box from 9:30-16:00 and the other 2 zones display only the time frames listed above.
Anyway to only display zone 1 box for the desired timeframe and not the entire trading day?



Thank you!
 

SuryaKiranC

Well-known member
Hi @MerryDay,

I think the questions were pretty to the point and not sure if there is a different way to ask them but I will try;

Is there anyway to modify the time or add a Pre-Market and After Hours to this V Box?
- Is there any way to add premarket and after hours boxes to the study?
1- Premarket 04:00-09:00
2- After hours 16:00-20:00


I tried to change the times but it did not work.

Also, is there any way to turn off volume zone one from showing the full trading day while zones 2 and 3 only show the desired timeframe?
- There are 3 time zones in the indicator
1- 09:30-11:00
2- 11:00-14:00
3- 14:00-16:00
Zone 1 always displays the box from 9:30-16:00 and the other 2 zones display only the time frames listed above.
Anyway to only display zone 1 box for the desired timeframe and not the entire trading day?



Thank you!
Sorry didn't see your message earlier.

1) Plotting pre/post market zones may be possible, if you have already tired changing the time, please also change the Today, this is playing a big part, apart from the time windows, to plot those levels. This is not meant for penny tickers that may have huge volumes pre/post market.

2) As for the Zone1 Plotting the whole day, it is as intended to show the levels where it could go, once a reversal is Identified. when you get a chance, please check out the video from Post #1, here. But if you prefer for a specific time window only, I suppose it is possible to achieve this, Just not motivated enough to put in the time in it at the moment.

-Surya
 
Last edited:

The_Wilbatross

New member
VIP
Yet another Support/Resistance Indicator for DayTrading, but with a twist, We use high/low of High Volume Bar, in three different Zones of the Day.
With out further delay, Uploading the code here, will come back and edit this line with more appropriate description.

huge thanks to @cos251 for helping me with Coding this, Reviewing and Testing it.

Link to Video: https://www.screencast.com/users/Ma...10/media/f1702bb2-2090-463a-8ad2-59639c1166cd

vZone Extend On/Off
Shared Study Link: http://tos.mx/yA5VXad Click here for --> Easiest way to load shared links
Ruby:
## vZoneSTUDY.ts
## This Indicator is based on the Following concept and, I suggest watch the video before you start to use this.
##
## https://www.screencast.com/users/MarketGauge/folders/DATE1010/media/f1702bb2-2090-463a-8ad2-59639c1166cd
## This is to Plot Support/Resistance based on High Volume Candle in three different time zones for the day.
##
## Removing the header Credit credits and description is not permitted, any modification needs to be shared.
## A big thanks to @COS251 for helping me with Coding this, Reviewing and Testing it.
##
## V 1.1 : Just added the ability to disable the vZones, automatically, extending from previous in to current session.
##  Note : It is available as an option, should somebody prefer the extension. Set "Extend" to your needs accordingly.
## V 1.0 : Split Day in to three Zones and Find the highest Volume Candle for each zone and plot Support/Resistance.
##        :     Zone 1 : 09:30 - 11:00
##        :     Zone 2 : 11:00 - 14:00
##        :     Zone 3 : 14:00 - 16:00
##        :     vZones are Plotted on 15m and lower charts.
##        :  Plots EMA Cloud to assist with identifying reversals, Keeping EMA Clouds for all Timeframes


declare upper;
declare once_per_bar;

def Future = if GetSymbolPart(1) == "/YM:XCBT" or GetSymbolPart(1) == "/ES:XCME" or GetSymbolPart(1) == "/NQ:XCME" or GetSymbolPart(1) == "/RTY:XCME" or GetSymbolPart(1) == "/EMD:XCME" or GetSymbolPart(1) == "/NKD:XCME" or GetSymbolPart(1) == “/DX:XICE" or GetSymbolPart(1) == "/6E:XCME" or  GetSymbolPart(1) == "/6A:XCME" or GetSymbolPart(1) == "/ZB:XCBT" or GetSymbolPart(1) == "/ZN:XCBT" or GetSymbolPart(1) == "/CL:XNYM" or GetSymbolPart(1) == "/NG:XNYM" or GetSymbolPart(1) == "/GC:XCEC" or GetSymbolPart(1) == "/SI:XCEC" or  GetSymbolPart(1) == "/HG:XCEC” or GetSymbolPart(1) == "/6B:XCME" or GetSymbolPart(1) == "/ZC:XCBT" or GetSymbolPart(1) == "/ZS:XCBT" or GetSymbolPart(1) == "/CC:XICE" or GetSymbolPart(1) == "/KC:XICE" or GetSymbolPart(1) == ”/CT:XICE" or GetSymbolPart(1) == "/ZW:XCBT" or GetSymbolPart(1) == "/SB:XICE" or GetSymbolPart(1) == "/LE:XCME" or GetSymbolPart(1) == "/HO:XNYM" or GetSymbolPart(1) == "/HE:XCME" or GetSymbolPart(1) == "/OJ:XICE" then yes else no;

AddLabel(if Future then yes else no, "Future", Color.YELLOW);

input   showEMACloud = Yes;
input  audibleAlerts = Yes;
input Extend = {default "No", "Yes"};

def Today = GetYYYYMMDD();
def StartTime = 0930;
def   Update1 = 1100;
def   Update2 = 1400;
def   EndTime = 1600;

def Zone1 = SecondsFromTime(StartTime) >= 0 and SecondsTillTime(Update1) >= 0;
def Zone2 =   SecondsFromTime(Update1) >= 0 and SecondsTillTime(Update2) >= 0;
def Zone3 =   SecondsFromTime(Update2) >= 0 and SecondsTillTime(EndTime) >= 0;

DefineGlobalColor("Zone1", CreateColor(204, 255, 225));
DefineGlobalColor("Zone2", CreateColor(252, 220, 101));
DefineGlobalColor("Zone3", CreateColor(204, 204, 198));
DefineGlobalColor( "EMA1+", CreateColor(201, 255, 234));
DefineGlobalColor( "EMA1-", CreateColor(255, 105, 105));
DefineGlobalColor( "EMA2+", CreateColor(125, 176, 130));
DefineGlobalColor( "EMA2-", CreateColor(194, 152, 227));
DefineGlobalColor( "EMA3+", CreateColor(161, 217, 247));
DefineGlobalColor( "EMA3-", CreateColor(255, 255, 112));

def  ema1low = 5;
def ema1high = 13;
def  ema2low = 34;
def ema2high = 51;
def  ema3low = 72;
def ema3high = 89;

def  ema5 = if showEMACloud then ExpAverage(close,  ema1low) else Double.NaN;
def ema13 = if showEMACloud then ExpAverage(close, ema1high) else Double.NaN;
def ema34 = if showEMACloud then ExpAverage(close,  ema2low) else Double.NaN;
def ema51 = if showEMACloud then ExpAverage(close, ema2high) else Double.NaN;
def ema72 = if showEMACloud then ExpAverage(close,  ema3low) else Double.NaN;
def ema89 = if showEMACloud then ExpAverage(close, ema3high) else Double.NaN;

AddCloud( ema5, ema13, GlobalColor("EMA1+"), GlobalColor("EMA1-"));
AddCloud(ema34, ema51, GlobalColor("EMA2+"), GlobalColor("EMA2-"));
AddCloud(ema72, ema89, GlobalColor("EMA3+"), GlobalColor("EMA3-"));

def CrossAbove = if showEMACloud and ema5 > ema13 and ema5[1] <= ema13[1] then 1 else 0;
def CrossBelow = if showEMACloud and ema5 < ema13 and ema5[1] >= ema13[1] then 1 else 0;

Alert(showEMACloud and audibleAlerts and CrossAbove, "Buy", Alert.BAR, Sound.Ding);
Alert(showEMACloud and audibleAlerts and CrossBelow, "Sell", Alert.BAR, Sound.Ring);

################################################################
##########         Booleans Set for Plot Use           #########
################################################################
def afterStart;
def beforeEnd;
def openPrice;
if GetAggregationPeriod() <= AggregationPeriod.FIFTEEN_MIN {
    afterStart = GetTime() > RegularTradingStart(GetYYYYMMDD());
    beforeEnd = GetTime() < RegularTradingEnd(GetYYYYMMDD());
    openPrice = DailyOpen();
} else {
    afterStart = Double.NaN;
    beforeEnd = Double.NaN;
    openPrice = Double.NaN;
}

plot DailyO = if openPrice then openPrice else Double.NaN;

script Zone {
    def H ;
    def L ;
    def V ;

    input CountIn = 0930;
    input CountOut = 1100;
    def TF = SecondsFromTime(CountIn) >= 0 and SecondsTillTime(CountOut) >= 0;

    if TF and !TF[1] {
        H = high;
        L = low;
        V = volume;
    } else if TF and volume > V[1] {
        H = high;
        L = low;
        V = volume;
    } else {
        H = H[1];
        L = L[1];
        V = V[1];
    }
    plot VZH = H;
    plot VZL = L;
    VZH.Hide();
    VZL.Hide();
}

def Z1H;
def Z1L;
def Z2H;
def Z2L;
def Z3H;
def Z3L;

switch (Extend){

Case "Yes":
 Z1H = Zone(CountIn = StartTime, CountOut = Update1).VZH;
 Z2H = Zone(CountIn =   Update1, CountOut = Update2).VZH;
 Z3H = Zone(CountIn =   Update2, CountOut = EndTime).VZH;

 Z1L = Zone(CountIn = StartTime, CountOut = Update1).VZL;
 Z2L = Zone(CountIn =   Update1, CountOut = Update2).VZL;
 Z3L = Zone(CountIn =   Update2, CountOut = EndTime).VZL;

Case "No":
 Z1H = if today != today[1] then Double.NaN else Zone(CountIn = StartTime, CountOut = Update1).VZH;
 Z2H = if today and  !Zone2 then Double.NaN else Zone(CountIn =   Update1, CountOut = Update2).VZH;
 Z3H = if today and  !Zone3 then Double.NaN else Zone(CountIn =   Update2, CountOut = EndTime).VZH;

 Z1L = if today != today[1] then Double.NaN else Zone(CountIn = StartTime, CountOut = Update1).VZL;
 Z2L = if today and  !Zone2 then Double.NaN else Zone(CountIn =   Update1, CountOut = Update2).VZL;
 Z3L = if today and  !Zone3 then Double.NaN else Zone(CountIn =   Update2, CountOut = EndTime).VZL;
}

def BelowVZ = if close < Z1L or close < Z2L or close < Z3L then 1 else 0;
def AboveVZ = if close > Z1H or close > Z2H or close > Z3H then 1 else 0;

AddLabel(if (GetAggregationPeriod() > AggregationPeriod.FIFTEEN_MIN) then yes else no, "vBox Zones on 5/10/15M Charts Only", Color.RED);

AddCloud(if afterStart and beforeEnd then Z1H else Double.NaN, if afterStart and beforeEnd then Z1L else Double.NaN, GlobalColor("Zone1"), GlobalColor("Zone1"));
AddCloud(if    Update1 and beforeEnd then Z2H else Double.NaN, if    Update1 and beforeEnd then Z2L else Double.NaN, GlobalColor("Zone2"), GlobalColor("Zone2"));
AddCloud(if    Update2 and beforeEnd then Z3H else Double.NaN, if    Update2 and beforeEnd then Z3L else Double.NaN, GlobalColor("Zone3"), GlobalColor("Zone3"));

Alert(audibleAlerts and AboveVZ, "Above High VolumeBar Caution Long", Alert.BAR, Sound.Ding);
Alert(audibleAlerts and BelowVZ, "Below High VolumeBar Look for Reversal", Alert.BAR, Sound.Ring);
This is some amazing work. I am trying to play around with this code to see its limitations. I hope this isn't a dumb question, but Is there a way to show the aggregated 15min on the 5min chart. My goal would be to show the higher timeframe support/resistance while showing the lower timeframe 'candlestick patterns'. Thanks!
 

cos251

Well-known member
This is some amazing work. I am trying to play around with this code to see its limitations. I hope this isn't a dumb question, but Is there a way to show the aggregated 15min on the 5min chart. My goal would be to show the higher timeframe support/resistance while showing the lower timeframe 'candlestick patterns'. Thanks!
It is possible. The original code in post 1 would need to be modified to include the aggregation period. I will say, the original strategy was to view this on a 5m timeframe (that is what @SuryaKiranC based it on) so anything else would move away from the original strategy.
 

The_Wilbatross

New member
VIP
It is possible. The original code in post 1 would need to be modified to include the aggregation period. I will say, the original strategy was to view this on a 5m timeframe (that is what @SuryaKiranC based it on) so anything else would move away from the original strategy.
My intention was not to move away from the original strategy. I figured a breakout of the 5min VZone box which coincides with a breakout of the 15min VZone box could yield a larger run. Conversely, knowing where the 15min resistance might help place targets on a 5-min breakout. Although, it is just a thought that I wanted to back-test... it may all be nonsense.
 

SuryaKiranC

Well-known member
My intention was not to move away from the original strategy. I figured a breakout of the 5min VZone box which coincides with a breakout of the 15min VZone box could yield a larger run. Conversely, knowing where the 15min resistance might help place targets on a 5-min breakout. Although, it is just a thought that I wanted to back-test... it may all be nonsense.
You want to test out that theory, try both the timeframes side-by-side, I keep both 5m & 15m on 2 different cells on the grid.

-S
 

PT_Scalper

Member
VIP
Sorry didn't see your message earlier.

1) Plotting pre/post market zones may be possible, if you have already tired changing the time, please also change the Today, this is playing a big part, apart from the time windows, to plot those levels. This is not meant for penny tickers that may have huge volumes pre/post market.

2) As for the Zone1 Plotting the whole day, it is as intended to show the levels where it could go, once a reversal is Identified. when you get a chance, please check out the video from Post #1, here. But if you prefer for a specific time window only, I suppose it is possible to achieve this, Just not motivated enough to put in the time in it at the moment.

-Surya
Hi @SuryaKiranC ,

Thanks for getting back.

1- I tried changing the time but nothing that I did works. No worries - it was more of is it possible or not. No need to make any changes.

2- Makes sense. Thanks for that.
 

Similar threads

Top