Sample Scans

Sample Scans

Here is a collection of advanced scans that everyone should study and understand before trying to create more complicated scans. Most complicated scans are created by combining elements of these scans together is various ways. For more advanced scans, please see the other sections of our Advanced Scan Library.

Important Note: For the sake of brevity, we are only adding ”[type=stock]” to the top of each of these scans. There are several other commonly used “global filters” that people typically use at the top of their scans. These include any combination of the following:

and [country = us]   (or 'canada')
and [exchange = nyse]   (or 'nasdaq' or 'tsx' or 'pink' or 'venture')
and [SMA(20,close)> 1.00]  (or whatever price threshold suits you)
and [SMA(20,volume)> 100000]  (or whatever volume threshold suits you)
and [group is etf]  (to just scan ETFs)
and [optionable is true]  (to eliminate non-stocks)

See the Advanced Scan Workbench documentation for additional “global filters” that you might want to use.

Note: StockCharts.com makes no claims about the effectiveness of these scans for trading purposes. These scans should only be used for educational purposes as a way for you to develop your own personal trading strategy.


Simple Crossover Scans

The Bullish “Golden Cross”
All stocks where the 50-day simple moving average just moved from below the 200-day simple moving average to above the 200-day simple moving average:

[type = stock]
and [today's daily SMA(50) x today's daily SMA(200)]

Notes: The “x” is the “crosses above” comparison operator. It means that the first expression was below the second expression 1 period ago and is now above the second expression.


The Bearish “Death Cross”
All stocks where the 50-day simple moving average just moved from above the 200-day simple moving average to below the 200-day simple moving average:

[type = stock]
and [today's daily SMA(200) x today's daily SMA(50)]

Notes: To create this “crosses below” scan, we simply reverse the position of the expressions in a “crosses above” scan.


The Bullish MACD Signal Cross
All stocks where today's MACD Line just moved above the MACD Signal Line:

[type = stock]
and [MACD Line(12,26,9) x MACD Signal(12,26,9)]

Notes: “today's” is optional. Similarly, “daily” is only really required if you are mixing daily, weekly or monthly criteria.


RSI Crossing Above 70
All stocks where today's RSI just moved above the 70 threshold:

[type = stock] and [RSI(14) x 70]

Notes: The “x” comparison operator works with constants.


RSI Crossing Below 30
All stocks where today's RSI just moved below the 30 threshold:

[type = stock] and [30 x RSI(14)]

Notes: It looks a little strange when you use a constant, but again, to do a “crosses below” clause, use the “crosses above” comparison operator with the expressions reversed.


"OR" Scans

All Stocks in the Basic Materials Sector

[type = stock] and [group is BasicMaterialsSector]

Notes: Use the “Sectors and Industries” dropdown in the Scan Components area to see the other choices.


All Stocks in the Basic Materials and Technology Sectors

[type = stock]
and [ [group is BasicMaterialsSector] or [group is TechnologySector] ]

Notes: 1.) This scan's title is tricky - it contains the word 'and' but it really means 'or'. 2.) The additional set of square brackets is needed around the OR clauses otherwise you will get unexpected results.


Stochastics at Either Extreme
All stocks with a Stochastics value of 0 or 100:

[type = stock]
and [ [Full Stoch %D(14,3,3) = 0.0] or [Full Stoch %D(14,3,3) = 100.0] ]

Notes: The extra set of square brackets is required around the OR clause or unexpected results will occur.


Gap Scans

Stocks that Gapped Up Today
Stocks that gapped up by more than 5% today:

[type = stock]
and [today's low > yesterday's high * 1.05]

Notes: To see if something moved 5% higher than something else, compare it to the second value multiplied by 1.00 + 5% (i.e., 1.05). Use the * operator for multiplication (not 'x'!).


Stocks with a 3-Day Island Reversal
Stocks that gapped up, moved sideways for 3 days and then gapped back down:

[type = stock]
and [yesterday's min(3, low) > today's high * 1.05]
and [3 day's ago low > 4 day's ago high * 1.05]

Notes: The second clause find stocks where the previous 3 days were at least 5% higher than today's high (thus having a 5% gap down today). The last clause looks for the 5% gap up happening 3 days ago which creates the 'island'.


Price and Volume Breakout Scans

Stocks Moving Sharply Higher on Large Volume
Stocks that closed more than 15% above their previous close on volume that is more than 4 times the 20-day average of volume:

[type = stock]
and [today's close > yesterday's close * 1.15]
and [today's volume > yesterday's SMA(20,volume) * 4]

Notes: To see if something moved 15% higher, compare it to yesterday's value multiplied by 1.00 + 15% (i.e., 1.15). You can adjust the '1.15', '20' and '4' to meet your specific investing goals.


Stocks Moving Sharply Lower on Large Volume
Stocks that closed more than 15% below their previous close on volume that is more than 4 times the 20-day average of volume.

[type = stock]
and [today's close < yesterday's close * 0.85]
and [today's volume > yesterday's SMA(20,volume) * 4]

Notes: To see if something moved 15% lower, compare it to yesterday's value multiplied by 1.00 - 15% (i.e., 0.85). Use the * operator for multiplication (not 'x'!). You can adjust the '0.85', '20' and '4' to meet your specific investing goals.


Stocks Moving Sharply Higher on Large Volume after Moving Sideways
Stocks that closed more than 10% above their previous close after moving sideways for at least 10 days on volume that is more than 4 times the 20-day average of volume.

[type = stock]
and [today's close > yesterday's close * 1.10]
and [today's volume > yesterday's SMA(20, volume) * 4]
and [yesterday's max(10, high) < yesterday's min(10, low) * 1.02]

Notes: Because this scan is more restrictive, we're using a smaller percentage jump (10%) than the previous examples. We've defined “moving sideways” specifically as having a trading range of less than 2% during the past 10 days.


Stocks Moving Sharply Higher after a Short-Term Downtrend
Stocks that closed more than 10% above their previous close after being in a short-term downtrend.

[type = stock]
and [today's close > yesterday's close * 1.10]
and [Downtrend is true]

Notes: The final clause uses our predefined downtrend criteria from our “Candlestick Building Blocks” area. It is based on simple MAs and cannot be adjusted.


Stocks Moving Sharply Higher after a Long Downtrend
Stocks that closed more than 10% above their previous close after being in a downtrend for at least 20 days.

[type = stock]
and [today's close> yesterday's close * 1.10]
and [yesterday's max(20,Plus DI(14)) <yesterday's min(20,Minus DI(14))]

Notes: The final clause finds stocks where +DI has been below -DI for at least 20 days - a more customizable way to determine if a stock was in a downtrend during that time.


Momentum Scans

Increasing Rate-of-Change
Stocks with sharply increasing ROC(12) over the past 5 days.

[type = stock]
and [today's Slope(5,ROC(12))> 10]

Notes: In the second clause, '5' controls the number of days to look back. '10' controls the “steepness” of the ROC's slope. The higher that number, the steeper the ROC's slope needs to be.


Bullish MACD Turnaround Signal
MACD Line moves above the MACD Signal Line when both are below zero and the MACD Histogram has been moving upwards for at least 3 days.

[type = stock]
and [today's MACD Signal(12,26,9) < 0]
and [today's MACD Line(12,26,9) < 0]
and [today's MACD Line(12,26,9) x today's MACD Signal(12,26,9)]
and [today's MACD Hist(12,26,9) > yesterday's MACD Hist(12,26,9)]
and [yesterday's MACD Hist(12,26,9) > 2 days ago MACD Hist(12,26,9)]
and [2 days ago MACD Hist(12,26,9) > 3 days ago MACD Hist(12,26,9)]
and [3 days ago MACD Hist(12,26,9) > 4 days ago MACD Hist(12,26,9)]

Notes: Placing each clause on a separate line starting with “and” allows you to easily rearrange clauses or duplicate clauses using copy and paste. It also allows you to comment out a clause temporarily by adding ”#” in front of that specific clause.

Divergence Scans

Price Diverging from Chaikin Money Flow
Prices are moving higher and Chaikin Money Flow is moving lower over the past 10 days. Potential shorts:

[type = stock]
and [close > yesterday's max(10,close)]
and [CMF(20) < yesterday's min(10,CMF(20))]


Volatility Scans

Bullish Bollinger Band Crossover
Stocks that just moved above their upper Bollinger Band line:

[type = stock]
and [today's close x today's Upper BB(20,2)]

Bollinger Band Breakout
Stocks whose Bollinger Bands just expanded rapidly after being contracted for 5 or more days:

[type = stock]
and [today's BB Width(20,2) > yesterday's max(5, BB Width(20,2)) * 4]


Candlestick Pattern Scans

Two White Soldiers
Charts with two tall, hollow candles.

[type = stock]
and [today's Long Body is true]
and [yesterday's Long Body is true]
and [today's close > yesterday's close * 1.05]
and [yesterday's close > 2 days ago close * 1.05]

Notes: Three White Soldiers is a built-in pattern that can be found with [Three White Soldiers = true]


Do-It-Yourself Gravestone Doji
Charts with a gravestone doji for today's candlestick:

[type = stock]
and [open = close]
and [open = low]
and [high> open * 1.05]

Notes: This looks for candles with a 5% or more upper shadow. You can change '1.05' to suit your trading style.


Contradictory Candles
Charts with filled black candles or hollow red candles.

[type = stock]
and [ [Filled Black Candle is true] or [Hollow Red Candle is true] ]

Notes: The additional set of square brackets around the OR clause is required otherwise unexpected results will occur.


Point and Figure Chart Pattern Scans

P&F Triple Top Breakout
All stocks with a triple top breakout pattern on their P&F chart:

[type = stock]
and [Triple Top Breakout = true]

Notes: A P&F Pattern can be true for several days, weeks or even months.


New P&F Triple Top Breakout
All stocks that have just had a new triple top breakout pattern appear on their P&F chart:

[type = stock]
and [yesterday's Triple Top Breakout = false]
and [today's Triple Top Breakout = true]

Notes: To find new P&F signals, you need to scan for the signal being false yesterday and true today.


P&F Buy Signal Scan

[type = stock]
and [Buy Signal is true]

Notes: This is the scan that is used in Bullish Percent calculations.


Charts with 10 or more X's in the Current Column

[type = stock]
and [Chart In Xs is true]
and [P&F Box Count >= 10]


Additional Sample Scans

Short Candidates:

// Close in lower half of the range on high volume
[type = stock]
and [close < open]
and [volume > SMA(20, volume) * 2] 
and [close < [ [high + low] / 2] ]
// Lowest level of CMF in 1 month
[type = stock]
and [close < open]
and [CMF(20) < 0]
and [CMF(20) < yesterday's min(20,CMF(20))]
// 52 week high on low volume
[type = stock]
and [today's high > yesterday's daily max(260,high)]
and [volume < SMA(50,volume) * .5]
// 52 week low on heavy volume
[type = stock]
and [today's low < yesterday's min(260,low)]
and [volume > SMA(50,volume) * 1.5]

Breakouts:

// 3x top breakout today
[type = stock]
and [yesterday's Triple Top Breakout is false]
and [today's Triple Top Breakout is true]
// 52 week high on increased volume
[type = stock]
and [today's high > yesterday's max(260,high)]
and [volume > SMA(50,volume) * 1.5]

Trends:

// Downtrend
[type = stock]
and [Minus DI(14) x ADX line(14)]
and [sma(40,volume)> 400000]
and [50 x RSI(14)]
// Successive Monthly Highs
[type = stock]
and [monthly high > last month's high]
and [last month's high > 2 months ago high]

SCTRs:

// SCTR cross above 90
[ [SCTR.large x 90] or [SCTR.mid x 90] or [SCTR.small x 90] ]
// SCTR cross below 30 on heavy volume
[30 x SCTR] and [volume > sma(50,volume) * 1.5]
// Large Cap SCTR up more than 20 today
[ [today's SCTR.large - yesterday's SCTR.large] > 20]
// Mid Cap SCTR breaks into 6 month high
[today's SCTR.mid > yesterday's max(120,SCTR.mid)]
// ETFs with consistently high SCTR
[SMA(50,SCTR.us.etf) > 90]
// Rising SCTR
[8 days ago SCTR > 10 days ago SCTR]
and [6 days ago SCTR > 8 days ago SCTR]
and [4 days ago SCTR > 6 days ago SCTR]
and [2 days ago SCTR > 4 days ago SCTR]

Percent Change:

// Up more than 20% over last 30 trading days
[type = stock]
and [PctChange(30,close) > 20]
// Down more than 15% over the last 20 trading days
[type = stock]
[PctChange(20,close) < -15]

Price Scans:

// Stock up more than 5% from yesterday's close
[type = stock]
and [close > yesterday's close * 1.05]
// Stocks within 5% of the yearly high
[type = stock]
and [today's high > yesterday's max(260,high) * .95]
// Stocks within 5% of yearly low
[type = stock]
and [today's low < yesterday's min(260,low) * 1.05]
// Close in upper half of the day's range
[type = stock]
and [close> [[high + low] / 2]]
// Close in upper half of weekly range
[type = stock]
and [weekly close > [[weekly high + weekly low] / 2]]
// Two tight weeks (close within 2% of last week's close)
[type = stock]
and [1 week ago close > 2 weeks ago close *.98]
and [1 week ago close < 2 weeks ago close *1.02]
// Close crosses above last month's high
[type = stock]
and [close x last month's high]
// Close within 2% of daily high
[type = stock]
and [close > high * .98 ]

Divergences:

// Price higher while CMF lower
[type = stock]
and [close > yesterday's max(20,close)]
and [CMF(20) < yesterday's min(20,CMF(20))]
// Price higher on lower RSI
[type = stock]
and [uptrend is true]
and [PctChange(10,RSI(14)) < -20]
// Downtrend with rising MACD
[type = stock]
and [downtrend is true]
and [MACD Line(12,26,9) > yesterday's max(10,MACD Line(12,26,9))]
// Bullish divergence - slope of price negative, slope of MACD Hist positive
[type = stock]
and [slope(20) < 0]
and [slope(20,MACD Hist(12,26,9)) > 0.0]
// Bearish divergence - slope of price positive, slope of MACD Hist negative
[type = stock]
and [slope(20) > 0]
and [slope(20,MACD Hist(12,26,9)) < 0.0]

"Scanning Technically" Blog Articles