Mobius Volume Waves for ThinkorSwim

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

If you're downloading my setup then check out my brackets.

UeQTeyn.png
 
Last edited by a moderator:
MESascH.png



  • I labeled the chart areas with numbers to help people keep track.





fQltUUD.png


  • Just in case.

WQZ7fBr.png




--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

First group

1 - c_supertrend_mobius - https://tos.mx/eGwb7vP

2 - VWAP

3 - c_Percent_Dif_MDA - https://tos.mx/q2A5p35

4 - c_Important_note - https://tos.mx/xTInacu

5 - c_reversal - https://tos.mx/3Y4SzHA

6 - c_Ascend_Trading_Auto_Trendline_Indicator - https://tos.mx/lU9ScxX

------------------------------------------------------------------


Second Group

1 - c_ALERT_3_MDA - http://tos.mx/CvUS2FC

2 - RSI

3 - c_reversal - https://tos.mx/3Y4SzHA


---------------------------------------------------

Third Group

1 - c_Percent_Dif_MDA - https://tos.mx/q2A5p35

2 - c_Mobius_SuperTrend_Volume_Waves_final - https://tos.mx/9NHrd0z

3 - c_reversal - https://tos.mx/3Y4SzHA


---------------------------------------


Fourth Group

1 - c_Percent_Dif_MDA - https://tos.mx/q2A5p35

2 - c_Mob_squeeze - https://tos.mx/zMPLFHD

3 - c_reversal - https://tos.mx/3Y4SzHA


----------------------------------------------------------------------------------------------------------------------------------------------------------------
Group 1 - Screen shots in one whole group -listed by the order they're on my study set -
----------------------------------------------------------------------------------------------------------------------------------------------------------------
Screenshots of individual studies - listed by the order they're in my study set.


1 - c_supertrend_mobius

t7BtzuM.png



2 - VWAP

FmCwefB.png

3 - c_Percent_Dif_MDA

wzGpSrs.png



4 - c_important_note


XMh9ZiF.png



5 - reversal

OwPWNQa.png




6 - c_ascend_trading_auto_trendline_indicator

WcZdJ78.png



----------------------------------------------------------------------------------------------------------------------------------------------------------------
Group 2 - Screen shots in one whole group -listed by the order they're on my study set -
----------------------------------------------------------------------------------------------------------------------------------------------------------------
Screenshots of individual studies - listed by the order they're in my study set.


1 - c_ALERT_3_MDA

7NV44ze.png



2 - RSI

n34DB0K.png



3 - c_reversal

iVrEa46.png


----------------------------------------------------------------------------------------------------------------------------------------------------------------
Group 3 - Screen shots in one whole group -listed by the order they're on my study set -
----------------------------------------------------------------------------------------------------------------------------------------------------------------
Screenshots of individual studies - listed by the order they're in my study set.


1 - c_Percent_Dif_MDA


Z5DxYzh.png




2 - c_mobius_supertrend_volume_waves_final

1kxbT39.png



3 - c_reversal


ANn5g8w.png




----------------------------------------------------------------------------------------------------------------------------------------------------------------
Group 4 - Screen shots in one whole group -listed by the order they're on my study set -
----------------------------------------------------------------------------------------------------------------------------------------------------------------
Screenshots of individual studies - listed by the order they're in my study set.


1 - c_Percent_Dif_MDA

wfoG2N1.png



2 - c_mob_squeeze

Ym13tut.png



3 - c_reversal


EecasNC.png
 
Last edited by a moderator:
MESascH.png



  • I labeled the chart areas with numbers to help people keep track.





fQltUUD.png


  • Just in case.

WQZ7fBr.png




--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

First group

1 - c_supertrend_mobius - https://tos.mx/eGwb7vP

2 - VWAP

3 - c_Percent_Dif_MDA - https://tos.mx/q2A5p35

4 - c_Important_note - https://tos.mx/xTInacu

5 - c_reversal - https://tos.mx/3Y4SzHA

6 - c_Ascend_Trading_Auto_Trendline_Indicator - https://tos.mx/lU9ScxX

------------------------------------------------------------------


Second Group

1 - c_ALERT_3_MDA - http://tos.mx/CvUS2FC

2 - RSI

3 - c_reversal - https://tos.mx/3Y4SzHA


---------------------------------------------------

Third Group

1 - c_Percent_Dif_MDA - https://tos.mx/q2A5p35

2 - c_Mob_squeeze - https://tos.mx/OPZGsuu

3 - c_reversal - https://tos.mx/3Y4SzHA


---------------------------------------


Fourth Group

1 - c_Percent_Dif_MDA - https://tos.mx/q2A5p35

2 - c_Mob_squeeze - https://tos.mx/zMPLFHD

3 - c_reversal - https://tos.mx/3Y4SzHA


----------------------------------------------------------------------------------------------------------------------------------------------------------------
Group 1 - Screen shots in one whole group -listed by the order they're on my study set -
----------------------------------------------------------------------------------------------------------------------------------------------------------------
Screenshots of individual studies - listed by the order they're in my study set.


1 - c_supertrend_mobius

t7BtzuM.png



2 - VWAP

FmCwefB.png

3 - c_Percent_Dif_MDA

wzGpSrs.png



4 - c_important_note


XMh9ZiF.png



5 - reversal

OwPWNQa.png




6 - c_ascend_trading_auto_trendline_indicator

WcZdJ78.png



----------------------------------------------------------------------------------------------------------------------------------------------------------------
Group 2 - Screen shots in one whole group -listed by the order they're on my study set -
----------------------------------------------------------------------------------------------------------------------------------------------------------------
Screenshots of individual studies - listed by the order they're in my study set.


1 - c_ALERT_3_MDA

7NV44ze.png



2 - RSI

n34DB0K.png



3 - c_reversal

iVrEa46.png


----------------------------------------------------------------------------------------------------------------------------------------------------------------
Group 3 - Screen shots in one whole group -listed by the order they're on my study set -
----------------------------------------------------------------------------------------------------------------------------------------------------------------
Screenshots of individual studies - listed by the order they're in my study set.


1 - c_Percent_Dif_MDA


Z5DxYzh.png




2 - c_mobius_supertrend_volume_waves_final

1kxbT39.png



3 - c_reversal


ANn5g8w.png




----------------------------------------------------------------------------------------------------------------------------------------------------------------
Group 4 - Screen shots in one whole group -listed by the order they're on my study set -
----------------------------------------------------------------------------------------------------------------------------------------------------------------
Screenshots of individual studies - listed by the order they're in my study set.


1 - c_Percent_Dif_MDA

wfoG2N1.png



2 - c_mob_squeeze

Ym13tut.png



3 - c_reversal


EecasNC.png

Wow. Much appreciate you sharing your setup. What is your bottom settings for the Mobius SuperTrend Volume Waves? Do you have any custom codes in that indcator?
 
Does anyone know how to interpret the volume waves? I am not able to figure out what they are showing and how to interpret the waves? Thanks in advance.
 
Does anyone know how to interpret the volume waves? I am not able to figure out what they are showing and how to interpret the waves? Thanks in advance.

Simply have the indicator to paint the colors. Once they turn colors, say from green to red, it is a bearish sign. If they turn red to green = bullish
 
Good morning traders,

Very interesting indicator. I was wondering if there is an upper chart indicator only? Were it solely changes the color of the candles and doesn't add a study to the bottom of my chart?

@MerryDay
 
@MerryDay thanks for your help.

Does anyone have any idea how to add an alert whenever the wave changes color in either direction? Thanks.
indeed, it would be very helpful if we could set an alert to sound off once each time the histogram changes color (either from green to red or vice versa).

i tried this but it didn't work right:

Ruby:
Alert(w1 and w2[1], “Buy Alert”, Alert.BAR, Sound.Ring);
Alert(w2 and w1[1], “Sell Alert”, Alert.BAR, Sound.Ring);

(there were no errors though, ToS accepted the above lines...)

can someone please assist? :unsure:

thanks!
 
Last edited:
Mobius Supertrend Volume Waves PLUS Welkin Volume Labels
Volume Waves present a simple visual picture. But I find I still want my volume statistics. So I added Welkin's Volume Statistics
Ruby:
# Mobius Supertrend Volume Waves PLUS Welkin Volume Labels
# V01.2020
# Plots Volume Waves based on trend.

declare lower;

input n = 6;
input AvgType = AverageType.HULL;
input ATRmult = .7;
def h = high;
def l = low;
def c = close;
def v = volume;

DefineGlobalColor("Ascending", CreateColor(0, 165, 0));
DefineGlobalColor("descending", CreateColor(225, 0, 0));
DefineGlobalColor("avg", Color.CYAN);
def ATR = MovingAverage(AvgType, TrueRange(h, c, l), n);
def DN = HL2 + (AtrMult * ATR);
def UP = HL2 + (-AtrMult * ATR);
def cond = if c < cond[1]
           then DN
           else UP;
def accumulation = cond == UP;
def distribution = cond == DN;
def w1 = if accumulation and !accumulation[1]
         then v
         else if accumulation
         then w1[1] + v
         else Double.NaN;
def w2 = if distribution and !distribution[1]
         then v
         else if distribution
         then w2[1] + v
         else Double.NaN;


plot waves1 = w1;
waves1.SetPaintingStrategy(PaintingStrategy.HISTOGRAM);
waves1.SetDefaultColor(GlobalColor("Ascending"));
waves1.SetLineWeight(5);
plot waves2 = w2;
waves2.SetPaintingStrategy(PaintingStrategy.HISTOGRAM);
waves2.SetDefaultColor(GlobalColor("Descending"));
waves2.SetLineWeight(5);
def SD = StDevAll(v);
plot avg = (HighestAll(w1/2)+highestAll(w2/2))/n ;
avg.SetDefaultColor(GlobalColor("avg"));
avg.SetLineWeight(3);
# End Code

#Advanced Volume Study
#[email protected]
#v5.22.2020

input AvgDayVolLength = 5;
input AvgVolLength = 20;
input ShowDayVolLabel = yes;
input ShowBarVolLabel = yes;
input ShowBuySellStrength = yes;

input VolAverageType = AverageType.SIMPLE;
input RelativetoPrevVolTolerance = 1.25; #if volume is 1.25x greater than previous bar it will paint even if it is still below the average/sigma2/sigma3

def NA = Double.NaN;
def PriceRange = high - low;
def TopShadowRange = if open >= close then high - open else high - close;
def BottomShadowRange = if open <= close then open - low else close - low;
def BodyRange = PriceRange - (TopShadowRange + BottomShadowRange);
def VolumeTopShadowValue = (1 - (TopShadowRange / PriceRange)) * volume;
def VolumeBottomShadowValue = ((BottomShadowRange / PriceRange) * volume);
def BodyRangeVolValue = ((BodyRange + BottomShadowRange) / PriceRange) * volume;
def DayVolAgg = if GetAggregationPeriod() < AggregationPeriod.DAY then AggregationPeriod.DAY else GetAggregationPeriod();

def DayVol = volume("period" = DayVolAgg);
def AvgDayVol = Average(DayVol, AvgDayVolLength);
def Start = 0930;
def End = 1600;
def conf = SecondsFromTime(Start) >= 0 and SecondsFromTime(End) <= 0;

plot VolColor = NA;
VolColor.DefineColor("Bullish", Color.GREEN);
VolColor.DefineColor("Bearish", Color.RED);
VolColor.DefineColor("VolAvg", CreateColor(0, 100, 200));
VolColor.DefineColor("VolSigma2", Color.DARK_ORANGE);
VolColor.DefineColor("VolSigma3", Color.MAGENTA);
VolColor.DefineColor("Relative to Prev", Color.YELLOW);
VolColor.DefineColor("Below Average", Color.GRAY);

#Current Candle Buy and Sell Strength
def BuyStr = ((close - low) / PriceRange) * 100;
def SellStr = ((high - close) / PriceRange) * 100;

def BuyVol =  (BuyStr / 100) * volume;
def SellVol = (SellStr / 100) * volume;

def Vol = volume;
def VolAvg = MovingAverage(VolAverageType, volume, AvgVolLength);

#2Sigma and 3Sigma Vol Filter
def Num_Dev1 = 2.0;
def Num_Dev2 = 3.0;
def averageType = AverageType.SIMPLE;
def sDev = StDev(data = Vol, length = AvgVolLength);

def VolSigma2 = VolAvg + Num_Dev1 * sDev;
def VolSigma3 = VolAvg + Num_Dev2 * sDev;


def RelDayVol = DayVol / AvgDayVol[1];
def RelPrevDayVol = DayVol / volume("period" = DayVolAgg)[1];
#Daily aggregation volume labels
AddLabel(if GetAggregationPeriod() >= AggregationPeriod.DAY then 0 else if ShowDayVolLabel then 1 else 0, "DayVol: " + DayVol + " / " + Round(RelDayVol, 2) + "x Avg(" + AvgDayVolLength + ") / " + Round(RelPrevDayVol, 2) + "x Prev", if DayVol > AvgDayVol then VolColor.Color("VolAvg") else VolColor.Color("Below Average"));

def RelVol = Vol / VolAvg[1];
def RelPrevVol = volume / volume[1];

#Triangle Vol Signal
def VolSignal = if Vol > VolSigma3 then volume else if Vol > VolSigma2 then volume else if Vol > VolAvg then volume else if RelPrevVol >= RelativetoPrevVolTolerance then volume else NA;

#current aggregation's volume labels
AddLabel(ShowBarVolLabel, "Vol: " + volume + " / " + Round(RelVol, 2) + "x Avg(" + AvgVolLength + ") / " + Round(RelPrevVol, 2) + "x Prev",  if Vol > VolSigma3 then VolColor.Color("VolSigma3") else if Vol > VolSigma2 then VolColor.Color("VolSigma2") else if Vol > VolAvg then VolColor.Color("VolAvg") else VolColor.Color("Below Average"));


DefineGlobalColor("LabelGreen",  CreateColor(0, 165, 0)) ;
#current candle Buy/Sell strength labels
AddLabel(if ShowBuySellStrength then 1 else 0, " ", Color.BLACK);
AddLabel(if ShowBuySellStrength then 1 else 0, "1", Color.GRAY);
AddLabel(if ShowBuySellStrength then 1 else 0, "Sell " + Round(SellStr, 2) + "%", if SellStr > BuyStr then Color.RED else Color.DARK_RED);
AddLabel(if ShowBuySellStrength then 1 else 0, "Buy " + Round(BuyStr, 2) + "%", if BuyStr > SellStr then GlobalColor("LabelGreen") else Color.DARK_GREEN);
3jCyq6d.png
Hi, can you explain the blue line thru the volumes in the indicator, is it 50% of the last 20 days?
 
Hi, can you explain the blue line thru the volumes in the indicator, is it 50% of the last 20 days?
He plots: the average of the HighestAll buying pressure plus the highestAll selling pressure divided by 2 over n periods to provide a visual representation of those spikes which are higher than average.
Code:
plot avg = (HighestAll(w1/2)+highestAll(w2/2))/n ;
 
Interesting study! Thanks! The Supertrend version I guess is to be used with the Supertrend indicator. Is it possible to scan for changes in the Volume Waves, when red changes to green and vice versa?
Did you ever get a scanner? Or a work-around?
 
Scanner Code for Mobius Volume Waves
@Tradervic @DB01 @evilsurgeon
Here is the scanner code. I DO NOT RECOMMEND USING A SCANNER WITH THIS INDICATOR!
Due to the way the code is written all scans will be delayed a minimum of at least one bar.
Also, this uses a huge amount of resources and you will be in danger of execution time-outs.
The use of any of the dozens of buy/sell pressure scans (for example: https://usethinkscript.com/threads/...essure-indicator-labels-for-thinkorswim.8466/) would be more timely and more efficient.

With the above caveats, here is the scanner code for Mobius Volume Waves:
Ruby:
# Mobius Volume Waves  *****  SCAN ONLY *****
# V01.2020
# Plots Volume Waves based on trend.
# 2.2022 modified into a scan script @merryday
input n = 6;
input AvgType = AverageType.HULL;
input ATRmult = .7;

def h = high;
def l = low;
def c = close;
def v = volume;
def ATR = MovingAverage(AvgType, TrueRange(h, c, l), n);
def DN = HL2 + (ATRmult * ATR);
def UP = HL2 + (-ATRmult * ATR);
def cond = if c < cond[1]
           then DN
           else UP;
def accumulation = cond == UP;
def distribution = cond == DN;
def w1 = if accumulation and !accumulation[1]
         then v
         else if accumulation
         then w1[1] + v
         else Double.NaN;
def w2 = if distribution and !distribution[1]
         then v
         else if distribution
         then w2[1] + v
         else Double.NaN;
def waves1 = w1;
def waves2 = w2;


plot Begin = IsNaN(waves2) and !IsNaN(waves2[1]) ;
plot End = isnan(waves1) and !isnan(waves1[1]) ;

# Alert
Alert(Begin, "Bull Begin", Alert.BAR, Sound.Chimes);
Alert(End, "Bear Begin", Alert.BAR, Sound.Ding);
 
Scanner Code for Mobius Volume Waves
@Tradervic @DB01 @evilsurgeon
Here is the scanner code. I DO NOT RECOMMEND USING A SCANNER WITH THIS INDICATOR!
Due to the way the code is written all scans will be delayed a minimum of at least one bar.
Also, this uses a huge amount of resources and you will be in danger of execution time-outs.
The use of any of the dozens of buy/sell pressure scans (for example: https://usethinkscript.com/threads/...essure-indicator-labels-for-thinkorswim.8466/) would be more timely and more efficient.

With the above caveats, here is the scanner code for Mobius Volume Waves:
Ruby:
# Mobius Volume Waves  *****  SCAN ONLY *****
# V01.2020
# Plots Volume Waves based on trend.
# 2.2022 modified into a scan script @merryday
input n = 6;
input AvgType = AverageType.HULL;
input ATRmult = .7;

def h = high;
def l = low;
def c = close;
def v = volume;
def ATR = MovingAverage(AvgType, TrueRange(h, c, l), n);
def DN = HL2 + (ATRmult * ATR);
def UP = HL2 + (-ATRmult * ATR);
def cond = if c < cond[1]
           then DN
           else UP;
def accumulation = cond == UP;
def distribution = cond == DN;
def w1 = if accumulation and !accumulation[1]
         then v
         else if accumulation
         then w1[1] + v
         else Double.NaN;
def w2 = if distribution and !distribution[1]
         then v
         else if distribution
         then w2[1] + v
         else Double.NaN;
def waves1 = w1;
def waves2 = w2;


plot Begin = IsNaN(waves2) and !IsNaN(waves2[1]) ;
plot End = isnan(waves1) and !isnan(waves1[1]) ;

# Alert
Alert(Begin, "Bull Begin", Alert.BAR, Sound.Chimes);
Alert(End, "Bear Begin", Alert.BAR, Sound.Ding);

Did anyone get this scan to work? If I put this study on the chart it works however if I put it in the scan it returns no symbols found. Any help would be much appreciated. I have tried to get it to work for a few hours today with no luck.
 
Last edited:

Similar threads

Not the exact question you're looking for?

Start a new thread and receive assistance from our community.

87k+ Posts
263 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