Volume Buzz For ThinkOrSwim

om4

New member
Looking to create a label so it can be added to upper in charts that shows last bar volume in form of percentage with the following conditions:

1)compare last bar volume to past 100 days
2)i would want it to display in upper of chart
3) display in percentage
4) show green if above 300% ...yellow between 100% - 299% or else in Red
5) show percentage amount for previous bar

I'm trying to mimic Volume Buzz feature found on TC2000 which is said to have the following equation: 100 * (V / AVGV100.1 - 1)
 
Last edited by a moderator:
Ruby:
#VolumeBuzz
#Createdby @SuryaKiranC
#Requested By @om4 at https://usethinkscript.com/threads/unusual-volume-script-needed.9864


declare upper; #only keep one of these declare uncommented depends on the placement needs.
#declare lower;
#declare on_volume;

def aP = AggregationPeriod.DAY;
def BUZZ = 100 * (VOLUME(period = aP)[1] / Average(VOLUME(period = aP)[1],100));

AddLabel(Yes,"Buzz :" + round (BUZZ,2)+"% ", if BUZZ >300 then Color.Green else if BUZZ > 100 and BUZZ < 299 then Color.Yellow else Color.RED);
 
Last edited:
After a bit more search Volume Buzz is calculated based on todays volume not on previous day. The code in the above post is accurate for what is asked.

Here is the code for actual Volume Buzz and Volume Surge. Difference between Volume Buzz and Surge, the later includes the recent volume in the average calculations.

http://forums.worden.com/default.aspx?g=posts&t=63766

Ruby:
#VolumeBuzz_Surge
#Createdby @SuryaKiranC
#nased on request  @om4 at https://usethinkscript.com/threads/unusual-volume-script-needed.9864


declare upper; #only keep one of these declare uncommented depends on the placement needs.
#declare lower;
#declare on_volume;

def aP = AggregationPeriod.DAY;
def BUZZ = 100 * (VOLUME(period = aP) / Average(VOLUME(period = aP)[1],100));
def SURGE = 100 * (VOLUME(period = aP) / Average(VOLUME(period = aP),100));
AddLabel(Yes,"Buzz :" + round (BUZZ,2)+"% ", if BUZZ >300 then Color.Green else if BUZZ > 100 and BUZZ < 299 then Color.Yellow else Color.RED);
AddLabel(Yes,"Surge :" + round (SURGE,2)+"% ", if SURGE >300 then Color.Green else if SURGE > 100 and SURGE < 299 then Color.Yellow else Color.RED);
 
After a bit more search Volume Buzz is calculated based on todays volume not on previous day. The code in the above post is accurate for what is asked.

Here is the code for actual Volume Buzz and Volume Surge. Difference between Volume Buzz and Surge, the later includes the recent volume in the average calculations.

http://forums.worden.com/default.aspx?g=posts&t=63766

Ruby:
#VolumeBuzz_Surge
#Createdby @SuryaKiranC
#nased on request  @om4 at https://usethinkscript.com/threads/unusual-volume-script-needed.9864


declare upper; #only keep one of these declare uncommented depends on the placement needs.
#declare lower;
#declare on_volume;

def aP = AggregationPeriod.DAY;
def BUZZ = 100 * (VOLUME(period = aP) / Average(VOLUME(period = aP)[1],100));
def SURGE = 100 * (VOLUME(period = aP) / Average(VOLUME(period = aP),100));
AddLabel(Yes,"Buzz :" + round (BUZZ,2)+"% ", if BUZZ >300 then Color.Green else if BUZZ > 100 and BUZZ < 299 then Color.Yellow else Color.RED);
AddLabel(Yes,"Surge :" + round (SURGE,2)+"% ", if SURGE >300 then Color.Green else if SURGE > 100 and SURGE < 299 then Color.Yellow else Color.RED);
Any chance this can be revised to have a custom time input, and compare it to previous day's volume for that time period?
 
@YoloEZ I tied that multiple times in the past, with various volume indicators, I can grab volume for a part of the running day, but can't seems to be able to get the same from past day or further back.

must be something I am not doing right with the GetDay(), will keep at it and when I do find a smartway of doing this, I will update the post here.
 
Last edited:
Hi I'm wondering if it's at all possible to get the seconds elapsed since the start of a trading day (9:30 AM EST) while using a daily or weekly aggregation period.

I'm attempting to replicate TC2000's Volume Buzz Indicator, which is explained below:

"Volume Buzz is based on the 100-Period Simple Moving Average of Volume over the previous 100 days (so not including today).

The current Volume is compared to a percentage of the average volume which is directly proportional to the percentage of the trading day which has already passed. So at 10:15 AM ET, the current volume would be compared to about 11.54% of the 100-Day Simple Moving Average of Volume ending yesterday. If the result is +25%, it would mean that current Volume is about 14.42% of the average volume instead of 11.54% of the average volume."

Thanks.
 
I was looking at this this morning and the inherent problem we'll get with thinkorswim is that it cant pull data from lower aggregations. So if you're on daily, you cant use data from mins, hours, etc. The way volume buzz works is it gives a cumulative average from minutes passing through the day. So if its 10 am, its calculating that BY 10AM how much volume has there been compared to usual amount of volume by 10 am. Not possible unless theres a way to calc it on the minute chart, there will never be a way to see it from any other aggregation
 
Alright, feel like an ***** for not figuring this out before but you can do a quick "cheat" to get an approximation to see what's hot volume wise. Add this as a watchlist column. Just figure out what time of day it is and how many have passed (if its 12:30 then and the market has been open 3 hours then its 180) and enter it in the fraction numerator over 390. Youll just need to change the time every once in a while when youre scanning but youll get a good approximation of how hot the volume flow is. You can also just use it to rank your watchlist to see what's hottest for the day.

Code:
# Zanger Volume cheat by WTF_Dude 11.18.22
# aka "Volume Buzz"

def volavg = expaverage(volume, 20);

### CHANGE THE 180 TO HOW EVER MANY MINUTES HAVE PASSED SINCE MARKET OPEN

def form = EXPAverage(volume,20) *  (180 / 390 ) ;


plot zanger = volume / form;

zanger.assignvaluecolor(if zanger>=2 then createcolor(250,0,100) else if zanger>=1.2 then createcolor(250,0,250) else if zanger>=0.8 then color.light_gray else if zanger>=0.6 then createcolor(250,180,100) else createcolor(250,200,150));
 

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