Volume Profile for Futures Only


New member
Long time lurker, but wanted to say I really appreciate this site and all of the members here.

Question: Is there a way to configure Volume Profile to display only the Globex overnight session?

Ideally, I would like to have 2 Volume Profile studies on the same chart. One for the night and day sessions separated.

All the best,


New member
Hmm. I'm not sure. But maybe you can try to implement some sort of time limit into the Volume Profile indicator?
Thank you for pointing me in the right direction, sir.

I think I've got an idea of how to do it lol, I can't seem to figure out how to isolate the time period from 3p pst to 6:30a pst following day to implement within the volume profile period


I was looking for the same function as Im getting into TPO and Volume Profiles more on TOS, consider using the SecondsFromTime() function.
I would appreciate any updates :)
Last edited:


New member
I was looking for the same function as Im getting into TPO and Volume Profiles more on TOS, consider using the SecondsFromTime() function.
I would appreciate any updates :)
Hi, try this:

input pricePerRowHeightMode = {AUTOMATIC, TICKSIZE, default CUSTOM};

input customRowHeight = 1.0;

input timePerProfile = {CHART, default MINUTE, HOUR, DAY, WEEK, MONTH, "OPT EXP", BAR};

input multiplier = 1;

input onExpansion = no;

input profiles = 1;

input showPointOfControl = yes;

input showValueArea = yes;

input valueAreaPercent = 70;

input opacity = 7;

def period;

def yyyymmdd = getYyyyMmDd();

def seconds = secondsFromTime(0);

def month = getYear() * 12 + getMonth();

def day_number = daysFromDate(first(yyyymmdd)) + getDayOfWeek(first(yyyymmdd));

def dom = getDayOfMonth(yyyymmdd);

def dow = getDayOfWeek(yyyymmdd - dom + 1);

def expthismonth = (if dow > 5 then 27 else 20) - dow;

def exp_opt = month + (dom > expthismonth);

switch (timePerProfile) {

case CHART:

period = 0;

case MINUTE:

period = floor(seconds / 60 + day_number * 24 * 60);

case HOUR:

period = floor(seconds / 3600 + day_number * 24);

case DAY:

period = countTradingDays(Min(first(yyyymmdd), yyyymmdd), yyyymmdd) - 1;

case WEEK:

period = floor(day_number / 7);

case MONTH:

period = floor(month - first(month));

case "OPT EXP":

period = exp_opt - first(exp_opt);

case BAR:

period = barNumber() - 1;


input RthBegin  = 0930;

input RthEnd    = 1600;

#input showBubbles = no;

def bar = BarNumber();

def RTHBar1 = if SecondsFromTime(RthBegin) == 0 and

SecondsTillTime(RthBegin) == 0

then bar

else RTHBar1[1];

def RTHBarEnd = if SecondsFromTime(RthEnd) == 0 and

SecondsTillTime(RthEnd) == 0

then 1

else Double.NaN;

def RTH = SecondsFromTime(RthBegin) > 0 and

SecondsTillTime(RthEnd) > 0;

def cond = RTH != RTH[1];

def height;

switch (pricePerRowHeightMode) {


height = PricePerRow.AUTOMATIC;


height = PricePerRow.TICKSIZE;

case CUSTOM:

height = customRowHeight;


profile tpo = timeProfile("startNewProfile" = cond, "onExpansion" = onExpansion, "numberOfProfiles" = profiles, "pricePerRow" = height, "value area percent" = valueAreaPercent);

def con = compoundValue(1, onExpansion, no);

def pc = if IsNaN(tpo.getPointOfControl()) and con then pc[1] else tpo.getPointOfControl();

def hVA = if IsNaN(tpo.getHighestValueArea()) and con then hVA[1] else tpo.getHighestValueArea();

def lVA = if IsNaN(tpo.getLowestValueArea()) and con then lVA[1] else tpo.getLowestValueArea();

def hProfile = if IsNaN(tpo.getHighest()) and con then hProfile[1] else tpo.getHighest();

def lProfile = if IsNaN(tpo.getLowest()) and con then lProfile[1] else tpo.getLowest();

def plotsDomain = IsNaN(close) == onExpansion;

plot POC = if plotsDomain then pc else Double.NaN;

plot ProfileHigh = if plotsDomain then hProfile else Double.NaN;

plot ProfileLow = if plotsDomain then lProfile else Double.NaN;

plot VAHigh = if plotsDomain then hVA else Double.NaN;

plot VALow = if plotsDomain then lVA else Double.NaN;

DefineGlobalColor("Profile", GetColor(1));

DefineGlobalColor("Point Of Control", GetColor(5));

DefineGlobalColor("Value Area", GetColor(8));

tpo.show(globalColor("Profile"), if showPointOfControl then globalColor("Point Of Control") else color.current, if showValueArea then globalColor("Value Area") else color.current, opacity);

POC.SetDefaultColor(globalColor("Point Of Control"));




VAHigh.SetDefaultColor(globalColor("Value Area"));

VALow.SetDefaultColor(globalColor("Value Area"));







Similar threads