vZone (Volumes Based Support/Resistance) For ThinkOrSwim

Status
Not open for further replies.
@SuryaKiranC , would it be possible to show each box/lines for the time between the start of the 1st zone to endtime of the 3rd zone (selecting "Yes" to extension param seems buggy)?

e.g.
zone 1 @8 AM to @12 PM
zone 2 @12 PM to @2 PM
zone 3 @2PM to @4:15 PM

Show the 1st zone box/lines from 8AM to 4:15 PM
Show the 2nd zone box/lines from 12PM to 4:15PM
Show the 3rd zone box/lines from 2PM to 4:15PM
(the extension would be of the most recent range of each zone)

For previous highest vol ranges of each zone for the same day, show dotted lines (same colors) and extend it to the 3rd zone's end time.

e.g.
Zone 1 range shifts between 8AM and 12PM multiple times.
a max vol candle range is derived @8AM > changes @9:45AM > Changes @11:50 AM
This would result in the main box/lines change as usual (and 11:50AM range would be extended to the end of 3rd zone)
And for ranges derived @8AM and @9:45AM would be drawn in dotted lines between 9:45AM (end of the first instance - 8AM candle ) to 4:15PM and 11:50AM (end of the 2nd instance - 9:45 candle) and 4:15PM. Guess you would only need to draw one boundary since the 2nd one would be drawn by the next instance. Maybe text-only bubbles would be needed to indicate lower and upper boundary of each zone to differentiate.

Also, alerts would work with previous/dotted zones as well.
Oh, and is it possible to hide the vertical boxes/lines that show at the time of shift in ranges?

This is just a thought, not sure how easy it would be though. :)

Thanks for this awesome indicator.
 
I agree, you can try this on 15,... I need to see how it reacts and if I can understand extraction for profit, otherwise I will stay with price action..
I to am mainly a price action trader..I do think this study fits perfectly into price action...

You can use this method even on the daily, drawing levels at highs and lows of extreme volume days

Unusual amounts of volume create a memory point in the market
 
e.g.
Zone 1 range shifts between 8AM and 12PM multiple times.
a max vol candle range is derived @8AM > changes @9:45AM > Changes @11:50 AM
This would result in the main box/lines change as usual (and 11:50AM range would be extended to the end of 3rd zone)
And for ranges derived @8AM and @9:45AM would be drawn in dotted lines between 9:45AM (end of the first instance - 8AM candle ) to 4:15PM and 11:50AM (end of the 2nd instance - 9:45 candle) and 4:15PM. Guess you would only need to draw one boundary since the 2nd one would be drawn by the next instance. Maybe text-only bubbles would be needed to indicate lower and upper boundary of each zone to differentiate.

Also, alerts would work with previous/dotted zones as well.
Oh, and is it possible to hide the vertical boxes/lines that show at the time of shift in ranges?

This is just a thought, not sure how easy it would be though. :)

Thanks for this awesome indicator.
Zone are defined as following, all time in EST.

## : Zone 1 : 09:30 - 11:00
## : Zone 2 : 11:00 - 14:00
## : Zone 3 : 14:00 - 16:00

As for the possibility, I supposed anything is a possibility, But that would be a deviation of the original theory explained in the video, if there is a well defined theory/strategy and edge to custom time zones by all means we can.

As for the Plots, Zone1 is plotted for the entire time of the trading hours. Zone2 & 3 from the defined start to end of trade hours.

Extend_On/Off is only to meant from the zones from prior day to be extended in to current day. Please refer to the screenshot, posed in the original post to see the difference.


Hiding the vertical lines, could be done but may require addition coding, more variable declaration, messy coding. Would you not rather see the same zone connected through out the session? that would be easier to track, when you are running around and switching through tickers and tracking a zillion thing during trader hours.

If we have a defined strategy though, we could always start a different indicator.

-S
 
I watched the video and it mentions zone 1 should be regular trading hours (rth) start to 90 minutes after open, zone 3 should be 120 minutes from rth end, and zone 2 everything in between. I trade futures that have start times other than 9:30 EST (like /CL and /6E) so I converted all the times for zone calculations to be dynamic based on the rules from the video. With this version you shouldn't need to mess with the script when you change to instruments with odd start and end times.

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_bigboss : adjusted logic to automatically detect start time, 90 minutes in, and 2 hours before end time for zones.
## 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 Zone1 = gettime() >= RegularTradingStart(GetYYYYMMDD()) and gettime() <= RegularTradingStart(GetYYYYMMDD()) + 90*60*1000;
def Zone2 = gettime() > RegularTradingStart(GetYYYYMMDD()) + 90*60*1000 and gettime() <= RegularTradingEnd(GetYYYYMMDD())-120*60*1000;
def Zone3 = gettime() > RegularTradingEnd(GetYYYYMMDD())-120*60*1000 and getTime() <= RegularTradingEnd(GetYYYYMMDD());

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;
    input TimeFrame = yes;   
#    def TF = SecondsFromTime(CountIn) >= 0 and SecondsTillTime(CountOut) >= 0;
    def tf = timeframe;
    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(Zone1).VZH;
 Z2H = Zone(Zone2).VZH;
 Z3H = Zone(Zone3).VZH;

 Z1L = Zone(Zone1).VZL;
 Z2L = Zone(Zone2).VZL;
 Z3L = Zone(Zone3).VZL;



Case "No":
 Z1H = if today != today[1] then Double.NaN else Zone(Zone1).VZH;
 Z2H = if today and  !Zone2 then Double.NaN else Zone(Zone2).VZH;
 Z3H = if today and  !Zone3 then Double.NaN else Zone(Zone3).VZH;

 Z1L = if today != today[1] then Double.NaN else Zone(Zone1).VZL;
 Z2L = if today and  !Zone2 then Double.NaN else Zone(Zone2).VZL;
 Z3L = if today and  !Zone3 then Double.NaN else Zone(Zone3).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    beforeEnd then Z2H else Double.NaN, if    beforeEnd then Z2L else Double.NaN, GlobalColor("Zone2"), GlobalColor("Zone2"));
AddCloud(if    beforeEnd then Z3H else Double.NaN, if    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);
 
Zone are defined as following, all time in EST.

## : Zone 1 : 09:30 - 11:00
## : Zone 2 : 11:00 - 14:00
## : Zone 3 : 14:00 - 16:00

As for the possibility, I supposed anything is a possibility, But that would be a deviation of the original theory explained in the video, if there is a well defined theory/strategy and edge to custom time zones by all means we can.

As for the Plots, Zone1 is plotted for the entire time of the trading hours. Zone2 & 3 from the defined start to end of trade hours.

Extend_On/Off is only to meant from the zones from prior day to be extended in to current day. Please refer to the screenshot, posed in the original post to see the difference.


Hiding the vertical lines, could be done but may require addition coding, more variable declaration, messy coding. Would you not rather see the same zone connected through out the session? that would be easier to track, when you are running around and switching through tickers and tracking a zillion thing during trader hours.

If we have a defined strategy though, we could always start a different indicator.

-S
Ok, I now understand the decision behind zones' timing.

For extending the zones' drawings, I think the following might help describe what I'm thinking.

X4zwrO9.jpg


Green lines/box= Zone 1
-- 1: Low of 1st highest vol candle withing this zone
-- 2: High of the 1st highest vol candle within the zone
-- 3: High of the 2nd and final highest vol candle within the zone (note, the Low of the 2nd and final highest vol candle within the zone happens to be same as 2)

Yellow lines/Box = Zone 2
-- 4: Low of 1st highest vol candle withing this zone
-- 5: High of the 1st highest vol candle within the zone
-- 6: High of the 2nd highest vol candle within the zone (note, the Low of the 2nd highest vol candle within the zone happens to be same as 5)
-- 7: Low of the 3rd and final highest vol candle within the zone
-- 8: High of the 3rd and final highest vol candle within the zone

Blue Lines/Box = Zone 3
-- 9: Low of 1st highest vol candle withing this zone
-- 10: High of the 1st highest vol candle within the zone
-- 11: Low of the 2ndrd and final highest vol candle within the zone
-- 12 High of the 2nd and final highest vol candle within the zone

For all non-final instances of the highest vol candles within each zone are marked with lines and extends until the end of RTH (16:00).
For all final instances of the highest vol candles within each zone are marked with boxes and extends until the end of RTH.

I was thinking about these lines/boxes extending until the end of day to use them as S/R levels. Also, alerts when candles crossing these lines/boxes would be a "nice-to-have" (aka, not necessary if too complex).

Please let me know if this helps. That said, not sure how complex this makes things so I totally understand if it's not something that is doable. Thanks
 
Ok, I now understand the decision behind zones' timing.

For extending the zones' drawings, I think the following might help describe what I'm thinking.

X4zwrO9.jpg


Green lines/box= Zone 1
-- 1: Low of 1st highest vol candle withing this zone
-- 2: High of the 1st highest vol candle within the zone
-- 3: High of the 2nd and final highest vol candle within the zone (note, the Low of the 2nd and final highest vol candle within the zone happens to be same as 2)

Yellow lines/Box = Zone 2
-- 4: Low of 1st highest vol candle withing this zone
-- 5: High of the 1st highest vol candle within the zone
-- 6: High of the 2nd highest vol candle within the zone (note, the Low of the 2nd highest vol candle within the zone happens to be same as 5)
-- 7: Low of the 3rd and final highest vol candle within the zone
-- 8: High of the 3rd and final highest vol candle within the zone

Blue Lines/Box = Zone 3
-- 9: Low of 1st highest vol candle withing this zone
-- 10: High of the 1st highest vol candle within the zone
-- 11: Low of the 2ndrd and final highest vol candle within the zone
-- 12 High of the 2nd and final highest vol candle within the zone

For all non-final instances of the highest vol candles within each zone are marked with lines and extends until the end of RTH (16:00).
For all final instances of the highest vol candles within each zone are marked with boxes and extends until the end of RTH.

I was thinking about these lines/boxes extending until the end of day to use them as S/R levels. Also, alerts when candles crossing these lines/boxes would be a "nice-to-have" (aka, not necessary if too complex).

Please let me know if this helps. That said, not sure how complex this makes things so I totally understand if it's not something that is doable. Thanks

We do all of this today, but all with boxes though not with lines for some and then boxes for new zone. Most days you wont. find Zone1 Re-plotting, As Zone1 consists of Accumulated Overnight Volume and is the shortest zone to find another candle higher than the open candle, that said there is a chance, we can see that Zone replotted, after the initial few candles.

Zone2 & 3 are easy re-plot, and zone2 is the lengthiest of the 3 and Zone3 could get the pop in the volume as much as last candle. That said all 3 of them are plotted from the time they start to the End of the Day. then Extension on/off is only plotting last session in to Current.

Having mix and match of these zone plots between lines and cloud, while not impossible, but could involve in a bit of tedious coding.

-S
 
We do all of this today, but all with boxes though not with lines for some and then boxes for new zone. Most days you wont. find Zone1 Re-plotting, As Zone1 consists of Accumulated Overnight Volume and is the shortest zone to find another candle higher than the open candle, that said there is a chance, we can see that Zone replotted, after the initial few candles.

Zone2 & 3 are easy re-plot, and zone2 is the lengthiest of the 3 and Zone3 could get the pop in the volume as much as last candle. That said all 3 of them are plotted from the time they start to the End of the Day. then Extension on/off is only plotting last session in to Current.

Having mix and match of these zone plots between lines and cloud, while not impossible, but could involve in a bit of tedious coding.

-S
9b3cLl1.jpg

Here's the updated version (more constant with how clouds are drawn). I believe the only needed change would be to extend the clouds to the end and also extend the previous high/low of each zone to the end with lines (or dotted lines).
 
Last edited:
for some reason its slowing down my TOS. Curious is this available in Trading view?
We didn't code it for Trading View, But again this is not our original concept, so it is possible there is a Trading View version out there.

As for slow, would you mind listing your config and what Timeframe you are loading this, and how many charts you keep open?
 
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!
 
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.
 
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.
 
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
 
So what do the different EMAs represent?
Just lookup on EMA Cloud strategy, and what people do with it, there are few theories out there. vZone by itself will not show reversals, I was trying to use EMA clouds to determine if I should hold my longs or book profit.
-S
 
Status
Not open for further replies.

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
618 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