Scanning for Swing Trade Setups in TC2000

Scanning for swing trade setups in TC2000 is a guide to help you find the stocks that you care about for your watchlist.

It covers the basics of creating new scans, selecting and filtering your stock universe, examples of a few of my favorite scans, as well as some general tips that I’ve learned over the years.

I’ve recorded a supplementary video below, covering more of the setup process in TC2000 if you are interested in duplicating these same scans in your own environment.


What is Worden TC2000?

Worden TC2000 is the stock scanner we are going to be using throughout this article.

Taken directly from their website, they describe themselves as:

The best stock market software for charting, scanning & sorting and technical analysis

And I’d have to agree.  They’ve been my primary charting platform since 2013 and I consider TC2000 must-have trading software. We recently did a review and getting started guide – so if you’re new to Worden TC2000 or want some general platform tips, here’s the review.

They have a free web version available called Freestockcharts but they’re flagship product TC2000 does require a subscription. If you’re not already a customer be sure to use the Trade Risk’s affiliate link, to receive the latest promotional pricing.


Why scan for stocks in the first place?

There are over 5,000 public US stocks available to trade every single day.

I don’t know about you, but that’s too many for me to keep track of on a day-to-day basis, and more importantly, most aren’t of any interest to me at any one given time.

But finding quality trade ideas that fit my trade plan as an active trader is necessary, and that’s why scanning is so important and such a time saver.

Instead of having to sort through thousands of stocks, we can get a shortened list back, containing only stocks that fit the characteristics that we’re looking for.

For instance, let’s say we only like to trade stocks above their 200-day simple moving average. There’s no sense in looking at stocks that are trading below the 200-day, so by adding that filter to our scans, we eliminate a large group of stocks that we’re not interested in.

Filter out the noise, and focus on the opportunity.

Universe Image - Scanning for Swing Trade Setups in TC2000


Step #1 – Defining your universe of stocks in TC2000

The first step in scanning is deciding what your overall universe of stocks will be.

In TC2000 you have a great deal of flexibility to scan for stocks on specific exchanges like the NASDAQ, NYSE, or drill down deeper into specific sectors or even industries.

For my scans, I like to cast a wide net and use TC2000’s US Common Stocks list. This group contains a listing of all of the stocks on the Nasdaq and NYSE but without ETFs and indices, so we’re left with just individual stocks.

Pro tip: create a second watchlist of all of the indices and ETFs you like to track, that way you can run scans or tab through them separately.

Now that we have our universe of stocks defined, let’s filter it down a bit more.


Step #2 – Filtering your TC2000 stock universe

The next step is to add in some basic screening criteria. Before we get to specific trade setups or patterns, we want to make sure that we’re only looking at stocks that trade at a price point and volatility level that we’re comfortable with.

We also want to make sure the stocks we’re looking at trade with sufficient daily volume.

The following criteria are simply personal trading preferences of mine, so feel free to ignore or modify these conditions as you please.

Price History > 8

  • I’m only interested in trading stocks over $8 in price.

Average 20-day volume > 300K

  • I prefer liquid stocks that trade an average of 300,000 shares per day based on the last 20 trading days.

Minimum 20-day volume > 200K

  • I found the volume filter above didn’t quite do the job by itself because there could be a 1 day event (earnings or otherwise) that skewed the 20-day volume calculation into a false positive. By making sure there’s always a minimum of 200K shares trading each day, we’ll avoid this loophole.

Average true range > 0.30

  • I only want to trade stocks that are at least moving an average of 30 cents each day.

Another common base criteria condition would be market cap. For example, only show stocks over 1 billion in market cap that way you avoid some of the riskier micro/nano-cap companies.

The above filters are included in all future scans that we review.


Scan for stocks consolidating in TC2000

Now that we have our universe of stocks chosen and basic filters in place, let’s get into the specific patterns we’re interested in.

In this first example, we’ll search for stocks consolidating. Consolidating is a broad term, but in general, it means stocks that are moving mostly sideways, without recent trend or momentum.

There are lots of ways we can write our scans based on this definition, so we’re going to choose to use moving averages.

By using multiple length moving averages and checking to see if they are converging onto one another, we can get back stocks that have been trading sideways.

Scanning for Swing Trade Setups in TC2000 - Consolidation Image

The larger the consolidation patterns you want to see, the larger your moving averages should be.

PCF formula for all stocks where the 8 EMA closed within 2% of the 20 EMA and the 50 EMA closed within 2% of the 20 EMA:

XAVGC8 >= XAVGC20*.99 AND XAVGC8 <= XAVGC20*1.01 AND XAVGC50 >= XAVGC20*.99 AND XAVGC50 <= XAVGC20*1.01 

When moving averages of various periods are all within the same general area as one another (flat and overlapping), we get a great list of stocks that have been consolidating sideways.


Scan for stocks surging in ATR in TC2000

The next scan that we’re going to look at are stocks suddenly experiencing a surge in their usual trading behavior.

This scan utilizes a stock’s average true range and it will return both bullish and bearish moves by default, but you could easily add additional conditions to filter out positive or negative moves.

Scanning for Swing Trade Setups in TC2000 - Surge ATR Image

PCF formula for all stocks that are seeing a 60% surge over their 10-day average true range:

((H - L + ABS(H - C1) + ABS(C1 - L)) / 2)*.60 > 
(AVGH10.1 - AVGL10.1) / 2 + 
(ABS(H1 - C2) + ABS(C2 - L1) + 
ABS(H2 - C3) + ABS(C3 - L2) + 
ABS(H3 - C4) + ABS(C4 - L3) + 
ABS(H4 - C5) + ABS(C5 - L4) + 
ABS(H5 - C6) + ABS(C6 - L5) +
ABS(H6 - C7) + ABS(C7 - L6) +
ABS(H7 - C8) + ABS(C8 - L7) +
ABS(H8 - C9) + ABS(C9 - L8) +
ABS(H9 - C10) + ABS(C10 - L9) +
ABS(H10 - C11) + ABS(C11 - L10)) / 20 

These types of sharp moves generally coincide with breakouts or sudden changes of character that can lead to continuation in the direction of the initial move.


Scan for stocks in an uptrend but pulling back towards their 20-day moving average

If you’re not a fan of chasing breakouts, or you simply want to diversify with some pullback setups, then this scan is for you.

Here, we are looking for stocks that have been behaving well, trading above their 20-EMA, but have recently pulled back to a more favorable reward-to-risk area.

Pullback Image - Scanning for Swing Trade Setups in TC2000

PCF formula for 3 consecutive down closes while still over the 20 EMA:

(C2 < C3) AND (C1 < C2)  AND (C < C1)  AND (C > XAVGC20) 

Buying near term weakness in strong stocks can be a powerful setup under the right market conditions.


Scanning for swing trade setups in TC2000

Hopefully, these scans have been helpful and give you some ideas to think about and experiment with further on your own.

Here are a few other tips I’ll leave you with:

  • Having different scans for different market conditions is a good idea. A strongly up-trending market will lend itself better to different types of setups than if you were in a bear market.
  • There are pros and cons to creating very specific and narrow scans. If you know exactly what you’re looking for then they’re great, but there’s also a great deal of context you can pick up from stepping through loosely defined scans and letting your experience filter the best setups.
  • As you get comfortable scanning regularly, the number of stocks returned will serve as important market information. For example, if there is one scan that almost always returns 10 to 20 stocks and then suddenly it begins sending back 60 or 70, that gives you some insight into the behavior of the underlying market.
  • For a more documentation on the TC2000’s PCF language, bookmark this PCF formula syntax page.

If you have an idea for a scan but need it developed for you, check out the custom PCF coding service we offer.

Last but certainly not least, we have a store filled with pre-built TC2000 scans and indicators available for download (free and paid) which you’ll definitely want to check out.

Enjoy what you read? Share it below and be sure to tag @thetraderisk.

Evan Medeiros

Evan is the founder of the Trade Risk. With 25 years of coding experience and a B.S. in computer science, Evan brings a systematic discipline to investing in the stock market.

Don't miss out on more educational articles just like this!

Please enter your name.
Please enter a valid email address.
Something went wrong. Please check your entries and try again.


  1. jerry on 10:44 am March 3, 2018 at 10:44 am

    i am using tc2000 to paper trade. i shorted 600 shrs and want to sell them(buy to cover). cannot see how to do it.
    help please

    • Evan on 1:49 pm March 3, 2018 at 1:49 pm

      Hi Jerry,

      I’m sorry I don’t have experience using TC2000 as a broker (even paper trading) so I couldn’t offer up much help here. Their support tends to be pretty solid, drop them an email, I’m sure they could help.

  2. traninho on 1:26 pm September 14, 2018 at 1:26 pm

    Hey Evan,

    Thanks for the article. I tried the PCF for consolidation pattern. Thought, I would like to specify it further and use it as a screener for channel/range setups. Do you know how I can add condition that a stock is near to bottom/top (support/resistance) of channel?

    • Evan on 1:06 pm September 15, 2018 at 1:06 pm

      A condition for stocks near the bottom/top of a channel could be added, but not as easy as it would seem. It would require a strict definition of what a sideways channel is. What is the minimum/maximum length of an acceptable channel? How many peaks or how much supply would need to be traded near the highs/lows to form “resistance” and “support”? How tight would those peaks need to be? Etc.

      It’s dead simple for our eye to pick up on what a sideways channel is, but these patterns are actually tricky to code. So it is possible, yes, but not as easy and flexible as you may want. A much easier condition to implement would be “distance away from 52W highs” or “distance away from 20-day lows” but as you can imagine, those wouldn’t necessarily coincide with a sideways channel.

      Hope that helps!

  3. frank t. on 10:46 pm January 18, 2019 at 10:46 pm

    Is there a way to scan for ichimoku cloud information?

  4. Evan on 3:39 pm January 20, 2019 at 3:39 pm

    Hey Frank,

    Yes, you can create scan conditions for ichimoku cloud just by putting the indicator on your chart, clicking the drop-down on the cloud indicator (at the top of your chart) and clicking “create scan condition”.

    There’s no PCF code that I’m aware for scanning with it, you’ll need to create the conditions using the indicator drop down.

    Let me know if that’s not clear.

  5. Bill Toft on 5:45 pm November 2, 2019 at 5:45 pm

    Great video, thorough explanations. Do you have a video that explains how to set up a scan to find stocks where 1) the 10 EMA is about to cross the 20 EMA, and/or 2) there is an inside 15-min or 30-min setup (that is, the current 15 or 30 minute bar closes inside of the prior bar.

  6. Amin Mohd on 5:11 am March 28, 2020 at 5:11 am

    Thanks for the scans’ insights. They are very helpful. The pcf for the “surging in atr” did not return any values. Can you kindly confirm it? Kind regards

    • Evan Medeiros on 2:10 pm April 13, 2020 at 2:10 pm

      Hi Amin,

      Thanks for the heads up. It looks like my blog was adding some spacing/markup to the code causing things to break. Try and copy the latest code you see now, I think it will work for you.

  7. Christian on 3:37 am May 28, 2020 at 3:37 am

    Thanks Evan. Great job.

    Do you happen to have a scan that searches for beaten-up stocks that have Based, and broke the first 2 levels of resistance? Almost bottom feeders…to some degree.

    • Evan Medeiros on 10:05 am May 28, 2020 at 10:05 am

      Thanks Christian. I have no pre-made scans for what you describe.

      In theory it could be coded as long as you could provide very strict definitions for what the “base” of a stock needs to look like and exactly what “resistance” criteria you’re interested in. If you would like to pursue our custom coding service, head on over to this page and fill in more of those details in the form at the bottom:

  8. Bob on 9:51 pm September 8, 2020 at 9:51 pm

    Hi – just downloaded and started using tc2000 – was just generally browsing and came across your site. Thank you very much for taking the time to do this!

    Do you think I will have any luck at finding an accurate and useable PCF that can both perform a pattern recognition chart scan AND draw the pattern on the chart? Long and short, im doing the scanning the hard way too (and will continue) – i look at 50 to 75 charts a day looking for patterns and analysis. It would just be nice to be able to confirm quickly (plus my mentor would probably appreciate it too …. :))

    • Evan Medeiros on 10:27 am September 9, 2020 at 10:27 am

      You are welcome and I’m glad the article was helpful!

      Unfortunately I do not believe you are going to find anything satisfying for pattern recognition, and especially not for on chart drawing. This has been a popular request for years and I’ve spent many hours trying to code different solutions but they’ve all fallen short.

      The primary issue is that TC2000 PCF language is not a full programming language. It’s just a lightweight scripting language, which is plenty powerful for lots of bar by bar price patterns, but not complex geometrical shapes.

  9. Fred Brennion on 7:26 pm March 22, 2021 at 7:26 pm

    I want to write a 12,3,3 Stochastics scan that sometime within X previous bars crossed BELOW the 20 AND THEN within Y bars crossed UP through the 20.
    This time-constrained event could have happened any time within the last Y bars.
    Is that doable in a PCF?

    If Y is 40, will the scan identify the OLDEST occurrence or the most recent one?
    The purpose here is to find those setups and see how they worked out in actual practice; not having to wait one day at a time to see what happens in the future.

    • Evan Medeiros on 4:24 pm March 23, 2021 at 4:24 pm

      Hi Fred,

      Yes, what you describe is possible to code and set up in TC2000. The scan results will always show you one list of all stocks that meet your conditions at the time of running the scan and with some additional custom watchlist column coding, you could have the ability to sort that list of results from oldest/newest occurrence. If you need assistance with this project, you can read up on our custom coding service and fill out a form here:

      • Fred Brennion on 9:54 pm March 28, 2021 at 9:54 pm

        Thanks for your input on the Stochastics issue.
        I’m now looking at PPO histogram divergence detection, like on BIG in mid-Feb ’21 and from what I can imagine, it would be hideously expensive.

  10. Evan Medeiros on 8:39 pm March 30, 2021 at 8:39 pm

    You’re welcome, and yeah hard to say, it all depends on the rules and complexity that you wish to have.

Leave a Comment