Low Float Scanner for ThinkorSwim


New member
2019 Donor
Is there a scanner which can scan for low float stocks in ThinkorSwim?
Last edited:


@GeneHo Not that I know of. There is this indicator though. See if its similar to anything you're looking for.

Rich (BB code):
# Float As Cumulative Volume Pivots
# Mobius
# Chat Room Request 10.04.2015
# V.02
# Added a condition to start cumulative count at the first peak or trough on a chart.

input FloatFor = "SPY"; #hint FloatFor: ETF's do not have a float. Total shares outstanding are adjusted to control NAV (Net Asset Value). Check them often for available shares.
input Float = 877632000; #hint Float: Share Float or for ETF's available shares
input n = 21; #hint n: length used for average volume.

AddLabel(GetSymbol() == FloatFor, "Float Value For: " + FloatFor, color.white);
def h = high;
def l = low;
def c = close;
def V = volume;
def AvgFloatP = Float / Average(V, n);
def HighestHigh = HighestAll(h);
def HighBar = if H == HighestHigh
              then BarNumber()
              else HighBar[1];
def LowestLow = LowestAll(l);
def LowBar = if L == LowestLow
             then BarNumber()
             else LowBar[1];
def FirstBar = if HighBar < LowBar
               then HighBar
               else LowBar;
def CumVolume = if barNumber() > FirstBar
                then CompoundValue(1, if CumVolume[1] < Float
                                 then CumVolume[1] + v
                                 else if CumVolume[1] crosses Float
                                      then 0
                                      else CumVolume[1], v)
                else 0;
plot CVpoint = if GetSymbol() == FloatFor and
                  CumVolume crosses above Float
               then c
               else double.nan;
plot CVline = if GetSymbol() == FloatFor and
                 CumVolume crosses above Float
              then c
              else double.nan;

addLabel(GetSymbol() == FloatFor, "Float = " + Float + "  Float/Avg Bars = " + Round(AvgFloatP, 0) + "  Cumulative Volume = " + CumVolume, color.white);
Last edited:


New member
Where can I get a low float scanner? Obviously we all know about setting up a scan with a minimum volume of x and a maximum number of shares in the ToS. This kinda sorta works but not really. Say I put my scanner like...

Volume - 1 million
Shares - 20 million

I will be missing out on stocks that have lets say 30 million shares and have a volume of 25 million. You see my point?

So is there a low float scanner? Or somehow to scan a certain ratio of volume to shares?


New member
Has anyone written a script that will return the value of the float volume? TOS does not give a float volume anywhere in their software.



Your example sets the Float of this as a static variable input.

Is there way to fetch this value in the script without having to look it up? I started another thread recently that asks this question here; https://usethinkscript.com/threads/get-the-index-of-the-stock-with-addchart.2873/

The example code below overlays the chart of Security over the current chart. Currently Security is a list of pre-defined tickers that you can choose in the study settings.

That's fine and dandy, but with how volatile the market can be it would be nice to have the stock's corresponding index load along with the chart...it would sure help me know if I need to press the get out button because Poppa Powell said something Mr. Market didn't like...

I was wondering if there was a way to dynamically set the value of Security based on the chart that is currently loaded. Does TOS use the current ticker as a class.asItDoes with Color.example or ChartType.Example?

*Is there a way to do this? Or is this a dead-end?

declare lower;

input chartType = ChartType.CANDLE;

input Security = {default "SPX", "COMP", "DJX"};

AddChart( high = high( Security ),
low = low( Security ),
open = open( Security ),
close = close( Security ),
type = chartType );

AddLabel(1, if Security == Security."SPX" then "SPX = S&P 500 INDEX"

else if Security == Security."COMP" then " COMP = NASDAQ COMPOSITE"

else if Security == Security."DJX" then " DJX = DOW JONES INDUSTRIAL AVERAGE INDEX"

else "ERROR – none were found", Color.WHITE);

Similar threads