Like many traders, we often get frustrated when we miss out on the early premarket stock gainers. It seems like so many of the top gapping stocks in the morning fade out when the opening bell rings at 9:30 AM. That’s because they’ve already made their big moves in premarket. In this video, Steve with FloatChecker will show you how to setup a custom scanner that can help you find these gappers early so that you can share in those big premarket gains.
We’ll make the scanner in Thinkorswim and then save it to a watchlist so it’s always visible and will populate with the morning runners as they arise. Importantly, we’ll create a custom column that will alert you in real time to stocks that are seeing unusually high volume, which means a lot of traders are suddenly interested and therefore you may want to be interested as well. Gapping stocks, or runners, often show up in premarket due to a news item or maybe as a continuation of a low floater from the previous day. It’s time for you to take advantage of these big moves as well!
We’ll show you how to create the custom scan and you’ll find the necessary thinkscript at the end of this post – it’s simple to setup. We think this will be valuable for people who want to trade early and not spend hours in front of their computer screens during the day. The scanner will also be helpful to anyone who wants to trade part time before school or work.
How the Custom Scanner Works
Our scanner will cast a wide net in the morning so you can see the top gapping stocks. We’ll start with price and volume filters but then add a custom column that will alert you when a stock sees a sudden spike in volume. Once the scanner is saved, we’ll be able to open it in a convenient watchlist so you can make quick trading decisions.
The custom column, which we’ll call Volume Spike %, will print the percentage of volume in the current bar that is above the average volume for the stock. It will start to fire off or print when the volume is 10% or more above the average volume. It will reset on each new candle and you’ll be able to customize the spike percentage and average volume numbers. The number value will also print green when the current candle opens higher than the close of the previous candle, which will help you identify stocks that are moving up in price. The picture below is a helpful visual representation of the column in action.

And one more image below showing how the custom column can help you identify fast moving stocks.

How the Scanner can Help You
Top percent gaining stocks will typically start showing up on your watchlist as soon as you login to Thinkorswim each morning. But throughout the premarket hours, a press release or some type of catalyst may occur that will get certain stocks moving quickly. These fast movers, or runners, can occur at any time, though they do tend to strike around the half hour, such as 7:30 AM, 8:00 AM, etc.
As these runners arise, your watchlist will populate and the custom Volume Spike % column can quickly start showing numbers of 50%, 100%, 300%, 1000% and even 3000% as a stock shows a huge influx of volume. That will allow you to quickly check the chart, see if there’s a news catalyst, consider the float, and use all your decision-making tools to determine if you want to join in on the momentum immediately or wait for a pullback to a moving average or the VWAP. Then, as the morning continues, and more traders hopefully begin to discover the stock, you’ll be in a nice position to reap greater gains as we move toward the opening bell. And if there are fewer running stocks that morning, and you’ve gotten in early on what later becomes the more obvious gapper, then those gains can be considerable.
Some Final Items to Consider
Our Volume Spike % column is set to work with 1-minute candles. But we’ll show you how to quickly change that to 5 minute or other time periods on the fly. It’s very easy to do as you get more comfortable with the watchlist.
If you make any changes to the scan settings, you’ll need to save the scan to make sure the changes are reflected in the watchlist. You can just save it under the same name you used when first creating it.
At some point in the morning, as we move into the regular trading day, the scanner will go dark. You can easily make some changes and save this as a new scanner that will work during the day.
Finally, once you create the watchlist and set the columns as you desire, you should save the entire layout under a new name. Otherwise, the next time you log into Thinkorswim the columns may reset to your prior layout. You can easily switch back to any of the old layouts that you may have saved.
Conclusion and Script
Trading stocks is incredibly difficult. But nearly any given morning there are opportunities for you to profit. We hope our scanner can help you identify these opportunities early so you can participate before the regular trading day begins. Regardless of your busy schedule, premarket is a great time for new or part-time traders to get involved in the market before work or school. Feel free to give this scanner a try and make any customizations you would like. And you can always use the custom Volume Spike % column with any other scans that you have saved to your personal items list in Thinkorswim.
Like most things on the internet, it’s always wise to do your own research to see if this is something that’s right for you and your personal trading style. No one can guarantee results or profits, but hopefully you find it helpful. Before we go you can find the script below. Please follow along with the video if you need help installing it.
input AverageVolumeLength = 50; #Edit number to your Average Volume
input PercentSpikeWanted = 10; #Edit the spike number if you like
input SecondsInTradingDay= 23400; #Holiday trading days seconds equals 12600
def OpenNow = open;
def LastClose = close[1];
def ElapsedSeconds = (RegularTradingEnd(GetYYYYMMDD())- RegularTradingstart(GetYYYYMMDD()))/1000;
def PercentDayElapsed = ElapsedSeconds/23400;
def price = close;
def Vol = volume;
def VolAvgAmountToUse = Round((reference VolumeAvg(length = AverageVolumeLength).VolAvg),0)*Round(PercentDayElapsed,0);
plot trigger = if (Vol/VolAvgAmountToUse-1)>=percentSpikeWanted/100 then Round((Vol/VolAvgAmountToUse-1)*100,1) else 0;
trigger.assignvalueColor(if trigger <> 0 and OpenNow > LastClose then color.GREEN else color.WHITE); #Delete or edit the colors if you choose