Real-Time Volume Indicator Feature Image on FloatChecker

Real-Time Volume Indicator for Thinkorswim

As active traders, we like to see as much information as possible about volume. We wanted to share this indicator we found that can help you visualize the volume in real time. It breaks down the percentage of buying volume vs. selling volume throughout the trading day. Follow the short video featuring Steve from FloatChecker to see how you can easily add this indicator to your Thinkorswim platform. If you’re already familiar with thinkScript, just grab the script provided at the end of this post.

We found this script watching a webcast on the TD Ameritrade YouTube channel. The instructor explains how not all volume is equal in any given candle. Some volume occurs as the price is moving up (buying volume), while other volume occurs as the price is moving down (selling volume). The indicator shows the percentage of buying volume and selling volume. We also added labels to help you see these values more clearly. The video further explains how the indicator works.

Feel free to edit the script and make any changes you like. As with all trading decisions, do your own research and decide whether you are comfortable with relying on this indicator. We’ve been experimenting with this indicator ourselves to see how we can incorporate it into our trading. Leave a comment on our YouTube channel and let everyone know how you are using it.

declare lower;
input over_bought = 90;
input over_sold = 10;
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);
#last bar
def OL = open[1];
def HL = high[1];
def CL = close[1];
def LL = low[1];
def VL = volume[1];
def LBuying = VL * (CL - LL) / (HL - LL);
def LSelling = VL * (HL - CL) / (HL - LL);

#Buying Selling Ratio
plot BSR = 100 * (Buying) / (Buying + Selling);
plot OverSold = over_sold;
plot OverBought = over_bought;
BSR.SetPaintingStrategy(PaintingStrategy. LINE);
BSR.HideTitle();
BSR.HideBubble();
BSR.SetLineWeight(2);
BSR.DefineColor("OverBought", GetColor(1));
BSR.DefineColor("Normal", GetColor(0));
BSR.DefineColor("OverSold", GetColor(8));
BSR.AssignValueColor(if BSR  >=  over_bought then BSR.Color("OverBought") else if BSR <= over_sold then BSR.Color("OverSold") else BSR.Color("Normal"));
AddCloud(0,  over_sold,  Color.liGHT_RED,  Color.RED);
AddCloud(100, over_bought, Color.LigHT_GREEN, Color.GREEN);

#################
#  Volume %     #
#################
def totVol = Round(Buying, 0) + Round(Selling, 0) ;
def buyPercent  = ( Round(Buying, 0)  / totVol ) * 100;
def sellPercent = ( Round(Selling, 0) / totVol ) * 100; 

#######################################Chart Time Frame Buying & Selling Volumes#######################################
input Show_Labels = yes;

AddLabel(Show_Labels, "Total Vol: " + volume(period = AggregationPeriod.DAY), Color.WHITE);
#AddLabel(Show_Labels, "LastBarBuy Vol: " + Round(LBuying, 0), #Color.LIGHT_ORANGE);
#AddLabel(Show_Labels, "LastBarSell Vol: " + Round(LSelling, 0), Color.PINK);

AddLabel(Show_Labels, "CurrentBuy Vol: " + Round(Buying, 0) + " -- " + Round(buyPercent, 0) + "%", if Buying > Selling then Color.LIGHT_GREEN else Color.LIGHT_RED);
AddLabel(Show_Labels, "CurrentSell Vol: " + Round(Selling, 0) + " -- " + Round(sellPercent, 0) + "%", if Selling > Buying then Color.LIGHT_GREEN else Color.LIGHT_RED);