NexusFi: Find Your Edge


Home Menu

 





VSA for ThinkorSwim


Discussion in ThinkOrSwim

Updated
      Top Posters
    1. looks_one snowcloud with 93 posts (25 thanks)
    2. looks_two StockJock with 91 posts (27 thanks)
    3. looks_3 cbritton with 37 posts (71 thanks)
    4. looks_4 swimtrader with 22 posts (19 thanks)
      Best Posters
    1. looks_one Hornblower with 2.3 thanks per post
    2. looks_two cbritton with 1.9 thanks per post
    3. looks_3 StockJock with 0.3 thanks per post
    4. looks_4 snowcloud with 0.3 thanks per post
    1. trending_up 310,419 views
    2. thumb_up 223 thanks given
    3. group 86 followers
    1. forum 434 posts
    2. attach_file 131 attachments




 
Search this Thread

VSA for ThinkorSwim

  #251 (permalink)
StockJock
Chicago + Illinois/USA
 
Posts: 256 since Aug 2010
Thanks Given: 15
Thanks Received: 154

How do the colors of the price bars help the trader make trading decisions? I understand that the colored symbols have some VSA meaning; however, I'd like to know how the colors on the price bars themselves help in the decision process. The price bar colors have something to do with the three time periods that are used in calculating the bars that get the colored symbols. However, what is the purpose of using the three time periods to color the bars? It seems that the symbols are the indicators that have a VSA meaning, not the colored bars. Has anyone thought about this?

Reply With Quote

Can you help answer these questions
from other members on NexusFi?
ZombieSqueeze
Platforms and Indicators
Pivot Indicator like the old SwingTemp by Big Mike
NinjaTrader
REcommedations for programming help
Sierra Chart
What broker to use for trading palladium futures
Commodities
How to apply profiles
Traders Hideout
 
  #252 (permalink)
kyparys
Lviv
 
Posts: 3 since Nov 2010
Thanks Given: 0
Thanks Received: 0


cbritton View Post
The version I posted in my previous is the last I will do for this, barring any code fixes. I will not be adding the more verbose message banners to the ToS version because there's no nice way to display that banner in ToS. Not until ToS provides a better way to give a specific location of a message box for display.

As I pointed out in the first post of this thread, there are (minor) difference between the NT and ToS versions. These differences are because ToS can not do some of the plotting NT can (as of the version of ToS I have anyways), such as diamonds and down pointing triangles.

The following list should help decoding the signals as I tried to make it easier to locate where each symbol is in relation to the bar.

On top of Bar:
  • Yellow Triangle
    High volume Downbar after an upmove on high volume indicates weakness.
  • Blue Circle
    Reversal possible, yesterday was high volume wide spread up bar, but today we reached 10 days high with low close wide spread down bar.
  • Red Triangle
    UpThrust confirmation.
  • Blue Triangle
    A Down Bar closing down after a Pseudo Upthrust confirms weakness.
  • Blue Square
    Psuedo UpThrust, A Sign of Weakness /OR/ A High Volume Up Bar closing down in a uptrend shows Distribution /OR/ No Demand.
On bottom of bar:
  • Aqua Triangle
    High volume upbar closing on the high indicates strength (in short term down trend).
  • Deep Pink Square
    Test for supply.
  • Green Square
    Strength bar (either strength is showing in down trend or a supply test in up trend).
  • Green Circle
    Stopping volume. Normally indicates end of bearishness is nearing /OR/ No supply.
  • Yellow Triangle
    An Upbar closing near High after a Test confirms strength.
  • Green Triangle
    The previous bar saw strength coming back, This upbar confirms strength.

On the median of the bar:
  • Turquoise circle
    Effort to Rise. Bullish sign.
  • Yellow circle
    Effort to Fall. Bearish sign.
Regards,
-C


Thanks for the indicator.
Please write on the settings of indicator.
What setting in which the situation must be optimized?
What configuration is better not to change?
Thanks.

Attached Thumbnails
Click image for larger version

Name:	IND_Question.png
Views:	433
Size:	93.2 KB
ID:	25889  
Reply With Quote
  #253 (permalink)
 
marcovth's Avatar
 marcovth 
Canada
 
Experience: Advanced
Platform: Sierra Chart
Trading: ES,6E
Posts: 25 since Jun 2010
Thanks Given: 1
Thanks Received: 30


For those of you who are members of Thinkscripter, there is a very educative discussion about how to trade with Bettervolume, VSA and TPOs here ... Login | ThinkScripter

Reply With Quote
  #254 (permalink)
kyparys
Lviv
 
Posts: 3 since Nov 2010
Thanks Given: 0
Thanks Received: 0

The VPAv1STUDY.ts indicator is very good, but alert very hurries. Alert does premature signals because does not wait completion of candle. Is it possible to correct?

Reply With Quote
  #255 (permalink)
 
cory's Avatar
 cory 
virginia
 
Experience: Intermediate
Platform: ninja
Trading: NQ
Posts: 6,098 since Jun 2009
Thanks Given: 877
Thanks Received: 8,090


kyparys View Post
The VPAv1STUDY.ts indicator is very good, but alert very hurries. Alert does premature signals because does not wait completion of candle. Is it possible to correct?

alert is meant to get yours attn at earliest so that you can focus and watch pa for confirmation.

Reply With Quote
  #256 (permalink)
kyparys
Lviv
 
Posts: 3 since Nov 2010
Thanks Given: 0
Thanks Received: 0

What differences between VSA Indicator - decoding the signals.txt and Vpav1study.txt?

Reply With Quote
  #257 (permalink)
 
marcovth's Avatar
 marcovth 
Canada
 
Experience: Advanced
Platform: Sierra Chart
Trading: ES,6E
Posts: 25 since Jun 2010
Thanks Given: 1
Thanks Received: 30

How is volume separated into ultra-low to ultra-high levels?

Would you use the 30 moving average as the Fibonacci 50% level, and use other Fibonacci levels to categorize the volume from ultra-low to ultra-high?

I would like to try to use overlays of clouds to color the levels behind the volume bars similar to what I see in TradeGuider video's.

----

Alright, I came up with this ...

 
Code
declare on_volume;
declare real_size;

def MarketsHours = if (secondsFromTime(0920) > 0) and (secondsTillTime(1610) > 0) then yes else no;

# Calculation of the average volume during market hours ...
rec SumVolMarketsHours=if MarketsHours then SumVolMarketsHours[1]+volume else SumVolMarketsHours[1];
rec nBarsMarketsHours=if MarketsHours then nBarsMarketsHours[1]+1 else nBarsMarketsHours[1];
def AvgVolMarketsHours=SumVolMarketsHours/nBarsMarketsHours;

# Calculation of the average volume during OFF market hours ...
rec SumVolOFFMarketsHours=if !MarketsHours then SumVolOFFMarketsHours[1]+volume else SumVolOFFMarketsHours[1];
rec nBarsOFFMarketsHours=if !MarketsHours then nBarsOFFMarketsHours[1]+1 else nBarsOFFMarketsHours[1];
def AvgVolOFFMarketsHours=SumVolOFFMarketsHours/nBarsOFFMarketsHours;


plot AvgVolMarkets = if MarketsHours then AvgVolMarketsHours else double.nan;
plot AvgVolOFFMarkets = if !MarketsHours then AvgVolOFFMarketsHours else double.nan;

# I measured the number of pixels from a TradeGuider picture, and that gave me the 0.15, 0.65 aproximations that they seem to use ... 
def UHline = if MarketsHours then AvgVolMarketsHours+(AvgVolMarketsHours*1) else AvgVolOFFMarketsHours+(AvgVolOFFMarketsHours*1);
def VHline = if MarketsHours then AvgVolMarketsHours+(AvgVolMarketsHours*0.65) else AvgVolOFFMarketsHours+(AvgVolOFFMarketsHours*0.65);
def Hline = if MarketsHours then AvgVolMarketsHours+(AvgVolMarketsHours*0.15) else AvgVolOFFMarketsHours+(AvgVolOFFMarketsHours*0.15);
def Lline = if MarketsHours then AvgVolMarketsHours-(AvgVolMarketsHours*0.15) else AvgVolOFFMarketsHours-(AvgVolOFFMarketsHours*0.15);
def VLline = if MarketsHours then AvgVolMarketsHours-(AvgVolMarketsHours*0.65) else AvgVolOFFMarketsHours-(AvgVolOFFMarketsHours*0.65);
def zeroline=0;

AddCloud(VHline, UHline,color.pink,color.pink);
AddCloud(Hline, VHline,color.MAGENTA,color.MAGENTA);
AddCloud(Lline, Hline,color.BLUE,color.BLUE);
AddCloud(VLline, Lline,color.MAGENTA,color.MAGENTA);
AddCloud(zeroline, VLline,color.pink,color.pink);

Reply With Quote
Thanked by:
  #258 (permalink)
StockJock
Chicago + Illinois/USA
 
Posts: 256 since Aug 2010
Thanks Given: 15
Thanks Received: 154

Interesting code. I haven't seen many overlay indicators for volume. Could you provide a few words of instructions on the best way that it can help with trading decisions.

Reply With Quote
  #259 (permalink)
 
marcovth's Avatar
 marcovth 
Canada
 
Experience: Advanced
Platform: Sierra Chart
Trading: ES,6E
Posts: 25 since Jun 2010
Thanks Given: 1
Thanks Received: 30


StockJock View Post
Interesting code. I haven't seen many overlay indicators for volume. Could you provide a few words of instructions on the best way that it can help with trading decisions.

I was trying to imitate how they color-code the volume in TradeGuider.


To learn to trade with it, I would say just search with google for TradeGuider VSA bootcamp, and you will probably find a couple of places where you can download the course.

Edit:
------
I have a black background. I use it in combination with BetterVolume.

Bars ending in black == Ultra High volume. (hidden potential selling/buying?)
Bars ending in pink == Very High volume.
Bars ending in purple == High volume.
Bars ending in blue == Average/normal volume.
Bars ending in purple == Low volume.
Bars ending in pink == Very Low volume.
------


It seems that the current version of the VSA study uses an ema for volume of 30 bars.

I believe it would make sense to split up the volume in market hours, and non-market hours data sets, and take the full average per data set.

I am also testing splitting the volume in hours, and taking the average per hour, see code below.
This will clearly shows when there is extreme activity going on during a certain time of the day/night.
(Could be a nice alarm clock.)

Probably over the weekend, I will study whether any of this will make a difference for the VSA script.

 
Code
declare on_volume;
declare real_size;


input UseHourlyVolAvg = NO;


def MarketsHours = if (secondsFromTime(0930) >= 0) and (secondsTillTime(1610) >= 0) then yes else no;

def Hour00 = if (secondsFromTime(0000) >= 0) and (secondsTillTime(0100) > 0) then yes else no;
def Hour01 = if (secondsFromTime(0100) >= 0) and (secondsTillTime(0200) > 0) then yes else no;
def Hour02 = if (secondsFromTime(0200) >= 0) and (secondsTillTime(0300) > 0) then yes else no;
def Hour03 = if (secondsFromTime(0300) >= 0) and (secondsTillTime(0400) > 0) then yes else no;
def Hour04 = if (secondsFromTime(0400) >= 0) and (secondsTillTime(0500) > 0) then yes else no;
def Hour05 = if (secondsFromTime(0500) >= 0) and (secondsTillTime(0600) > 0) then yes else no;
def Hour06 = if (secondsFromTime(0600) >= 0) and (secondsTillTime(0700) > 0) then yes else no;
def Hour07 = if (secondsFromTime(0700) >= 0) and (secondsTillTime(0800) > 0) then yes else no;
def Hour08 = if (secondsFromTime(0800) >= 0) and (secondsTillTime(0900) > 0) then yes else no;
def Hour09 = if (secondsFromTime(0900) >= 0) and (secondsTillTime(0930) > 0) then yes else no;
def Hour930 = if (secondsFromTime(0930) >= 0) and (secondsTillTime(1000) > 0) then yes else no;
def Hour10 = if (secondsFromTime(1000) >= 0) and (secondsTillTime(1100) > 0) then yes else no;
def Hour11 = if (secondsFromTime(1100) >= 0) and (secondsTillTime(1200) > 0) then yes else no;
def Hour12 = if (secondsFromTime(1200) >= 0) and (secondsTillTime(1300) > 0) then yes else no;
def Hour13 = if (secondsFromTime(1300) >= 0) and (secondsTillTime(1400) > 0) then yes else no;
def Hour14 = if (secondsFromTime(1400) >= 0) and (secondsTillTime(1500) > 0) then yes else no;
def Hour15 = if (secondsFromTime(1500) >= 0) and (secondsTillTime(1600) > 0) then yes else no;
def Hour16 = if (secondsFromTime(1600) >= 0) and (secondsTillTime(1630) > 0) then yes else no;
def Hour1630 = if (secondsFromTime(1630) >= 0) and (secondsTillTime(1700) > 0) then yes else no;
def Hour17 = if (secondsFromTime(1700) >= 0) and (secondsTillTime(1800) > 0) then yes else no;
def Hour18 = if (secondsFromTime(1800) >= 0) and (secondsTillTime(1900) > 0) then yes else no;
def Hour19 = if (secondsFromTime(1900) >= 0) and (secondsTillTime(2000) > 0) then yes else no;
def Hour20 = if (secondsFromTime(2000) >= 0) and (secondsTillTime(2100) > 0) then yes else no;
def Hour21 = if (secondsFromTime(2100) >= 0) and (secondsTillTime(2200) > 0) then yes else no;
def Hour22 = if (secondsFromTime(2200) >= 0) and (secondsTillTime(2300) > 0) then yes else no;
def Hour23 = if (secondsFromTime(2300) >= 0) and (secondsTillTime(2359) >= 0) then yes else no;


rec SumVol00 = if Hour00 then SumVol00[1] + volume else SumVol00[1];
rec nBarsHour00 = if Hour00 then nBarsHour00[1] + 1 else nBarsHour00[1];
def AvgVolHour00 = SumVol00 / nBarsHour00;

rec SumVol01 = if Hour01 then SumVol01[1] + volume else SumVol01[1];
rec nBarsHour01 = if Hour01 then nBarsHour01[1] + 1 else nBarsHour01[1];
def AvgVolHour01 = SumVol01 / nBarsHour01;

rec SumVol02 = if Hour02 then SumVol02[1] + volume else SumVol02[1];
rec nBarsHour02 = if Hour02 then nBarsHour02[1] + 1 else nBarsHour02[1];
def AvgVolHour02 = SumVol02 / nBarsHour02;

rec SumVol03 = if Hour03 then SumVol03[1] + volume else SumVol03[1];
rec nBarsHour03 = if Hour03 then nBarsHour03[1] + 1 else nBarsHour03[1];
def AvgVolHour03 = SumVol03 / nBarsHour03;

rec SumVol04 = if Hour04 then SumVol04[1] + volume else SumVol04[1];
rec nBarsHour04 = if Hour04 then nBarsHour04[1] + 1 else nBarsHour04[1];
def AvgVolHour04 = SumVol04 / nBarsHour04;

rec SumVol05 = if Hour05 then SumVol05[1] + volume else SumVol05[1];
rec nBarsHour05 = if Hour05 then nBarsHour05[1] + 1 else nBarsHour05[1];
def AvgVolHour05 = SumVol05 / nBarsHour05;

rec SumVol06 = if Hour06 then SumVol06[1] + volume else SumVol06[1];
rec nBarsHour06 = if Hour06 then nBarsHour06[1] + 1 else nBarsHour06[1];
def AvgVolHour06 = SumVol06 / nBarsHour06;

rec SumVol07 = if Hour07 then SumVol07[1] + volume else SumVol07[1];
rec nBarsHour07 = if Hour07 then nBarsHour07[1] + 1 else nBarsHour07[1];
def AvgVolHour07 = SumVol07 / nBarsHour07;

rec SumVol08 = if Hour08 then SumVol08[1] + volume else SumVol08[1];
rec nBarsHour08 = if Hour08 then nBarsHour08[1] + 1 else nBarsHour08[1];
def AvgVolHour08 = SumVol08 / nBarsHour08;

rec SumVol09 = if Hour09 then SumVol09[1] + volume else SumVol09[1];
rec nBarsHour09 = if Hour09 then nBarsHour09[1] + 1 else nBarsHour09[1];
def AvgVolHour09 = SumVol09 / nBarsHour09;

rec SumVol930 = if Hour930 then SumVol930[1] + volume else SumVol930[1];
rec nBarsHour930 = if Hour930 then nBarsHour930[1] + 1 else nBarsHour930[1];
def AvgVolHour930 = SumVol930 / nBarsHour930;

rec SumVol10 = if Hour10 then SumVol10[1] + volume else SumVol10[1];
rec nBarsHour10 = if Hour10 then nBarsHour10[1] + 1 else nBarsHour10[1];
def AvgVolHour10 = SumVol10 / nBarsHour10;

rec SumVol11 = if Hour11 then SumVol11[1] + volume else SumVol11[1];
rec nBarsHour11 = if Hour11 then nBarsHour11[1] + 1 else nBarsHour11[1];
def AvgVolHour11 = SumVol11 / nBarsHour11;

rec SumVol12 = if Hour12 then SumVol12[1] + volume else SumVol12[1];
rec nBarsHour12 = if Hour12 then nBarsHour12[1] + 1 else nBarsHour12[1];
def AvgVolHour12 = SumVol12 / nBarsHour12;

rec SumVol13 = if Hour13 then SumVol13[1] + volume else SumVol13[1];
rec nBarsHour13 = if Hour13 then nBarsHour13[1] + 1 else nBarsHour13[1];
def AvgVolHour13 = SumVol13 / nBarsHour13;

rec SumVol14 = if Hour14 then SumVol14[1] + volume else SumVol14[1];
rec nBarsHour14 = if Hour14 then nBarsHour14[1] + 1 else nBarsHour14[1];
def AvgVolHour14 = SumVol14 / nBarsHour14;

rec SumVol15 = if Hour15 then SumVol15[1] + volume else SumVol15[1];
rec nBarsHour15 = if Hour15 then nBarsHour15[1] + 1 else nBarsHour15[1];
def AvgVolHour15 = SumVol15 / nBarsHour15;

rec SumVol16 = if Hour16 then SumVol16[1] + volume else SumVol16[1];
rec nBarsHour16 = if Hour16 then nBarsHour16[1] + 1 else nBarsHour16[1];
def AvgVolHour16 = SumVol16 / nBarsHour16;

rec SumVol1630 = if Hour1630 then SumVol1630[1] + volume else SumVol1630[1];
rec nBarsHour1630 = if Hour1630 then nBarsHour1630[1] + 1 else nBarsHour1630[1];
def AvgVolHour1630 = SumVol1630 / nBarsHour1630;

rec SumVol17 = if Hour17 then SumVol17[1] + volume else SumVol17[1];
rec nBarsHour17 = if Hour17 then nBarsHour17[1] + 1 else nBarsHour17[1];
def AvgVolHour17 = SumVol17 / nBarsHour17;

rec SumVol18 = if Hour18 then SumVol18[1] + volume else SumVol18[1];
rec nBarsHour18 = if Hour18 then nBarsHour18[1] + 1 else nBarsHour18[1];
def AvgVolHour18 = SumVol18 / nBarsHour18;

rec SumVol19 = if Hour19 then SumVol19[1] + volume else SumVol19[1];
rec nBarsHour19 = if Hour19 then nBarsHour19[1] + 1 else nBarsHour19[1];
def AvgVolHour19 = SumVol19 / nBarsHour19;

rec SumVol20 = if Hour20 then SumVol20[1] + volume else SumVol20[1];
rec nBarsHour20 = if Hour20 then nBarsHour20[1] + 1 else nBarsHour20[1];
def AvgVolHour20 = SumVol20 / nBarsHour20;

rec SumVol21 = if Hour21 then SumVol21[1] + volume else SumVol21[1];
rec nBarsHour21 = if Hour21 then nBarsHour21[1] + 1 else nBarsHour21[1];
def AvgVolHour21 = SumVol21 / nBarsHour21;

rec SumVol22 = if Hour22 then SumVol22[1] + volume else SumVol22[1];
rec nBarsHour22 = if Hour22 then nBarsHour22[1] + 1 else nBarsHour22[1];
def AvgVolHour22 = SumVol22 / nBarsHour22;

rec SumVol23 = if Hour23 then SumVol23[1] + volume else SumVol23[1];
rec nBarsHour23 = if Hour23 then nBarsHour23[1] + 1 else nBarsHour23[1];
def AvgVolHour23 = SumVol23 / nBarsHour23;

rec SumVolMarketsHours = if MarketsHours then SumVolMarketsHours[1] + volume else SumVolMarketsHours[1];
rec nBarsMarketsHours = if MarketsHours then nBarsMarketsHours[1] + 1 else nBarsMarketsHours[1];
def AvgVolMarketsHours = SumVolMarketsHours / nBarsMarketsHours;

rec SumVolOFFMarketsHours = if !MarketsHours then SumVolOFFMarketsHours[1] + volume else SumVolOFFMarketsHours[1];
rec nBarsOFFMarketsHours = if !MarketsHours then nBarsOFFMarketsHours[1] + 1 else nBarsOFFMarketsHours[1];
def AvgVolOFFMarketsHours = SumVolOFFMarketsHours / nBarsOFFMarketsHours;

def AvgVolHourly=
if Hour00 then AvgVolHour00 else
if Hour01 then AvgVolHour01 else
if Hour02 then AvgVolHour02 else
if Hour03 then AvgVolHour03 else
if Hour04 then AvgVolHour04 else
if Hour05 then AvgVolHour05 else
if Hour06 then AvgVolHour06 else
if Hour07 then AvgVolHour07 else
if Hour08 then AvgVolHour08 else
if Hour09 then AvgVolHour09 else
if Hour930 then AvgVolHour930 else
if Hour10 then AvgVolHour10 else
if Hour11 then AvgVolHour11 else
if Hour12 then AvgVolHour12 else
if Hour13 then AvgVolHour13 else
if Hour14 then AvgVolHour14 else
if Hour15 then AvgVolHour15 else
if Hour16 then AvgVolHour16 else
if Hour1630 then AvgVolHour1630 else
if Hour17 then AvgVolHour17 else
if Hour18 then AvgVolHour18 else
if Hour19 then AvgVolHour19 else
if Hour20 then AvgVolHour20 else
if Hour21 then AvgVolHour21 else
if Hour22 then AvgVolHour22 else
if Hour23 then AvgVolHour23 else
 double.nan;

plot AvgVolDailyMarketHrs = if MarketsHours then AvgVolMarketsHours else double.nan;
plot AvgVolNightlyOFFMarketHrs = if !MarketsHours then AvgVolOFFMarketsHours else double.nan;

plot AvgVolHourlyBars=AvgVolHourly;

def AvgVol=if UseHourlyVolAvg then AvgVolHourly
else
  if MarketsHours then AvgVolMarketsHours else AvgVolOFFMarketsHours
;

def UHline = AvgVol + (AvgVol * 1);
def VHline = AvgVol + (AvgVol * 0.65);
def Hline = AvgVol + (AvgVol * 0.15);
def Lline = AvgVol - (AvgVol * 0.15);
def VLline = AvgVol - (AvgVol * 0.65);
def zeroline = 0;


AddCloud(VHline, UHline, color.pink, color.pink);
AddCloud(Hline, VHline, color.MAGENTA, color.MAGENTA);
AddCloud(Lline, Hline, color.BLUE, color.BLUE);
AddCloud(VLline, Lline, color.MAGENTA, color.MAGENTA);
AddCloud(zeroline, VLline, color.pink, color.pink);

Reply With Quote
Thanked by:
  #260 (permalink)
StockJock
Chicago + Illinois/USA
 
Posts: 256 since Aug 2010
Thanks Given: 15
Thanks Received: 154


I think they're using the 30 period simple moving average to determine the volume levels. Yours is a good attempt at they're color shading; however, your lines are straight and horizontal. It seems that your lines should be parallel to the 30 SMA. Can that be done by using a standard deviation of the 30 SMA or should the time averaging formulae from the VPA indicator's code be used? Also I think TradeGuider's bar coloring is based in the bar's VSA definition and not the time averaging formulae like the VPA indicator code does. Just an observation. Nice code.

Does TradeGuider use volume in market hours, and non-market hours data sets?

NOTE: TradeGuider's BootCamp videos don't present much about volume indicators. They're main focus is on the bars and the VSA symbol indicators.

Reply With Quote




Last Updated on May 21, 2023


© 2024 NexusFi™, s.a., All Rights Reserved.
Av Ricardo J. Alfaro, Century Tower, Panama City, Panama, Ph: +507 833-9432 (Panama and Intl), +1 888-312-3001 (USA and Canada)
All information is for educational use only and is not investment advice. There is a substantial risk of loss in trading commodity futures, stocks, options and foreign exchange products. Past performance is not indicative of future results.
About Us - Contact Us - Site Rules, Acceptable Use, and Terms and Conditions - Privacy Policy - Downloads - Top
no new posts