StockFetcher Forums · General Discussion · Double bottom filter!<< >>Post Follow-up
molecules mal
15 posts
msg #162044
Ignore molecules mal
modified
11/25/2025 7:18:02 AM

I've been looking at a lot of charts and I'm so sick of seeing double bottoms! Typically what a stock will do is have a long linear run to a peak, then come down maybe 30%-50% in a linear move, put in a first bottom, retrace half the move back up, then come back down and put in the second bottom, sometimes undercutting the first bottom, before ripping all the way back up to all time highs. These double bottoms often have positive divergence on the MACD too.

I'd really like to build a filter to scan for these, but I have no idea how to scan for them because these moves are often over the course of weeks or months or a year. Thanks for your help!

xarlor
635 posts
msg #162047
Ignore xarlor
11/25/2025 10:01:39 AM

A simple forum search for "double bottom" returns these two as the top two results:

Fetcher[
pattern is double-bottom
]



Fetcher[
pattern is incomplete double-bottom
]



molecules mal
15 posts
msg #162048
Ignore molecules mal
modified
11/25/2025 1:41:08 PM

Oh, I forgot to search the forums! How can I get this filter to make the close at the beginning of year be 40% below the 26 week high? It isn't working. I want to pick up GRND.

Fetcher[
show stocks where pattern is incomplete double-bottom
show stocks where close is more than 40% below close 26 week high
close 365 days ago is more than 40% below 26 week high
chart-time is 12 months
]



xarlor
635 posts
msg #162050
Ignore xarlor
11/25/2025 2:54:08 PM

When you say "at the beginning of the year" do you mean on 01/01/25, or 1 year ago from today?

molecules mal
15 posts
msg #162051
Ignore molecules mal
11/25/2025 8:55:39 PM

1 year ago from today. Although the main thing is I just wanted the run up to the peak to be 80% or more, even if the start of the run up was more recent than 1 year ago.

xarlor
635 posts
msg #162052
Ignore xarlor
11/26/2025 7:57:54 AM

So a few things to unpack here.

StockFetcher "days ago" counts trading days, not calendar days. So if you want "close 1 year ago" say it just like that. If you insist on using days, there are 251 trading days in a year so "close 1 year ago" would be "close 251 days ago"

You wanted to pick up GRND, but in your filter you wanted the close 1 year ago to be 40% below the 26-week high.

GRND 26-week high = 24.73
GRND 40% below 26-week high = 14.84
GRND close 1 year ago = 15.09

Since GRND was not under 14.84 one year ago, it does not show in your filter. Here is the proof:

Fetcher[
symlist(GRND)
show stocks where pattern is incomplete double-bottom

set{26wh40p,close 26-week high * .60}

chart-time is 12 months

add column close 26-week high
add column 26wh40p
add column close 1 year ago
add column close 365 days ago
]



Lastly, your requests lack sufficient detail.

"I just wanted the run up to the peak to be 80% or more, even if the start of the run up was more recent than 1 year ago."

Which of these do you mean?
The flagpole peak?
26-week high peak?
The yearly peak (52-week high)?
Something else?

molecules mal
15 posts
msg #162053
Ignore molecules mal
modified
11/26/2025 7:50:01 PM

I meant the 26-week high peak from today. This filter isn't working because it is using the 26-week high peak a year ago. It returns downtrending stocks which I'm not interested in.
Fetcher[
show stocks where pattern is incomplete double-bottom
show stocks where close is more than 40% below close 26 week high
close 1 year ago is more than 40% below 26 week high
chart-time is 12 months
]




xarlor
635 posts
msg #162055
Ignore xarlor
11/27/2025 11:58:23 AM

Yeah, you're getting into more advanced SF filters, so I'll just drop it here. I highly recommend you study it and understand why this works.

Fetcher[
/* Looking for a double bottom that has not broken out yet */
pattern is incomplete double-bottom
chart-time is 12 months

/* We want a run-up prior to the double bottom so we want to make sure the 52-week low happened before the 52-week high */
set{hi, days(price reached high 52 week high, 251)}
set{lo, days(price reached low 52 week low, 251)}
hi > -1
lo > -1
lo > hi

/* The run-up from 52-week low to 52-week high must be 80% or better */
set{hl_diff1,high 52 week high / low 52 week low}
set{hl_diff2,hl_diff1 - 1}
set{hl_diff,hl_diff2 * 100}
hl_diff > 80

add column separator

add column high 52 week high
add column low 52 week low

add column separator

add column hl_diff - 1

draw price line at high 52 week high
draw price line at low 52 week low

do not draw hi
do not draw lo
do not draw hl_diff
]



molecules mal
15 posts
msg #162057
Ignore molecules mal
modified
11/27/2025 12:55:53 PM

Thank you! Also happy thanksgiving!

StockFetcher Forums · General Discussion · Double bottom filter!<< >>Post Follow-up

*** Disclaimer *** StockFetcher.com does not endorse or suggest any of the securities which are returned in any of the searches or filters. They are provided purely for informational and research purposes. StockFetcher.com does not recommend particular securities. StockFetcher.com, Vestyl Software, L.L.C. and involved content providers shall not be liable for any errors or delays in the content, or for any actions taken based on the content.


Copyright 2022 - Vestyl Software L.L.C.Terms of Service | License | Questions or comments? Contact Us
EOD Data sources: DDFPlus & CSI Data Quotes delayed during active market hours. Delay times are at least 15 mins for NASDAQ, 20 mins for NYSE and Amex. Delayed intraday data provided by DDFPlus


This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.