It works great. Thank you! Is there a way to show only the current day's and hide the previous days' lines?
It works great. Thank you! Is there a way to show only the current day's and hide the previous days' lines?
Join useThinkScript to post your question to a community of 21,000+ developers and traders.
It works great. Thank you! Is there a way to show only the current day's and hide the previous days' lines?
It's a nice a job of programming. I'm curious why we didn't just adjust the opacity level on the default study to zero to see only the VAL's & POC.Yes, this controls the number of profiles to be displayed, currently at input profiles = 1000;, set it to input profiles = 1;
Yes you could. That is the native TOS script with parts commented (#) out. There are often many ways to achieve the same result.It's a nice a job of programming. I'm curious why we didn't just adjust the opacity level on the default study to zero to see only the VAL's & POC.
Try thisHello Everyone ,
I was able to get the POC point of Control Price to populate in the wtachlist,. however, how can I assign it a backlgorund color if over the POC Value, and a color if Under the POC Value. I am new to this.
def poc = reference VolumeProfile("time per profile" = "MONTH", "on expansion" = no, opacity = 0, "show value area" = No, multiplier = 1.0, "price per row height mode" = "TICKSIZE");
AddLabel(1, poc, Color.WHITE);
Code:def poc = reference VolumeProfile("time per profile" = "MONTH", "on expansion" = no, opacity = 0, "show value area" = No, multiplier = 1.0, "price per row height mode" = "TICKSIZE"); AddLabel(1, poc, Color.WHITE); assignBackgroundColor(if close > poc then color.green else color.red);
#
# TD Ameritrade IP Company, Inc. (c) 2010-2021
#
input pricePerRowHeightMode = {default AUTOMATIC, TICKSIZE, CUSTOM};
input customRowHeight = 1.0;
input timePerProfile = {default CHART, MINUTE, HOUR, DAY, WEEK, MONTH, "OPT EXP", BAR};
input multiplier = 1;
input onExpansion = yes;
input profiles = 1000;
input showPointOfControl = yes;
input showValueArea = yes;
input valueAreaPercent = 70;
input opacity = 50;
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];
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();
# Original author: Unknown
# Modified by 7of9
declare lower;
#Inputs
input Show30DayAvg = yes;
input ShowTodayVolume = yes;
input ShowPercentOf30DayAvg = yes;
input UnusualVolumePercent = 200;
input Show30BarAvg = yes;
input ShowCurrentBar = yes;
input ShowPercentOf30BarAvg = yes;
input ShowSellVolumePercent = yes;
def O = open;
def H = high;
def C = close;
def L = low;
def V = volume;
def buying = V*(C-L)/(H-L);
def selling = V*(H-C)/(H-L);
# Selling Volume
Plot SellVol = selling;
SellVol.setPaintingStrategy(PaintingStrategy.Histogram);
SellVol.SetDefaultColor(Color.Red);
SellVol.HideTitle();
SellVol.HideBubble();
SellVol.SetLineWeight(5);
# Total Volume
Plot BuyVol = volume;
BuyVol.setPaintingStrategy(PaintingStrategy.Histogram);
BuyVol.SetDefaultColor(Color.Dark_Green);
BuyVol.HideTitle();
BuyVol.HideBubble();
BuyVol.SetLineWeight(5);
#Volume Data
def volLast30DayAvg = (volume(period = "DAY")[1] + volume(period = "DAY")[2] + volume(period = "DAY")[3] + volume(period = "DAY")[4] + volume(period = "DAY")[5] + volume(period = "DAY")[6] + volume(period = "DAY")[7] + volume(period = "DAY")[8] + volume(period = "DAY")[9] + volume(period = "DAY")[10] + volume(period = "DAY")[11] + volume(period = "DAY")[12] + volume(period = "DAY")[13] + volume(period = "DAY")[14] + volume(period = "DAY")[15] + volume(period = "DAY")[16] + volume(period = "DAY")[17] + volume(period = "DAY")[18] + volume(period = "DAY")[19] + volume(period = "DAY")[20] + volume(period = "DAY")[21] + volume(period = "DAY")[22] + volume(period = "DAY")[23] + volume(period = "DAY")[24] + volume(period = "DAY")[25] + volume(period = "DAY")[26] + volume(period = "DAY")[27] + volume(period = "DAY")[28] + volume(period = "DAY")[29] + volume(period = "DAY")[30]) / 30;
def today = volume(period = "DAY");
def percentOf30Day = Round((today / volLast30DayAvg) * 100, 0);
def avg30Bars = (volume[1] + volume[2] + volume[3] + volume[4] + volume[5] + volume[6] + volume[7] + volume[8] + volume[9] + volume[10] + volume[11] + volume[12] + volume[13] + volume[14] + volume[15] + volume[16] + volume[17] + volume[18] + volume[19] + volume[20] + volume[21] + volume[22] + volume[23] + volume[24] + volume[25] + volume[26] + volume[27] + volume[28] + volume[29] + volume[30]) / 30;
def curVolume = volume;
def percentOf30Bar = Round((curVolume / avg30Bars) * 100, 0);
def SellVolPercent = Round((Selling / Volume) * 100, 0);
# Labels
AddLabel(Show30DayAvg, "Avg 30 Days: " + Round(volLast30DayAvg, 0), Color.LIGHT_GRAY);
AddLabel(ShowTodayVolume, "Today: " + today, (if percentOf30Day >= UnusualVolumePercent then Color.GREEN else if percentOf30Day >= 100 then Color.ORANGE else Color.LIGHT_GRAY));
AddLabel(ShowPercentOf30DayAvg, percentOf30Day + "%", (if percentOf30Day >= UnusualVolumePercent then Color.GREEN else if percentOf30Day >= 100 then Color.ORANGE else Color.WHITE) );
AddLabel(Show30BarAvg, "Avg 30 Bars: " + Round(avg30Bars, 0), Color.LIGHT_GRAY);
AddLabel(ShowCurrentBar, "Cur Bar: " + curVolume, (if percentOf30Bar >= UnusualVolumePercent then Color.GREEN else if PercentOf30Bar >= 100 then Color.ORANGE else Color.LIGHT_GRAY));
AddLabel(ShowPercentOf30BarAvg, PercentOf30Bar + "%", (if PercentOf30Bar >= UnusualVolumePercent then Color.GREEN else if PercentOf30Bar >= 100 then Color.ORANGE else Color.WHITE) );
AddLabel(ShowSellVolumePercent, "Cur Bar Sell %: " + SellVolPercent, (if SellVolPercent > 51 then Color.RED else if SellVolPercent < 49 then Color.GREEN else Color.ORANGE));
input length = 50;
plot Vol = volume;
plot VolAvg = Average(volume, length);
Vol.SetPaintingStrategy(PaintingStrategy.HISTOGRAM);
Vol.SetLineWeight(3);
Vol.DefineColor("Up", Color.UPTICK);
Vol.DefineColor("Down", Color.DOWNTICK);
Vol.AssignValueColor(if close > close[1] then Vol.color("Up") else if close < close[1] then Vol.color("Down") else GetColor(1));
VolAvg.SetDefaultColor(GetColor(8));
https://usethinkscript.com/threads/answers-to-commonly-asked-questions.6006/page-2#post-78392So the VolumeProfile shows the volume at different prices normally, but it shows it as 1 solid color. I would like to see if it's possible to have it show the ratio of buy and sell volume, similar to how the VolumeRatio indicator does it.
I took a screenshot of the VolumeProfile indicator and drew how it would ideally look:
Notice the partially red and partially green bars, that would be how the ratio of volume at that price would be displayed. So if there's 50% sell volume and 50% buy volume at a price of lets say 467 on SPY, then that bar at 467 would be half red half green.
Look at this,..... https://tos.mx/Qn2f88RHello, I was just wondering if there would be any way to have the VolumeProfile show the ratio between buy & sell vol at each prices. Basically want to combine these two scripts:
VolumeProfile
Code:# # TD Ameritrade IP Company, Inc. (c) 2010-2021 # input pricePerRowHeightMode = {default AUTOMATIC, TICKSIZE, CUSTOM}; input customRowHeight = 1.0; input timePerProfile = {default CHART, MINUTE, HOUR, DAY, WEEK, MONTH, "OPT EXP", BAR}; input multiplier = 1; input onExpansion = yes; input profiles = 1000; input showPointOfControl = yes; input showValueArea = yes; input valueAreaPercent = 70; input opacity = 50; 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]; 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();
and VolumeRatio:
Code:# Original author: Unknown # Modified by 7of9 declare lower; #Inputs input Show30DayAvg = yes; input ShowTodayVolume = yes; input ShowPercentOf30DayAvg = yes; input UnusualVolumePercent = 200; input Show30BarAvg = yes; input ShowCurrentBar = yes; input ShowPercentOf30BarAvg = yes; input ShowSellVolumePercent = yes; def O = open; def H = high; def C = close; def L = low; def V = volume; def buying = V*(C-L)/(H-L); def selling = V*(H-C)/(H-L); # Selling Volume Plot SellVol = selling; SellVol.setPaintingStrategy(PaintingStrategy.Histogram); SellVol.SetDefaultColor(Color.Red); SellVol.HideTitle(); SellVol.HideBubble(); SellVol.SetLineWeight(5); # Total Volume Plot BuyVol = volume; BuyVol.setPaintingStrategy(PaintingStrategy.Histogram); BuyVol.SetDefaultColor(Color.Dark_Green); BuyVol.HideTitle(); BuyVol.HideBubble(); BuyVol.SetLineWeight(5); #Volume Data def volLast30DayAvg = (volume(period = "DAY")[1] + volume(period = "DAY")[2] + volume(period = "DAY")[3] + volume(period = "DAY")[4] + volume(period = "DAY")[5] + volume(period = "DAY")[6] + volume(period = "DAY")[7] + volume(period = "DAY")[8] + volume(period = "DAY")[9] + volume(period = "DAY")[10] + volume(period = "DAY")[11] + volume(period = "DAY")[12] + volume(period = "DAY")[13] + volume(period = "DAY")[14] + volume(period = "DAY")[15] + volume(period = "DAY")[16] + volume(period = "DAY")[17] + volume(period = "DAY")[18] + volume(period = "DAY")[19] + volume(period = "DAY")[20] + volume(period = "DAY")[21] + volume(period = "DAY")[22] + volume(period = "DAY")[23] + volume(period = "DAY")[24] + volume(period = "DAY")[25] + volume(period = "DAY")[26] + volume(period = "DAY")[27] + volume(period = "DAY")[28] + volume(period = "DAY")[29] + volume(period = "DAY")[30]) / 30; def today = volume(period = "DAY"); def percentOf30Day = Round((today / volLast30DayAvg) * 100, 0); def avg30Bars = (volume[1] + volume[2] + volume[3] + volume[4] + volume[5] + volume[6] + volume[7] + volume[8] + volume[9] + volume[10] + volume[11] + volume[12] + volume[13] + volume[14] + volume[15] + volume[16] + volume[17] + volume[18] + volume[19] + volume[20] + volume[21] + volume[22] + volume[23] + volume[24] + volume[25] + volume[26] + volume[27] + volume[28] + volume[29] + volume[30]) / 30; def curVolume = volume; def percentOf30Bar = Round((curVolume / avg30Bars) * 100, 0); def SellVolPercent = Round((Selling / Volume) * 100, 0); # Labels AddLabel(Show30DayAvg, "Avg 30 Days: " + Round(volLast30DayAvg, 0), Color.LIGHT_GRAY); AddLabel(ShowTodayVolume, "Today: " + today, (if percentOf30Day >= UnusualVolumePercent then Color.GREEN else if percentOf30Day >= 100 then Color.ORANGE else Color.LIGHT_GRAY)); AddLabel(ShowPercentOf30DayAvg, percentOf30Day + "%", (if percentOf30Day >= UnusualVolumePercent then Color.GREEN else if percentOf30Day >= 100 then Color.ORANGE else Color.WHITE) ); AddLabel(Show30BarAvg, "Avg 30 Bars: " + Round(avg30Bars, 0), Color.LIGHT_GRAY); AddLabel(ShowCurrentBar, "Cur Bar: " + curVolume, (if percentOf30Bar >= UnusualVolumePercent then Color.GREEN else if PercentOf30Bar >= 100 then Color.ORANGE else Color.LIGHT_GRAY)); AddLabel(ShowPercentOf30BarAvg, PercentOf30Bar + "%", (if PercentOf30Bar >= UnusualVolumePercent then Color.GREEN else if PercentOf30Bar >= 100 then Color.ORANGE else Color.WHITE) ); AddLabel(ShowSellVolumePercent, "Cur Bar Sell %: " + SellVolPercent, (if SellVolPercent > 51 then Color.RED else if SellVolPercent < 49 then Color.GREEN else Color.ORANGE)); input length = 50; plot Vol = volume; plot VolAvg = Average(volume, length); Vol.SetPaintingStrategy(PaintingStrategy.HISTOGRAM); Vol.SetLineWeight(3); Vol.DefineColor("Up", Color.UPTICK); Vol.DefineColor("Down", Color.DOWNTICK); Vol.AssignValueColor(if close > close[1] then Vol.color("Up") else if close < close[1] then Vol.color("Down") else GetColor(1)); VolAvg.SetDefaultColor(GetColor(8));
This is sick actually it's like a more accurate volumeprofile. Thank you! Too bad we cant have it show ratioLook at this,..... https://tos.mx/Qn2f88R
Thanks for the replies, sorry I didn't see this before I made this post!
Look at this chart...Discard/use anything you need.... https://tos.mx/8IXFGWmThanks for the replies, sorry I didn't see this before I made this post!
I have been looking for this code everywhere! Thanks!Try this
YesI have been looking for this code everywhere! Thanks!
Is there a way to change how the price is viewed? Right now it shows like this...89.0013, or 335.2702. Is there any way to round it into a 2 decimal price?
Ruby:def poc = reference VolumeProfile("time per profile" = "MONTH", "on expansion" = no, opacity = 0, "show value area" = No, multiplier = 1.0, "price per row height mode" = "TICKSIZE"); AddLabel(1, astext(poc), Color.WHITE); assignBackgroundColor(if close > poc then color.green else color.red);
noIs there a way to reverse the Volume Profile so it extends into the chart like Trading View's?
how can i make the value area clear instead of grey. Truthfully i just want to see the red and green linesThis is the one I'm using.
View attachment 1020Code:# Profile TPO & Volume input profileType = {default Time, Volume}; input pricePerRowHeightMode = {default Ticksize, Automatic, Custom}; input customRowHeight = 1.0; input timePerProfile = {default Day, Week, Month, Year, Hour, Chart, "Opt Exp"}; input multiplier = 1; input OnExpansionProfile = No; input OnExpansionValueArea = No; input profiles = 2; input showPointOfControl = Yes; input showValueArea = Yes; input showValueAreaCloud = Yes; input ValueAreaPercent = 70; input ShowHighLow = Yes; input opacity = 5; input PaintBars = No; input ShowExtensions = No; input DynamicHideExtensions = Yes; input ShowLabel = No; def FibExt1 = 1.618; def FibExt2 = 2.618; def FibExt3 = 4.236; def SE = ShowExtensions; def ShowProfileValueAreaCloud = no; def period; def yyyymmdd = GetYYYYMMDD(); def seconds = SecondsFromTime(0); def month = GetYear() * 12 + GetMonth(); def year = GetYear(); 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 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 Year: period = Floor(year - First(year)); case "Opt Exp": period = exp_opt - First(exp_opt); } def CloseByPeriod = close(Period = timePerProfile)[-1]; def Openbyperiod = open(Period = timePerProfile)[-1]; def NewDay = if !IsNaN(CloseByPeriod) then 0 else 1; rec Count = if period != period[1] then (Count[1] + period - period[1]) % 1 else Count[1]; def Cond = Count < Count[1] + period - period[1]; def height; switch (pricePerRowHeightMode) { case Automatic: height = PricePerRow.AUTOMATIC; case Ticksize: height = PricePerRow.TICKSIZE; case Custom: height = customRowHeight; } profile VOL = if profileType == profileType.Volume then VolumeProfile("startNewProfile" = Cond, "onExpansion" = onExpansionProfile, "NumberOfProfiles" = profiles, "PricePerRow" = height, "Value Area Percent" = ValueAreaPercent) else TimeProfile("startNewProfile" = Cond, "OnExpansion" = onExpansionProfile, "NumberOfProfiles" = profiles, "PricePerRow" = height, "Value Area Percent" = ValueAreaPercent); def con = CompoundValue(1, onExpansionProfile, no); rec pc = if IsNaN(VOL.GetPointOfControl()) and con then pc[1] else VOL.GetPointOfControl(); rec hVA = if IsNaN(VOL.GetHighestValueArea()) and con then hVA[1] else VOL.GetHighestValueArea(); rec lVA = if IsNaN(VOL.GetLowestValueArea()) and con then lVA[1] else VOL.GetLowestValueArea(); rec HVA_Last = if period == period[1] then HVA_Last[1] else hVA[1]; rec PC_Last = if period == period[1] then PC_Last[1] else pc[1]; rec LVA_Last = if period == period[1] then LVA_Last[1] else lVA[1]; rec hProfile = if IsNaN(VOL.GetHighest()) and con then hProfile[1] else VOL.GetHighest(); rec lProfile = if IsNaN(VOL.GetLowest()) and con then lProfile[1] else VOL.GetLowest(); def plotsDomain = IsNaN(close) == onExpansionProfile; rec hP_Last = if period == period[1] then hP_Last[1] else hProfile[1]; rec lP_Last = if period == period[1] then lP_Last[1] else lProfile[1]; plot VAH = if !showValueArea then Double.NaN else if IsNaN(close[0]) then HVA_Last[0] else if !OnExpansionValueArea then HVA_Last[0] else Double.NaN; plot POC = if IsNaN(close[0]) then PC_Last[0] else if !OnExpansionValueArea then PC_Last[0] else Double.NaN; plot VAL = if !showValueArea then Double.NaN else if IsNaN(close[0]) then LVA_Last[0] else if !OnExpansionValueArea then LVA_Last[0] else Double.NaN; plot High = if !ShowHighLow then Double.NaN else if IsNaN(close[0]) then hP_Last[0] else if !OnExpansionValueArea then hP_Last[0] else Double.NaN; plot Low = if !ShowHighLow then Double.NaN else if IsNaN(close[0]) then lP_Last[0] else if !OnExpansionValueArea then lP_Last[0] else Double.NaN; DefineGlobalColor("Profile", GetColor(7)); 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 ShowProfileValueAreaCloud then GlobalColor("Value Area") else Color.CURRENT, opacity); POC.SetPaintingStrategy(PaintingStrategy.HORIZONTAL); POC.SetDefaultColor(Color.DARK_GRAY); #POC.SetDefaultColor(CreateColor(32,49,57)); POC.SetLineWeight(1); POC.HideTitle(); VAH.SetPaintingStrategy(PaintingStrategy.HORIZONTAL); VAH.SetDefaultColor(Color.DARK_GREEN); VAH.SetLineWeight(1); VAH.HideBubble(); VAH.HideTitle(); VAL.SetPaintingStrategy(PaintingStrategy.HORIZONTAL); VAL.SetDefaultColor(Color.DARK_RED); VAL.SetLineWeight(1); VAL.HideBubble(); VAL.HideTitle(); High.SetPaintingStrategy(PaintingStrategy.DASHES); High.SetDefaultColor(CreateColor(38, 38, 8)); High.SetLineWeight(1); High.HideBubble(); High.HideTitle(); Low.SetPaintingStrategy(PaintingStrategy.DASHES); Low.SetDefaultColor(CreateColor(38, 38, 8)); Low.SetLineWeight(1); Low.HideBubble(); Low.HideTitle(); #Paint Bars #AssignPriceColor(if !PaintBars then Color.CURRENT else if open >= VAH and close >= VAH then CreateColor(0, 204, 0) else if open <= VAL and close <= VAL then CreateColor(204, 0, 0) else Color.Light_GRAY); AssignPriceColor(if !PaintBars then Color.CURRENT else if open >= VAH and close >= VAH then Color.Green else if open <= VAL and close <= VAL then Color.Red else Color.Light_GRAY); #Value Area Cloud #DefineGlobalColor("Value Area Cloud", (CreateColor(20, 20, 20))); DefineGlobalColor("Value Area Cloud", Color.DARK_GRAY); def cloudhigh = if showValueAreaCloud and IsNaN(close[0]) then HVA_Last else if !OnExpansionValueArea then HVA_Last else Double.NaN; def cloudlow = if showValueAreaCloud and IsNaN(close[0]) then LVA_Last else if !OnExpansionValueArea then LVA_Last else Double.NaN; AddCloud (cloudhigh, cloudlow, GlobalColor("Value Area Cloud")); #Chart Label def InsideValueArea = close < HVA_Last and close > LVA_Last; def BelowValue = close < LVA_Last; AddLabel(ShowLabel, close, if InsideValueArea then Color.GRAY else if BelowValue then Color.RED else Color.GREEN); #Fibonacci Extensions def VAWidth = VAH - VAL; plot E1H = if SE < 1 then Double.NaN else VAH + VAWidth * (FibExt1 - 1); E1H.SetHiding(DynamicHideExtensions and close < VAH); E1H.SetDefaultColor(CreateColor(0, 51, 0)); E1H.SetPaintingStrategy(PaintingStrategy.DASHES); E1H.SetLineWeight(1); E1H.HideBubble(); E1H.HideTitle(); plot E1L = if SE < 1 then Double.NaN else VAL - VAWidth * (FibExt1 - 1); E1L.SetHiding(DynamicHideExtensions and close > VAL); E1L.SetDefaultColor(CreateColor(51, 0, 0)); E1L.SetPaintingStrategy(PaintingStrategy.DASHES); E1L.SetLineWeight(1); E1L.HideBubble(); E1L.HideTitle(); plot E2H = if SE < 1 then Double.NaN else VAH + VAWidth * (FibExt2 - 1); E2H.SetHiding(DynamicHideExtensions and close < E1H); E2H.SetDefaultColor(CreateColor(0, 51, 0)); E2H.SetPaintingStrategy(PaintingStrategy.DASHES); E2H.SetLineWeight(1); E2H.HideBubble(); E2H.HideTitle(); plot E2L = if SE < 1 then Double.NaN else VAL - VAWidth * (FibExt2 - 1); E2L.SetHiding(DynamicHideExtensions and close > E1L); E2L.SetDefaultColor(CreateColor(51, 0, 0)); E2L.SetPaintingStrategy(PaintingStrategy.DASHES); E2L.SetLineWeight(1); E2L.HideBubble(); E2L.HideTitle(); plot E3H = if SE < 1 then Double.NaN else VAH + VAWidth * (FibExt3 - 1); E3H.SetHiding(DynamicHideExtensions and close < E2H); E3H.SetDefaultColor(CreateColor(0, 51, 0)); E3H.SetPaintingStrategy(PaintingStrategy.DASHES); E3H.SetLineWeight(1); E3H.HideBubble(); E3H.HideTitle(); plot E3L = if SE < 1 then Double.NaN else VAL - VAWidth * (FibExt3 - 1); E3L.SetHiding(DynamicHideExtensions and close > E2L); E3L.SetDefaultColor(CreateColor(51, 0, 0)); E3L.SetPaintingStrategy(PaintingStrategy.DASHES); E3L.SetLineWeight(1); E3L.HideBubble(); E3L.HideTitle();
Try setting input opacity to zero (0) and comment out the following code as shownhow can i make the value area clear instead of grey. Truthfully i just want to see the red and green lines
#AddCloud (cloudhigh, cloudlow, GlobalColor("Value Area Cloud"));
Hello, I was just wondering if there would be any way to have the VolumeProfile show the ratio between buy & sell vol at each prices. Basically want to combine these two scripts:
VolumeProfile
Code:# # TD Ameritrade IP Company, Inc. (c) 2010-2021 # input pricePerRowHeightMode = {default AUTOMATIC, TICKSIZE, CUSTOM}; input customRowHeight = 1.0; input timePerProfile = {default CHART, MINUTE, HOUR, DAY, WEEK, MONTH, "OPT EXP", BAR}; input multiplier = 1; input onExpansion = yes; input profiles = 1000; input showPointOfControl = yes; input showValueArea = yes; input valueAreaPercent = 70; input opacity = 50; 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]; 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();
and VolumeRatio:
Code:# Original author: Unknown # Modified by 7of9 declare lower; #Inputs input Show30DayAvg = yes; input ShowTodayVolume = yes; input ShowPercentOf30DayAvg = yes; input UnusualVolumePercent = 200; input Show30BarAvg = yes; input ShowCurrentBar = yes; input ShowPercentOf30BarAvg = yes; input ShowSellVolumePercent = yes; def O = open; def H = high; def C = close; def L = low; def V = volume; def buying = V*(C-L)/(H-L); def selling = V*(H-C)/(H-L); # Selling Volume Plot SellVol = selling; SellVol.setPaintingStrategy(PaintingStrategy.Histogram); SellVol.SetDefaultColor(Color.Red); SellVol.HideTitle(); SellVol.HideBubble(); SellVol.SetLineWeight(5); # Total Volume Plot BuyVol = volume; BuyVol.setPaintingStrategy(PaintingStrategy.Histogram); BuyVol.SetDefaultColor(Color.Dark_Green); BuyVol.HideTitle(); BuyVol.HideBubble(); BuyVol.SetLineWeight(5); #Volume Data def volLast30DayAvg = (volume(period = "DAY")[1] + volume(period = "DAY")[2] + volume(period = "DAY")[3] + volume(period = "DAY")[4] + volume(period = "DAY")[5] + volume(period = "DAY")[6] + volume(period = "DAY")[7] + volume(period = "DAY")[8] + volume(period = "DAY")[9] + volume(period = "DAY")[10] + volume(period = "DAY")[11] + volume(period = "DAY")[12] + volume(period = "DAY")[13] + volume(period = "DAY")[14] + volume(period = "DAY")[15] + volume(period = "DAY")[16] + volume(period = "DAY")[17] + volume(period = "DAY")[18] + volume(period = "DAY")[19] + volume(period = "DAY")[20] + volume(period = "DAY")[21] + volume(period = "DAY")[22] + volume(period = "DAY")[23] + volume(period = "DAY")[24] + volume(period = "DAY")[25] + volume(period = "DAY")[26] + volume(period = "DAY")[27] + volume(period = "DAY")[28] + volume(period = "DAY")[29] + volume(period = "DAY")[30]) / 30; def today = volume(period = "DAY"); def percentOf30Day = Round((today / volLast30DayAvg) * 100, 0); def avg30Bars = (volume[1] + volume[2] + volume[3] + volume[4] + volume[5] + volume[6] + volume[7] + volume[8] + volume[9] + volume[10] + volume[11] + volume[12] + volume[13] + volume[14] + volume[15] + volume[16] + volume[17] + volume[18] + volume[19] + volume[20] + volume[21] + volume[22] + volume[23] + volume[24] + volume[25] + volume[26] + volume[27] + volume[28] + volume[29] + volume[30]) / 30; def curVolume = volume; def percentOf30Bar = Round((curVolume / avg30Bars) * 100, 0); def SellVolPercent = Round((Selling / Volume) * 100, 0); # Labels AddLabel(Show30DayAvg, "Avg 30 Days: " + Round(volLast30DayAvg, 0), Color.LIGHT_GRAY); AddLabel(ShowTodayVolume, "Today: " + today, (if percentOf30Day >= UnusualVolumePercent then Color.GREEN else if percentOf30Day >= 100 then Color.ORANGE else Color.LIGHT_GRAY)); AddLabel(ShowPercentOf30DayAvg, percentOf30Day + "%", (if percentOf30Day >= UnusualVolumePercent then Color.GREEN else if percentOf30Day >= 100 then Color.ORANGE else Color.WHITE) ); AddLabel(Show30BarAvg, "Avg 30 Bars: " + Round(avg30Bars, 0), Color.LIGHT_GRAY); AddLabel(ShowCurrentBar, "Cur Bar: " + curVolume, (if percentOf30Bar >= UnusualVolumePercent then Color.GREEN else if PercentOf30Bar >= 100 then Color.ORANGE else Color.LIGHT_GRAY)); AddLabel(ShowPercentOf30BarAvg, PercentOf30Bar + "%", (if PercentOf30Bar >= UnusualVolumePercent then Color.GREEN else if PercentOf30Bar >= 100 then Color.ORANGE else Color.WHITE) ); AddLabel(ShowSellVolumePercent, "Cur Bar Sell %: " + SellVolPercent, (if SellVolPercent > 51 then Color.RED else if SellVolPercent < 49 then Color.GREEN else Color.ORANGE)); input length = 50; plot Vol = volume; plot VolAvg = Average(volume, length); Vol.SetPaintingStrategy(PaintingStrategy.HISTOGRAM); Vol.SetLineWeight(3); Vol.DefineColor("Up", Color.UPTICK); Vol.DefineColor("Down", Color.DOWNTICK); Vol.AssignValueColor(if close > close[1] then Vol.color("Up") else if close < close[1] then Vol.color("Down") else GetColor(1)); VolAvg.SetDefaultColor(GetColor(8));
What's the difference between this and the VolumeProfile built into TOS @Thomas ? I'm trying to figure it out.Look at this,..... https://tos.mx/Qn2f88R
Start a new thread and receive assistance from our community.
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.
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.