Volume Profile Indicator & POCs For ThinkOrSwim

Is it possible to anchor TOS' Volume Profile so that it's anchored to midnight?
Start at midnight and run for 24 hours. In other words, 24-hour, anchored volume profile.
Would someone please code this? Appreciate your help.
 

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

@john3 See if this helps

Capture.jpg
Code:
#VolumeProfile_MidNight_Anchor
input begin = 0000;

input pricePerRowHeightMode = {AUTOMATIC, default TICKSIZE};
def height;
switch (pricePerRowHeightMode) {
case AUTOMATIC:
    height = PricePerRow.AUTOMATIC;
case TICKSIZE:
    height = PricePerRow.TICKSIZE;
}

def rth  = SecondsFromTime(begin) == 0 and secondsTillTime(begin)==0;

profile vol = VolumeProfile("startNewProfile" = rth, "onExpansion" = no, "numberOfProfiles" = 1000, pricePerRow = height);

def pca      = if IsNaN(vol.GetPointOfControl())   then pca[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 poc = if !rth or IsNaN(close) then poc[1] else pca;
def ub  = if !rth or IsNaN(close) then ub[1]  else hVA;
def lb  = if !rth or IsNaN(close) then lb[1]  else lVA;

plot VPOC = poc;
plot VAH  = ub;
plot VAL  = lb;

VPOC.SetDefaultColor(Color.MAGENTA);
VAH.SetDefaultColor(Color.WHITE);
VAL.SetDefaultColor(Color.WHITE);
VPOC.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
VAH.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
VAL.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);

input showpointofcontrol = yes;
input showvaluearea = yes;
input opacity = 50;

vol.Show(Color.CYAN, if showpointofcontrol then Color.CYAN else Color.CURRENT, if showvaluearea then Color.YELLOW else Color.CURRENT, opacity);

def hProfile = if IsNaN(vol.GetHighest()) then hProfile[1] else vol.GetHighest();
def lProfile = if IsNaN(vol.GetLowest())  then lProfile[1] else vol.GetLowest();

plot ProfileHigh =  hprofile;
plot ProfileLow  =  lprofile;

ProfileHigh.SetDefaultColor(Color.GREEN);
ProfileLow.SetDefaultColor(Color.RED);
ProfileHigh.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
ProfileLow.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
 
@john3 See if this helps

Capture.jpg
Code:
#VolumeProfile_MidNight_Anchor
input begin = 0000;

input pricePerRowHeightMode = {AUTOMATIC, default TICKSIZE};
def height;
switch (pricePerRowHeightMode) {
case AUTOMATIC:
    height = PricePerRow.AUTOMATIC;
case TICKSIZE:
    height = PricePerRow.TICKSIZE;
}

def rth  = SecondsFromTime(begin) == 0 and secondsTillTime(begin)==0;

profile vol = VolumeProfile("startNewProfile" = rth, "onExpansion" = no, "numberOfProfiles" = 1000, pricePerRow = height);

def pca      = if IsNaN(vol.GetPointOfControl())   then pca[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 poc = if !rth or IsNaN(close) then poc[1] else pca;
def ub  = if !rth or IsNaN(close) then ub[1]  else hVA;
def lb  = if !rth or IsNaN(close) then lb[1]  else lVA;

plot VPOC = poc;
plot VAH  = ub;
plot VAL  = lb;

VPOC.SetDefaultColor(Color.MAGENTA);
VAH.SetDefaultColor(Color.WHITE);
VAL.SetDefaultColor(Color.WHITE);
VPOC.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
VAH.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
VAL.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);

input showpointofcontrol = yes;
input showvaluearea = yes;
input opacity = 50;

vol.Show(Color.CYAN, if showpointofcontrol then Color.CYAN else Color.CURRENT, if showvaluearea then Color.YELLOW else Color.CURRENT, opacity);

def hProfile = if IsNaN(vol.GetHighest()) then hProfile[1] else vol.GetHighest();
def lProfile = if IsNaN(vol.GetLowest())  then lProfile[1] else vol.GetLowest();

plot ProfileHigh =  hprofile;
plot ProfileLow  =  lprofile;

ProfileHigh.SetDefaultColor(Color.GREEN);
ProfileLow.SetDefaultColor(Color.RED);
ProfileHigh.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
ProfileLow.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
Tried it now only shows one not multiples as shown on you screenshot
 
@diamondhands The above script was for a specific request to have the volume profile begin at Midnight. It seems to work on those symbols that trade over that period. For stocks and other symbols that do not trade over Midnight, please just use the regular TOS volumeprofile indicator, set to Day, to display it similar to what was in the picture above.
 
Does anyone know if there is a way to show a volume profile for the regular session hours and then a separate one for the extended hours and have that repeat for all days on the chart?

I see a way to start the volume profile at 9:30 AM and one at 5:00 PM but the problem is that each one is going to run until that same time comes around again. I think basically what you would need is a way to stop a volume profile but I don't see a way to do that.

I can also get regular session hours by just not showing the extended session but there is no way to show just extended session on a chart so I can't do the opposite with that. Plus it is really helpful to see them on the same chart because it makes them easier to compare.

I think it is very useful to see what the regular session does and what the after hours sessions does and compare where they traded, etc. I think it can give a lot of clues about how we are going to open and tendencies that we might have for the day.

I don't think this is possible in TOS but I thought I would ask in case anyone has found a way before that I haven't tried.

Thanks!

Bill
 
See if this works the way you want> Adjust the rthbegin and rthend to control the split of the volumeprofile.

Code:
#VolumeProfile_RTHvOvernight
#BLT
input pricePerRowHeightMode = {default AUTOMATIC, TICKSIZE, CUSTOM};
input customRowHeight = 1.0;
input onExpansion = no;
input profiles = 1000;
input showPointOfControl = yes;
input showValueArea = yes;
input valueAreaPercent = 70;
input opacity = 50;

input rthbegin  = 0930;
input rthend    = 1615;
def count = secondsfromTime(rthbegin)>0 and secondstillTime(rthend)>0;
def cond = count != count[1];
def height;
switch (pricePerRowHeightMode) {
case AUTOMATIC:
    height = PricePerRow.AUTOMATIC;
case TICKSIZE:
    height = PricePerRow.TICKSIZE;
case CUSTOM:
    height = customRowHeight;
}

profile vol = VolumeProfile("startNewProfile" = cond, "onExpansion" = onExpansion, "numberOfProfiles" = profiles, "pricePerRow" = height, "value area percent" = valueAreaPercent);
def con = CompoundValue(1, onExpansion, no);
def pc = if IsNaN(vol.GetPointOfControl()) and con then pc[1] else vol.GetPointOfControl();
def hVA = if IsNaN(vol.GetHighestValueArea()) and con then hVA[1] else vol.GetHighestValueArea();
def lVA = if IsNaN(vol.GetLowestValueArea()) and con 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 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));

vol.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"));
POC.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
VAHigh.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
VALow.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
VAHigh.SetDefaultColor(GlobalColor("Value Area"));
VALow.SetDefaultColor(GlobalColor("Value Area"));
ProfileHigh.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
ProfileLow.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
ProfileHigh.SetDefaultColor(GetColor(3));
ProfileLow.SetDefaultColor(GetColor(3));
ProfileHigh.Hide();
ProfileLow.Hide();

input bubbles = yes;
input n  = 2;
def   n1 = n + 1;
AddChartBubble(bubbles and !IsNaN(close[n1]) and IsNaN(close[n]), VAHigh[n1], "V-VAH", color = Color.YELLOW, yes);
AddChartBubble(bubbles and !IsNaN(close[n1]) and IsNaN(close[n]), VALow[n1], "V-VAL", Color.YELLOW, no);
AddChartBubble(bubbles and !IsNaN(close[n1]) and IsNaN(close[n]), POC[n1], "V-POC", Color.RED, no);
 
[REQ] CLOUD PROJECT

I will try to explain my request as best as possible.

elements necessary for compilation:

1) session: eth or rth
2) high
3) low
4) mid point
5) poc

condition 1 = if poc> midpoint then (LOW + POC = calculates the distance between the minimum daily session and the poc), projects the LOW + POC distance FROM POC, drawing it on the graph with a line (with the possibility of adding a dynamic cloud ) ..

condition 2 = if poc <midpoint then (HIGH + POC = calculates the distance between the MAXIMUM of the daily session and the POC), projects the HIGHPOC distance FROM POC, drawing it on the graph with a line (with the possibility of adding a dynamic cloud).

I remain at your disposal for any clarification.




Thanks in advance .
 
See if this works the way you want> Adjust the rthbegin and rthend to control the split of the volumeprofile.

Code:
#VolumeProfile_RTHvOvernight
#BLT
input pricePerRowHeightMode = {default AUTOMATIC, TICKSIZE, CUSTOM};
input customRowHeight = 1.0;
input onExpansion = no;
input profiles = 1000;
input showPointOfControl = yes;
input showValueArea = yes;
input valueAreaPercent = 70;
input opacity = 50;

input rthbegin  = 0930;
input rthend    = 1615;
def count = secondsfromTime(rthbegin)>0 and secondstillTime(rthend)>0;
def cond = count != count[1];
def height;
switch (pricePerRowHeightMode) {
case AUTOMATIC:
    height = PricePerRow.AUTOMATIC;
case TICKSIZE:
    height = PricePerRow.TICKSIZE;
case CUSTOM:
    height = customRowHeight;
}

profile vol = VolumeProfile("startNewProfile" = cond, "onExpansion" = onExpansion, "numberOfProfiles" = profiles, "pricePerRow" = height, "value area percent" = valueAreaPercent);
def con = CompoundValue(1, onExpansion, no);
def pc = if IsNaN(vol.GetPointOfControl()) and con then pc[1] else vol.GetPointOfControl();
def hVA = if IsNaN(vol.GetHighestValueArea()) and con then hVA[1] else vol.GetHighestValueArea();
def lVA = if IsNaN(vol.GetLowestValueArea()) and con 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 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));

vol.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"));
POC.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
VAHigh.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
VALow.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
VAHigh.SetDefaultColor(GlobalColor("Value Area"));
VALow.SetDefaultColor(GlobalColor("Value Area"));
ProfileHigh.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
ProfileLow.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
ProfileHigh.SetDefaultColor(GetColor(3));
ProfileLow.SetDefaultColor(GetColor(3));
ProfileHigh.Hide();
ProfileLow.Hide();

input bubbles = yes;
input n  = 2;
def   n1 = n + 1;
AddChartBubble(bubbles and !IsNaN(close[n1]) and IsNaN(close[n]), VAHigh[n1], "V-VAH", color = Color.YELLOW, yes);
AddChartBubble(bubbles and !IsNaN(close[n1]) and IsNaN(close[n]), VALow[n1], "V-VAL", Color.YELLOW, no);
AddChartBubble(bubbles and !IsNaN(close[n1]) and IsNaN(close[n]), POC[n1], "V-POC", Color.RED, no);
Hi Sleepy,

Quick question.... and it may be user-error on my part... 😀

When I change the RTH in the study to 9:30 to 16:00, here are the starting and ending bars for the RTH and Overnight sessions on my chart....

On a 15-minute chart of the /ES (I'm in the CT so my TOS charts are set to my local time zone/RTH: 8:30-15:00):

RTH:
1st bar is 8:45 (shouldn't this be 8:30?)
Last bar is 14:45 (which is correct)

Overnight (non-RTH):
1st bar is 15:00 (which is correct)
Last bar is 8:30 (shouldn't this be 8:15?)

I've tried tweaking the RTH times in the study but can't seem to get that 8:30 bar to be included in RTH.... 🤔
 
Hi Sleepy,

Quick question.... and it may be user-error on my part... 😀

When I change the RTH in the study to 9:30 to 16:00, here are the starting and ending bars for the RTH and Overnight sessions on my chart....

On a 15-minute chart of the /ES (I'm in the CT so my TOS charts are set to my local time zone/RTH: 8:30-15:00):

RTH:
1st bar is 8:45 (shouldn't this be 8:30?)
Last bar is 14:45 (which is correct)

Overnight (non-RTH):
1st bar is 15:00 (which is correct)
Last bar is 8:30 (shouldn't this be 8:15?)

I've tried tweaking the RTH times in the study but can't seem to get that 8:30 bar to be included in RTH.... 🤔

For /ES, to have it display RTH v Non-RTH on a 15 min chart, change the inputs to 0915 and 1615. TOS code is based upon ET, but your chart display will show the times based upon your chart setting's timezone.

 
See if this helps
Code:
#VolumeProfile_PreviousDay_displayed_NextDay
#20190426 Sleepyz

def height = PricePerRow.AUTOMATIC;
input timePerProfile = {CHART, MINUTE, HOUR, default DAY, WEEK, MONTH, "OPT EXP", BAR};
input multiplier = 1;
input profiles = 1000;
input valueAreaPercent = 70;

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;
}

def count = CompoundValue(1, if period != period[1] then (count[1] + period - period[1]) % multiplier else count[1], 0);
def cond = count < count[1] + period - period[1];
profile vol = VolumeProfile("startNewProfile" = cond, "numberOfProfiles" = profiles, "pricePerRow" = height, "value area percent" = valueAreaPercent, onExpansion = no);

#Prior Day High/Low ValueAreas
def HVA = if IsNaN(vol.GetHighestValueArea()) then HVA[1] else vol.GetHighestValueArea();
def pHVA = CompoundValue(1, if cond then HVA[1] else pHVA[1], Double.NaN);
def LVA = if IsNaN(vol.GetLowestValueArea()) then LVA[1] else vol.GetLowestValueArea();
def pLVA = CompoundValue(1, if cond then LVA[1] else pLVA[1], Double.NaN);

plot PrevHVA = pHVA;
plot PrevLVA = pLVA;
PrevHVA.SetDefaultColor(Color.YELLOW);
PrevLVA.SetDefaultColor(Color.YELLOW);
PrevHVA.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
PrevLVA.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);

#Prior Day POC Calculated
def POC = if IsNaN(vol.GetPointOfControl()) and cond then POC[1] else vol.GetPointOfControl();
def pPOC = CompoundValue (1, if cond then POC[1] else pPOC[1], Double.NaN);

plot PrevPOC = pPOC;
PrevPOC.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
PrevPOC.SetDefaultColor(Color.MAGENTA);
Hi Sleepy,

Any idea that you can think of why these lines sometimes change (not always) a little throughout the current day? Sometimes, they don't seem to be "anchored" throughout the current day (a single smooth line from the previous day into & throughout the current day) and move a little bit as the day progresses..... They don't move too much, but enough to make a difference in a few points/ticks... 😀
 
Last edited:
Hi Sleepy,

Any idea that you can think of why these lines sometimes change (not always) a little throughout the current day? Sometimes, they don't seem to be "anchored" throughout the current day (a single smooth line from the previous day into & throughout the current day) and move a little bit as the day progresses..... They don't move too much, but enough to make a difference in a few points/ticks... 😀
This indicator is a stock TOS indicator and this version is a workaround for a request a number of years ago to separate RTH. So perhaps since it was not designed with an option to do this separation, It may not be accurate. TOS has not provided the criteria behind the profile, so any movement may be the result of that. Personally,
 
This indicator is a stock TOS indicator and this version is a workaround for a request a number of years ago to separate RTH. So perhaps since it was not designed with an option to do this separation, It may not be accurate. TOS has not provided the criteria behind the profile, so any movement may be the result of that. Personally,
Hi Sleepy,

Are you referring to my earlier question about a time adjustment for the Volume Profile study for RTH vs non-RTH, your time adjustment suggestion was a perfect fix (Post #82))?

This question is about using the stock TOS Volume Profile study with the "#VolumeProfile_PreviousDay_displayed_NextDay" from Post #64... :)
 
Hi Sleepy,

Are you referring to my earlier question about a time adjustment for the Volume Profile study for RTH vs non-RTH, your time adjustment suggestion was a perfect fix (Post #82))?

This question is about using the stock TOS Volume Profile study with the "#VolumeProfile_PreviousDay_displayed_NextDay" from Post #64... :)

Thank you, I was referring to the RTH version. What you may be seeing with the #64 code is that did not have an option for
pricePerRowHeightMode rather than just automatic. So if you are comparing that code to a stock volume profile the previous day set at 'custom or tick' rather than automatic, you might see a difference. I have adjusted the script to allow for options for row height.

Code:
#VolumeProfile_PreviousDay_displayed_NextDay
#20190426 Sleepyz
#20210712 Sleepyz - revised to add option for pricePerRowHeightMode rather than just automatic

input pricePerRowHeightMode = {default AUTOMATIC, TICKSIZE, CUSTOM};
input customRowHeight = 1.0;
def height;
switch (pricePerRowHeightMode) {
case AUTOMATIC:
    height = PricePerRow.AUTOMATIC;
case TICKSIZE:
    height = PricePerRow.TICKSIZE;
case CUSTOM:
    height = customRowHeight;
}
input timePerProfile = {CHART, MINUTE, HOUR, default DAY, WEEK, MONTH, "OPT EXP", BAR};
input multiplier = 1;
input profiles = 1000;
input valueAreaPercent = 70;

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;
}

def count = CompoundValue(1, if period != period[1] then (count[1] + period - period[1]) % multiplier else count[1], 0);
def cond = count < count[1] + period - period[1];
profile vol = VolumeProfile("startNewProfile" = cond, "numberOfProfiles" = profiles, "pricePerRow" = height, "value area percent" = valueAreaPercent, onExpansion = no);

#Prior Day High/Low ValueAreas
def HVA = if IsNaN(vol.GetHighestValueArea()) then HVA[1] else vol.GetHighestValueArea();
def pHVA = CompoundValue(1, if cond then HVA[1] else pHVA[1], Double.NaN);
def LVA = if IsNaN(vol.GetLowestValueArea()) then LVA[1] else vol.GetLowestValueArea();
def pLVA = CompoundValue(1, if cond then LVA[1] else pLVA[1], Double.NaN);

plot PrevHVA = pHVA;
plot PrevLVA = pLVA;
PrevHVA.SetDefaultColor(Color.YELLOW);
PrevLVA.SetDefaultColor(Color.YELLOW);
PrevHVA.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
PrevLVA.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);

#Prior Day POC Calculated
def POC = if IsNaN(vol.GetPointOfControl()) and cond then POC[1] else vol.GetPointOfControl();
def pPOC = CompoundValue (1, if cond then POC[1] else pPOC[1], Double.NaN);

plot PrevPOC = pPOC;
PrevPOC.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
PrevPOC.SetDefaultColor(Color.MAGENTA);
 
First... How to insert image in a post thread?

Are you sure your chart settings in the upper right corner are set to Auto or Manual on all charts...??? Without seeing what's happening it's hard to be of more help... I don't use Volume Profile but there might be a version that allows you to scale the output by displaying thousands or millions rather than raw volume...
thanks for the help https%3A//i.imgur.com/PWL52z5.png[/img]']
PWL52z5.png
Here's the images. Yes, they are both set to auto.
 

Not the exact question you're looking for?

Start a new thread and receive assistance from our community.

87k+ Posts
417 Online
Create Post

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