
Commands
Document Version 0.02
(draft document)
Copyright (c)
2004 yepher [www.yepher.com],
All Rights Reserved.
Document History
Send questions and comments here: fetcherlib@yepher.com
This document provides an up to date list of Stockfetcher commands and associated metadata. The source of this HTML file is XML which is intended to provide a single point for HTML, PDF, etc documentation as well as code translator to/from Metastock and stockfetcher formulas.
This document maybe more useful as a group of wiki pages. Let me know what you think.
This document is a piece of a larger project called Fetcher Lib which is a Java version of Stockfetcher Pro. Fetcher Lib currently has much more functionality than the PC version of Stockfetcher Pro.
Originally it was envisioned that FetcherLib would be an open source project. This has not become a reality yet because I have not received permission from Stockfetcher to release code that interops through the web protocol.
Also, I am not sure I can handle the number of e-mail/support that I would have to manage if it were an open source project.
Important
This document was compiled independently from Stockfetcher™ or Vestyle Software L.L.C™ If you find errors here don't contact them because they won't be able to help and you will just be waisting their time. For comments or suggestions about this document please email usOverview:
StockFetcher is a web-based stock screening product developed by Vestyle Software L.L.C. Using powerful underlying stock screening technology, StockFetcher provides straightforward methods for creating effective stock screens. These pages have been assembled to serve as a usage guide and reference to help create stock screens using StockFetcher's text-based screening language. Download this doc as PDF: commands pdfDownload Stockfetcher "official" users guide: users guide
References
StockfetcherEquis
Stockcharts.com
PariTech
Stockfetcher related sites
Muddy Method afficionados, this is a fairly active list on Yahoo GroupsCommand:
| Command: |
01 Missing commands |
| Type: | Indicator |
| Parameters: | NONE |
| Usage: |
• UNKNOWN |
| Components: | unknown command |
Example: |
Description: |
There are *MANY* missing indicators. I have not had the strength
to tackle this section yet.
Missing From MetaStock
- Absolute Open to close change percent
Missing from StockFetcher
Accumulation Swing Index
|
| Command: |
Absolute Open to Close Change Percent |
| Type: | Indicator |
| Parameters: | NONE |
| Usage: |
• absolute open to close change percent • opcl • aopcl • opcl% |
| Components: | price open close |
Example: |
| • show stocks where the opcl is above 0 |
| • show stocks where the opcl% is below -2.5% |
| • show stocks where the aopcl is above 2.0 |
| • show stocks where the aopcl% is above 5.0% |
Description: |
A measure of a stock's closing price relative to the open.
The value is the difference between the close and open,
represented as a percent of the opening price.
While you can refer to all of them using the longer syntax
"Absolute Open to Close Change Percent", the examples below show
the "abbreviated" versions.
show stocks where the opcl is above 0
show stocks where the opcl% is below -2.5%
show stocks where the aopcl is above 2.0
show stocks where the aopcl% is above 5.0%
In summary:
• opcl = Open to Close Change
• opcl% = Open to Close Change Percent
• aopcl = Absolute Open to Close Change
• aopcl% = Absolute Open to Close Change Percent
Formula:
opcl = close - open
aopcl = abs(close - open)
opcl% = 100 * ((CLOSE - OPEN)/CLOSE)
aopcl% = abs(100 * ((CLOSE - OPEN)/CLOSE))
|
Example: |
| • show stocks where the APO(10,50) crossed above 0 within the last 1 day |
| • show stocks where the APO(10,100) has been increasing for 10 days |
Description: |
• Learn More
The Absolute Price Oscillator (APO) is the exact same measure as
the Percent Price Oscillator (PPO) except the values are not
converted to percentages. The APO is computed by taking the
difference between two specified moving averages.
![]() |
Example: |
| • show stocks where the AVO(10,50) crossed above 0 within the last 1 day |
| • show stocks where the AVO(10,100) has been increasing for 10 days |
Description: |
• Learn More
The Absolute Volume Oscillator (AVO) computes the difference
between two average volume measures. Unlike the Percent Volume
Oscillator(PVO) the AVO does not convert the difference to a
percent or normalize the results.
Formula:
![]() |
| Command: |
Acceleration Bands |
| Type: | Indicator |
| Parameters: | Period |
| Usage: |
• {upper, lower, middle} acceleration band(PERIOD) |
| Components: | Envlope price high low |
| Developed by: | Price Headley - |
Description: |
Developed by Price Headley, the Acceleration bands are based on
the average trading range for each day. The values are plotted
equidistant from an n-day simple moving average which serves as
the center or middle band. The author indicates that successive
days exceeding one of the bands tends to indicate an entry
point.
Because the bands use the daily trading range (high-low) they
will also expand and contract based on the volatility of the
price.
• Amazon: Big Trends In Trading By Price Headly
|
| Command: |
Accumulation Distribution |
| Type: | Indicator |
| Parameters: | NONE |
| Usage: |
• accumulation distribution |
| Components: | market strength Iindicator price close low high volume |
| Developed by: | Marc Chaikin - |
Example: |
| • Accumulation Distribution is greater than Accumulation Distribution yesterday |
Description: |
• Learn More
There are many indicators available to measure volume and the flow
of money for a particular stock, index or security. One of the most
popular volume indicators over the years has been the
Accumulation/Distribution Line. The basic premise behind volume
indicators, including the Accumulation/Distribution Line, is that
volume precedes price. Volume reflects the amount of shares traded
in a particular stock and is a direct reflection of the money
flowing into and out of a stock. Many times before a stock advances,
there will be period of increased volume just prior to the move.
Most volume or money flow indicators are designed to identify early
increases in positive or negative volume flow to gain an edge before
the price moves. (Note: the terms "money flow" and "volume flow" are
essentially interchangeable.)
Methodology
The Accumulation/Distribution Line was developed by Marc Chaikin to
assess the cumulative flow of money into and out of a security. In
order to fully appreciate the methodology behind the
Accumulation/Distribution Line, it may be helpful to examine one of the
earliest volume indicators and see how it compares.
Example
![]() In 1963, Joe Granville developed On Balance Volume (OBV), which was
one of the earliest and most popular indicators to measure positive
and negative volume flow. OBV is a relatively simple indicator that
adds the corresponding period's volume when the close is up and
subtracts it when the close is down. A cumulative total of the
positive and negative volume flow (additions and subtractions) forms
the OBV line. This line can then be compared with the price chart
of the underlying security to look for divergences or confirmation.
In developing the Accumulation/Distribution Line, Chaikin took a
different approach. OBV uses the change in closing price from one
period to the next to value the volume as positive or negative.
Even if a stock opened on the low and closed on the high, the period's
OBV value would be negative as long as the close was lower than the
previous period's close. Chaikin choose to ignore the change from
one period to the next and instead focused on the price action for
a given period (day, week, month). He derived a formula to calculate
a value based on the location of the close, relative to the range for
the period. We will call this value the "Close Location Value" or CLV.
The CLV ranges from plus one to minus one with the center point at zero.
There are basically five combinations:
1. If the stock closes on the high, the absolute top of the range,
then the value would be plus one.
2. If the stock closes above the midpoint of the high-low range, but
below the high, then the value would be between zero and one.
3. If the stock closes exactly halfway between the high and the low,
then the value would be zero.
4. If the stock closes below the midpoint of the high-low range, but
above the low, then the value would be negative.
5. If the stock closes on the low, the absolute bottom of the range,
then the value would be minus one.
The CLV is then multiplied by the corresponding period's volume and
the cumulative total forms the Accumulation/Distribution Line.
Bullish Signals
A bullish signal is given when the Accumulation/Distribution Line
forms a positive divergence. Be wary of weak positive divergences
that fail to make higher reaction highs or those that are relatively
young. The main issue is to identify the general trend of the
Accumulation/Distribution Line. A two-week positive divergence may
be a bit suspect. However, a multi-month positive divergence
deserves serious attention.
Bearish Signals
The same principles that apply to positive divergences apply to
negative divergences. The key issue is to identify the main trend
in the Accumulation/Distribution Line and compare it to the underlying
security. Young negative divergences, or those that are relatively
flat, should be looked upon with a healthy dose of skepticism.
Formula:
A portion of each day's volume is added or subtracted from a cumulative
total. The nearer the closing price is to the high for the day, the
more volume added to the cumulative total. The nearer the closing
price is to the low for the day, the more volume subtracted from the
cumulative total. If the close is exactly between the high and low
prices, nothing is added to the cumulative total.
![]() |
| Command: |
Add Column |
| Type: | Modifier |
| Parameters: | [] |
| Usage: |
• add column [INDICATOR] {alias} |
| Components: | results |
Example: |
| • Price is between 10 and 50 and Add column average volume(10) {av10} |
| • Price is between 10 and 50 and Add column average volume(10) {av10} and Add column MA(50) 52 week high {ma50hi} |
Description: |
By default, StockFetcher returns basic price and volume
information for each of the stocks returned in a screen.
This information includes:
• most recent closing price.
• percent change from previous close.
• the number of shares traded during the
most recent day.
The results columns can easily be augmented using the add column
phrase. With add column nearly any measure or indicator may be
added to the filter results. As an example, the ten day average
volume is added as a column to a basic stock screen:
Price is between 10 and 50
and Add column average volume(10)
Now the results present the ten day average volume along with
the standard information.
In addition to providing new information with the filter
results, each new measure can be sorted in either ascending or
descending order by clicking on the appropriate column header.
Sorting these additional columns is useful with measures whose
high or low values can provide additional approach confirmation.
For example, take an approach where the close-to-open gap in
price is displayed.
Show stocks where the price is between 10 and 15
and Add column close to open gap
Clicking on the column heading for the "close to open gap"
immediately presents the results where the most recent open
price gapped significantly from the closing price the day
before.
Column Aliases
Enclosing text inside the {} symbols provides an optional
extension to the "add column" phrase. These braces are used to
rename resulting column headers to something more concise or
meaningful. Taking the average volume example above, suppose the
column is renamed to "av10" to clean up the results.
Price is between 10 and 50
and Add column average volume(10) {av10}
The contents inside the {...} will be used as the new column
header. This extension definitely proves useful when many
measures are added to the results, or when the actual measures
added to the results are complex and produce difficult to read
headers. In the example below, a 52-week high of the MA(50) is
added to the results.
Price is between 10 and 50
and Add column average volume(10) {av10}
and Add column MA(50) 52 week high {ma50hi}
|
| Command: |
advance decline ratio |
| Type: | Broad Market Indicator |
| Parameters: | NONE |
| Usage: |
• advance decline ratio |
| Components: | broad market price |
Example: |
| • close is above 5 and draw advance decline ratio |
Description: |
The A/D Ratio is similar to the Advancing-Declining Issues in that it
displays market breadth. But, where the Advancing-Declining Issues
subtracts the advancing/declining values, the A/D Ratio divides the
values. The advantage of the Ratio is that it remains constant
regardless of the number of issues that are traded on the
New York Stock Exchange (which has steadily increased).
A moving average of the A/D Ratio is often used as an
overbought/oversold indicator. The higher the value, the more
"excessive" the rally and the more likely a correction. Likewise, low
readings imply an oversold market and suggest a technical rally.
Keep in mind, however, that markets that appear to be extremely
overbought or oversold may stay that way for some time. When
investing using overbought and oversold indicators, it is wise to
wait for the prices to confirm your belief that a change is due before
placing your trades.
Day-to-day fluctuations of the Advance/Decline Ratio are often
eliminated by smoothing the ratio with a moving average.
Formula:
![]() The A/D Ratio is calculated by dividing the number of stocks that
advanced in price for the day by the number of stocks that declined.
This indicator was revisited in December 2004 issue of Technical Analysis of Stocks & Commodities
magazine pg 68 by Tom McClellan.
|
| Command: |
Apply to Watch List |
| Type: | Modifier |
| Parameters: | [] |
| Usage: |
• apply to watch list |
| Components: | watchlist |
Example: |
| • MA(50) crossed above MA(200) And apply to watch list |
Description: |
• More Watch List Information
By default, StockFetcher will scan all stocks when performing a
screen. Sometimes, it isn't necessary to see all matches. As an
example, when developing an exit strategy, it is helpful to look
at specific stocks that have already met an entry requirement.
On StockFetcher, this is accomplished by applying a filter
specifically to a list of stocks called the watch list.
Simply adding the phrase apply to watch list tells StockFetcher
to scan stocks in the watch list. For example the following phrase
MA(50) crossed above MA(200) And apply to watch list
provides the crossover as an exit condition, but only for the
stocks that are currently in the watch list.
|
| Command: |
Arms Index |
| Type: | Broad Market Indicator |
| Parameters: | NONE |
| Usage: |
• arms index |
| Components: | broad market price volume |
| Developed by: | Richard Arms - 1967 |
Example: |
| • Arms Index below 1 |
| • Arms Index above 0 |
Description: |
• Learn More
• Learn More
The Arms Index is an indicator that uses advancing and declining
stocks and their volume to measure intra-day market supply
demanddemand and can be applied over short or longer time periods.
The Arms Index is named after its creator Richard W. Arms and is
also know as the "TRIN" index The formula is simple and can be
applied to any index for which the data is available. It is simply
(Advancing issues/Declining issues) / (Advancing volume/ Declining
volume).
If more volume goes into advancing issues than declining issues the
Arms Index falls below 1.0. If more volume goes into declining
stocks than advancing stocks the Arms Index rises above 1.0.
Notes on the Arms Index
• For the Arms Index, readings over 1.00 are bearish, but
extreme readings may indicate that a market reversal is near.
In general, any time the index gets over 2.5, a rally could occur
near term.
The caution is to never rely on one indicator and to have a strong
fundamental understanding of why the current market trend is in
place and what reasons if any might emerge that could change the
current perceptions on fundamental valuations. From a technical
standpoint it is best to wait for price confirmation before trading
or a strengthened argument by looking at other indicators and market
data.
• The Arms Index was created by relating the volume of
advancing issues to the volume of declining issues. Generally a
healthy volume accompanying a rise in prices is the forerunner of a
better market than low volume.
• Using moving averages of the index is one way to smooth the
Arms Index. Some traders look for moving average crossovers or zero
line crossovers in developing trading uses for the Arms Index.
• Usually numbers between zero and one are Bullish, while
numbers above 1 are bearish.
• Interpretation : 0-1 -- Bullish >1 -- Bearish
• Diverging plots of price/volume against the Arms Index can
be an indication of a loss in Momentum.
Formula:
The Arms Index is calculated by first dividing the number of stocks
that advanced in price by the number of stocks that declined in price
to determine the Advance/Decline Ratio. Next, the volume of advancing
stocks is divided by the volume of declining stocks to determine the
Upside/Downside Ratio. Finally, the Advance/Decline Ratio is divided
by the Upside/Downside Ratio.
![]() • Amazon: The Arms Index By Richard W., Jr. Arms
|
| Command: |
Aroon |
| Type: | Indicator |
| Parameters: | PERIOD |
| Usage: |
• aroon {up, down} (PERIOD) • aroon Oscillator(PERIOD) |
| Components: | oscillator price high |
| Developed by: | Tushar Chande - 1995 |
Description: |
• Learn More
Used to detect potential trends in stocks, the aroon measures
(developed by T. Chande) compute the amount of time since a closing
value reached a new high or new low. Given a specified period,
the aroon Up will search for the highest closing value during that
period and return the distance from the most recent day for when
that high happened. The aroon Down works in the same way except
looking for the lowest closing vlaue. Finally, the aroon Oscillator
simply takes the difference between the two values. Valid ranges for
the aroon Up and aroon Down are 0-100 and for the aroon Oscillator
the valid range is -100 to 100.
Aroon means "Dawn's Early Light" in Sanskrit. September 1995 issue of
Technical Analysis of Stocks & Commodities magazine.
|
| Command: |
Average True Range |
| Type: | Indicator |
| Parameters: | Period |
| Usage: |
• average true range(PERIOD) • ATR(PERIOD) |
| Components: | volatility indicator price high low close |
| Developed by: | Welles Wilder - 1978 |
Example: |
| • Average True Range(14) has been increasing for 5 days |
| • ATR(14) has been increasing for 3 days lag 2 days and the ATR(14) has been decreasing for 2 days |
Description: |
• Learn More
Developed by J. Welles Wilder and introduced in his book, New Concepts in Technical Trading Systems (1978).
Using the relationships between the high and low of a day
compared with the previous close, the Average True Range is a
measure of volatility developed by Welles Wilder. Typically
used to identify oversold and overbought conditions, a low
average true range indicates a stock which lacks volatility,
while high average true range indicates potentials sell-offs
of a stock.
Formula:
![]() • Amazon: New Concepts in Technical Trading Systems By J. Welles Wilder
|
| Command: |
Average Volume |
| Type: | Indicator |
| Parameters: | Period |
| Usage: |
• average volume(PERIOD) • AVGVOL(PERIOD) |
| Components: | volume |
Example: |
| • Average Volume(10) is between 500000 and 1000000 |
Description: |
A simple average of the shares traded (volume) of a stock over
the given number of days.
|
| Command: |
Back Testing |
| Type: | advanced topic |
| Parameters: | NONE |
| Usage: |
• NONE |
| Components: | user contributed advanced topic |
| Developed by: | Cegis - 9/17/2004 |
Example: |
Description: |
Editors Note:
Although this is not an idicator it is a fairly singificant
usage pattern that almost makes SF backtesting usable.
Thank you Cegis for the great insight that you continually provide.
--------------------------------------------------------------------
Original Post
cegis 9/17/2004 5:23:18 PM
This is a discussion of a technique that I (cegis) developed
a few months back, and has seemed to be useful regularly in
other threads ever since. So, I decided to document it, in
the hope it will be of use to others.
This technique allows you to calculate returns for a filter,
for any time period, and (almost) any assumed trading "program".
What StockFetcher offers as basic site functionality is a
column labeled "Performance" when showing results from a
filter that has the "offset" phrase. The performance shown
(I think - correct me if I'm wrong) is based on the closing
price of the stock on the day that the stock matched the
filter (the offset date) and yesterday's close. This means
that the period covered by the column changes with the offset.
You can also get the 1 day, 2 day, 3 day, 4 day, one week,
two week, etc. performance for the filter's results by
clicking on the Performance column header, and "browsing
through the dates" (assuming there have been that many
trading days in the offset period). This is good, but limiting.
The scenarios that SF's Performance functionality does not
take into account are things like "performance for a 10 day
period, regardless of the start date", "worst case performance"
using the day-after-match's high and end-of-period low as
entry/exit points, or "trading program rules" such as max
loss of 2%. This technique allows such analysis.
The "trick" to this technique is to use the "days ago" phrase
instead of the "offset" phrase. This allows you to "see what
happened" AFTER the stocks matched your filter. As an example,
if you use "offset 10 days", SF will not allow you to retrieve
("see") values from what would be "offset 9 days". However,
if you use "10 days ago", you can always analyze what happened
"9 days ago".
Let's look at a simple example. We'll assume our starting filter is:
rsi(2) is less than 1
and price is between 1 and 10
and average volume(25) is greater than 100000
If we run this filter on Sat. 9/25/04 (which will be our assumed
run date for all of the following discussion), we'll see the
results for 9/24 market close. Now, let's assume we want to
see how this filter performed based on picks from 10 days ago.
If we use
rsi(2) is less than 1
and price is between 1 and 10
and average volume(25) is greater than 100000
offset 10 days
we'll get selections for 9/10, and we'll get the Performance
column talked about above (9/10 to 9/24, close to close), as
standard SF functionality. However, if we wanted to see what
a "worst case" scenario would have been, we would not be able
to access the data for 9/11's high or 9/24's low to make this
determination. However, if we instead used
rsi(2) 10 days ago is less than 1
and price 10 days ago is between 1 and 10
and average volume(25) 10 days ago is greater than 100000
we'll still get the results of our original filter as of 9/10,
but now we can calculate our worst case scenario:
set{myrtn,low - high 9 days ago}
set{myrtnp,myrtn / high 9 days ago}
set{wcrtnpct,myrtnp * 100}
rsi(2) 10 days ago is less than 1
and price 10 days ago is between 1 and 10
and average volume(25) 10 days ago is greater than 100000
add column high 9 days ago {entry}
add column low {exit}
add column myrtn {profit}
add column wcrtnpct {profit percent}
Since all of our conditions have "10 days ago", the first
set{} command is "looking into the future" to get the following
day's high (high 9 days ago), and the 10th day's low
(low [0 days ago]), to calculate the return ($). The other two
set{}s just convert the first set{} into a percentage. (I'm
using my entry as the basis for the percentage...) The add
columns will show us our result.
Note that the return calculated will ALWAYS be a ten-day
return. We can continue to backtest this filter by adding
an "offset" too!
set{myrtn,low - high 9 days ago}
set{myrtnp,myrtn / high 9 days ago}
set{wcrtnpct,myrtnp * 100}
rsi(2) 10 days ago is less than 1
and price 10 days ago is between 1 and 10
and average volume(25) 10 days ago is greater than 100000
add column high 9 days ago {entry}
add column low {exit}
add column myrtn {profit}
add column wcrtnpct {profit percent}
offset 1
With the offset 1, we'll actually match stocks for 9/9, and
show what the 10 day return is through 9/23. You can then
alter the offset to continue backtesting other dates. In
other words, you do NOT have to keep changing the "days ago"
in order to backtest prior dates. Just remember that SF will
report "results as of 9/24" (or whatever your offset would
suggest) at the top of the results list, and you have to
remeber that you used "days ago" to shift the data back an
additional 10 days.
Also note that you can calcualte multiple returns for the
period covered by the "days ago" offset:
set{myrtn10,low - high 9 days ago}
set{myrtn10p,myrtn10 / high 9 days ago}
set{wc10rtnpct,myrtn10p * 100}
set{myrtn5,low 5 days ago - high 9 days ago}
set{myrtn5p,myrtn5 / high 9 days ago}
set{wc5rtnpct,myrtn5p * 100}
rsi(2) 10 days ago is less than 1
and price 10 days ago is between 1 and 10
and average volume(25) 10 days ago is greater than 100000
add column wc5rtnpct
add column wc10rtnpct
Here, we added a claculation of the 5 day worst case scenario,
in addition to the 10 day return.
This can be taken one step further (this is where this gets
REALLY interesting!) by using "logical variables" to actually
implement a "trading program". (Logical variables are discussed
in several other threads, so I'm not gonna go into them here...)
Let's say that you want a 2% trailing stop, and you'll hold
for a max of 3 days. (I'll discuss this day limit later.)
We'll assume we enter at the opening price, and exit at our
stop or 3 day close. We'll also assume we only adjust our
stop once a day based on the open. This filter will show you
how well you would do:
set{limit1,open 2 days ago * 0.98}
set{in1,count(low 2 days ago is greater than limit1,1)}
set{stopped1,1 - in1}
set{out1,stopped1 * limit1}
set{limit2, open 1 day ago * 0.98}
set{in2,count(low 1 day ago is greater than limit2,1) * in1}
set{stopped2a,1 - in2}
set{stopped2,stopped2a * in1}
set{out2,stopped2 * limit2}
set{limit3, open * 0.98}
set{in3,count(low is greater than limit3,1) * in2}
set{stopped3a,1 - in3}
set{stopped3,stopped3a * in2}
set{out3,stopped3 * limit3}
set{out3c,close * in3}
set{outa,out1 + out2}
set{outb,outa + out3}
set{out,outb + out3c}
add column open 2 days ago {in}
add column out1
add column out2
add column out3
add column out3c
rsi(2) 3 days ago is less than 1
and price 3 days ago is between 1 and 10
and average volume(25) 3 days ago is greater than 100000
So here, out1, out2, out3, and out3c will show you your exit
price if you exit on the first, second, or third days, or at
the close of the third day (respectively). They will be ZERO
if you did not exit on that day. Thus, you can see when you
would have exited, as well as how well you would have done.
There are two things I would have liked to do in the prior
filter, but SF limits how many times you can "nest" set{}
statements (that is, base one set{} on the results of another).
I would have liked to change the calculation of limit2 and
limit3 so that it only goes up in value (a trailing stop),
as well as calcaulte the $ and percentage return based on my
exit price. I would have also liked to check for "green hold"
(high 2 days ago > close 3 day ago) before considering myself
"in". However, this filter sits right at the edge of the SF
nesting limit, so I was unable to do that. That's also why I
chose a three day maximum hold period.
One way to get around this, somewhat, is to show results for
every day (instead of figuring out if you would have been
stopped), like this:
set{limit, open 9 days ago * 0.98}
set{profit1, high 9 days ago * 0.98}
set{profit2, high 8 days ago * 0.98}
set{profit3, high 7 days ago * 0.98}
set{profit4, high 6 days ago * 0.98}
set{profit5, high 5 days ago * 0.98}
set{profit6, high 4 days ago * 0.98}
set{profit7, high 3 days ago * 0.98}
set{profit8, high 2 days ago * 0.98}
set{profit9, high 1 days ago * 0.98}
add column open 9 days ago {in}
add column limit
add column low 9 days ago {low1}
add column profit1
add column low 8 days ago {low2}
add column profit2
add column low 7 days ago {low3}
add column profit3
add column low 6 days ago {low4}
add column profit4
add column low 5 days ago {low5}
add column profit5
add column low 4 days ago {low6}
add column profit6
add column low 3 days ago {low7}
add column profit7
add column low 2 days ago {low8}
add column profit8
add column low 1 days ago {low9}
add column profit9
rsi(2) 10 days ago is less than 1
and price 10 days ago is between 1 and 10
and average volume(25) 10 days ago is greater than 100000
Now, you can read across the columns, and if you assume you
use 2% below the high as the following day's stop, all you
have to do is read across the columns to see where a "low"
value is less than the prior column (profit or limit) to see
where you would have been stopped out.
This isn't perfect, but it can get you some useful information!
Things to Consider
==================
• The number of days you want to use in the "days ago" phrase
is the maximum holding period (or days worth of data you need)
to calculate your returns. You do not want to use a larger number.
• If your filter compares to prior days (ie, something like
"open is greater than close 1 day ago"), you want to ADD
the number of days in this calculationally-based days ago
to the condition's days ago (in this case, making it something
like "open 10 days ago is greater than close 11 days ago").
• Note that the days ago prevents you from running the backtest
as of a date "closer" to today than the number of days ago
used. I do not consider this a major limiting factor.
• SF will report "Filter results for [day of week] [date]".
This will be based on the offset, not your days ago, value.
You just need to remember that you have programmed an
additional offset into the filter for backtesting purposes.
• Whenever I use this technique, I first copy the filter that
I want to backtest, then modify it to do the calculations
and use the days ago that I need. You don't really want to
use days ago (in the manner described here) in a filter
you're gonna actually select stocks from...
• Depending on your trading conditions and return calculations,
you may be able to use the count() and sum() functions,
and/or the "[n] days high" / "[n] days low", to look at
longer time frames than the three days as in the example.
• If you are backtesting a weekly filter, use "weeks ago"
instead of "days ago". Also, funky things will happen
if your filter mixes weekly and daily indicators.
(Basically, the "days ago" and "offset" are not quite
equivalent due to the way SF handles weekly values...)
• Remember that you can download the results into a spreadsheet,
and then use that to extend the backtest based on any
logic you couldn't get into the filter.
Hope this helps,
C
|
Example: |
| • show stocks where Bollinger %B(20,2.0) crossed below 0 and draw Bollinger Bands(20,2.0) |
Description: |
• Learn More
The Bollinger %B analyzes the current price of a stock with
respect to the width of it's Bollinger Bands. By subtracting the
price from the lower band and dividing by the actual band width,
the Bollinger %B provides an oscillator that can detect the
stock's position within the bands.
Formula:
![]() • Amazon: Bollinger on Bollinger Bands by John A. Bollinger
|
Example: |
| • Price crossed below the lower bollinger band (20) |
| • Price is below the upper bollinger(20,2.0) and price is above the upper bollinger (20,1.5) |
| • Price is near the median bollinger line(20) |
Description: |
• Learn More
• Learn More
Bollinger Bands are similar to moving average envelopes. The
difference between Bollinger Bands and envelopes is envelopes are
plotted at a fixed percentage above and below a moving average,
whereas Bollinger Bands are plotted at standard deviation levels
above and below a moving average. Since standard deviation is a
measure of volatility, the bands are self-adjusting: widening during
volatile markets and contracting during calmer periods.
Bollinger Bands were created by John Bollinger.
Interpretation
Bollinger Bands are usually displayed on top of security prices, but
they can be displayed on an indicator. These comments refer to bands
displayed on prices.
As with moving average envelopes, the basic interpretation of
Bollinger Bands is that prices tend to stay within the upper- and
lower-band. The distinctive characteristic of Bollinger Bands is
that the spacing between the bands varies based on the volatility
of the prices. During periods of extreme price changes (i.e., high
volatility), the bands widen to become more forgiving. During
periods of stagnant pricing (i.e., low volatility), the bands
narrow to contain prices.
Mr. Bollinger notes the following characteristics of Bollinger Bands.
• Sharp price changes tend to occur after the bands tighten,
as volatility lessens.
• When prices move outside the bands, a continuation of the
current trend is implied.
• Bottoms and tops made outside the bands followed by bottoms
and tops made inside the bands call for reversals in the trend.
• A move that originates at one band tends to go all the way
to the other band. This observation is useful when projecting
price targets.
Formula:
![]() ![]() ![]() • Amazon: Bollinger on Bollinger Bands by John A. Bollinger
|
Example: |
| • Bollinger Oscillator(20) is above 100 and draw Bollinger Bands(20) |
| • Bollinger Oscillator crossed above -100 and draw Bollinger Bands(20) |
Description: |
• Learn More
• Learn More
The Bollinger Width Oscillator is a simple extension of the
Bollinger Bands using the closing price. Essentially the
Bollinger Width Oscillator computes the position of the
closing price relative to the width of the Bollinger Bands.
This oscillator ranges from -100 to 100. Where a value above
100 indicates the closing price is above the upper band and a
value of -100 would indicate the price is below the lower band.
Similarly, a value at 0 indicates the price is centered on the
median Bollinger line (or moving average.)
• Amazon: Bollinger on Bollinger Bands by John A. Bollinger
|
Description: |
• Learn More
• Learn More
The Bollinger Width returns the width of the upper and lower
bollinger band divided by the n-day average price. In
other words, a Bollinger width near 0 indicates the upper and
lower bollinger bands are very close together while a value
near 1 indicates wide bands.
• Amazon: Bollinger on Bollinger Bands by John A. Bollinger
|
Example: |
Description: |
Editors Note:
Although this is not an idicator it does provide functionality
this is not directly supported.
--------------------------------------------------------------------
Original Post
TheRumpledOne 8/24/2003 1:25:46 PM
I have implemented OR, NOT and AND using SF set and count
functions. Now we have a complete logic system within SF. THERE
IS NOTHING YOU CAN'T DO NOW!
This should revolutionize SF Filter writing.
/* OR Implementation */
/* by definition OR is TRUE IF A is TRUE, B is TRUE, or A AND B is TRUE*/
/* THEREFORE by counting and adding, if the sum is greater */
/* than 0 the OR condition is TRUE. */
/* Copyright 2003 by Avery T. Horton, Jr. */
/* Permission to use OR Implementation withing StockFetcher Granted */
/* Permission to publish or post on any other forum DENIED */
/* ----------------------------------------------------------------*/
set{A, count(close above 100, 1)}
set{B, count(volume above 50,000,000, 1)}
set{OR1, A + B} show stocks where OR1 above 0
/* NOT Implementation */
/* by definition NOT A is TRUE IF A is FALSE*/
/* THEREFORE by counting and adding, if the sum is equal to 0 */
/* the NOT condition is TRUE. */
/* Copyright 2003 by Avery T. Horton, Jr. */
/* Permission to use NOT Implementation withing StockFetcher Granted */
/* Permission to publish or post on any other forum DENIED */
/* ----------------------------------------------------------------*/
set{NOT, count(close below 100, 1)}
show stocks where NOT equal 0
/* AND Implementation */
/* by definition A AND B is TRUE IF A is TRUE and B is TRUE*/
/* THEREFORE by counting and adding, if the sum is equal to 2 the */
/* AND condition is TRUE. */
/* Copyright 2003 by Avery T. Horton, Jr. */
/* Permission to use NOT Implementation withing StockFetcher Granted */
/* Permission to publish or post on any other forum DENIED */
/* ----------------------------------------------------------------*/
set{A, count(close above 100, 1)}
set{B, count(volume above 1000000, 1)}
set{X, A + B} show stocks where X equal 2
Ok, first, before you BLAST me with "SF already has AND",
just sit back, relax and OPEN you mind...
Using these functions, you have a complete logic system. You
can implement a complete SET THEORY.
OR is greater than 0
AND is equal 2
NOT is equal 0
So by putting each condition you are filtering in a COUNT and
then using SET to sum the condition pair, you can test for the
OR, AND or NOT condition.
If you don't understand LOGIC or SET THEORY, I suggest you do a
www.google.com search.
Those who understand will see the simple elegance of this.
GOOD LUCK WITH YOUR FILTERS!
Editors Note:
Here is some additional insight from Cegis
--------------------------------------------------------------
cegis 6/17/2004 1:35:21 PM
RumpledOne,
Good idea to make a post on this thread to bring it back to the
top of the list!
I just re-read the thread, and would like to make some comments:
1) RPG II - WOW! I haven't used THAT for quite a while, either!
(But more recently than 20 years ago, I think. Imagine THAT!)
2) Unfortunately, I don't believe this technique is copyrightable,
as it is standard algebraeic (sp??) logic, with one exception: AND
is "usually" implemented with multiplication (c1 * c2 = 1 is the
same as c1 AND c2). Using multiplication keeps your values 1 if
"the whole schebang" is true, and 0 if false. (Think complex
conditions...) No need to figure that c1 AND c2 AND c3 should be
using 3 instead of 2 and so forth. (Although that's not hard, it
could be a point of error if you are editing a filter.)
3) "NOT c1" could also be implemented as (1 - c1), which again
keeps "true" = "1", and "flase" = "0", for use in more
complicated expressions. (Again, "standard" algebraeic logic...)
4) **IMPORTANT** (IMHO) This technique also allows for
IF/THEN/ELSE!!! Let me use an example (NOT necessarilly a
good filter, but a good example!) to explain. Suppose you
want a volume condition, but the volume limit is to be based
on price. Let's say, if a stock's price is less than $5, you
want an average volume(30) of at least 100,000. For stocks >= $5,
you want the average volume(30) to be at least 250,000. Here's a
filter that illustrates how to achieve this:
set{if,count(price is less than 5,1)}
set{vol1,if * 100000}
set{else,1 - if}
set{vol2,else * 250000}
set{vol,vol1 + vol2}
price between 4.5 and 5.5
and average volume(30) is greater than vol
add column average volume(30)
add column if
add column else
add column vol1
add column vol2
add column vol
The first set{} will result in "if" being 1 if the price is
below $5, or 0 if the price is >= $5.
The second set{} command (and here's the trick) will result in
"vol1" being 100,000 if the price is below $5, or ZERO otherwise.
This is kinda like an AND, except the value you're looking for
won't be only zero or one.
The third set{} is really "NOT if", to be used for the "else"
part of the condition.
The fourth set{} uses the same trick as the second, resulting
in "vol2" being 250,000 or zero.
Note that "vol2" will be 250,000 ONLY when "vol1" is zero, and
"vol1" will ONLY be 100,000 when "vol2" is zero. That allows the
last set{} command to be our desired volume limit based on price!
(This is kinda like an OR, except using non-binary numbers.)
Oh, yeah. This is also a case where you might NEED the
implementation of AND described above, and NOT BE ABLE to use
SF's implementation. (Think "volume must be above 100,000 if price
is below 5 AND RSI(2) below 1, otherwise voume must be above 250,000".)
I hope this information is useful.
C
|
| Command: |
BOP |
| Type: | Indicator |
| Parameters: | NONE |
| Usage: |
• BOP above .2 |
| Components: | price close |
| Developed by: | Igor Livshin - 2001 |
Description: |
• Learn More
By Igor Livshin that can be found on p. 18 of the August 2001 issue of Stocks & Commodities Magazine.
According to Livshin, "The balance of power (BOP) indicator measures the strength of the
bulls vs. bears by assessing the ability of each to push price to an extreme level." Although the
article goes on to describe a somewhat involved calculation of the BOP, it breaks down to nothing more
than...
(CL - OP)/(HI - LO)
This resulting raw BOP value can then be optionally smoothed using any moving average type, and can be
drawn as a line or histogram.
The BOP oscillates between extremes of -1 and +1.
Livshin goes on to make the following statements...
• For Daily charts, a 14 period moving aveage is recommened, though the number of periods varies
depending on the nature of the market and the time frame.
• One of the most important properties of BOP is the level at which it clusters its tops and bottoms.
During bull markets, its tops often reach the upper limit and never reach the bottom level.
During bear markets, the picture is reversed.
• BOP supports price divergence, trends, and overbought-oversold levels.
• A change in the BOP trend serves as a warning signal and should be confirmed by a change in the
price direction.
|
| Command: |
Candlestick patterns |
| Type: | Pattern |
| Parameters: | [none] |
| Usage: |
• pattern is [PATTERN NAME] |
| Components: | pattern price open high low close |
Description: |
• Examples
• Bollinger Patterns
Click on links to see some example patterns,
Cup and handle Pattern
![]() |
Description: |
An oscillator used to determine turning points, developed by
John F. Ehlers.
The Center of Gravity indicator was introduced by John F Ehlers
in the May 2002 issue of Technical Analysis of Stocks and
Commodities. Based on his worked with adaptive filters, Ehlers
described the indicator as a unique new oscillator that it is
smoothed and has essentially zero lag. The smoothing enables
clear identification of turning points, and the zero lag aspect
means action can be taken early in the move.
Formula:
COG = -1 * NUM / DEN
n
NUM = [ PRICE[i] * (i + 1) ]
i = 0
n
DEN = PRICE[i]
i = 0
Where...
PRICE[i] = The price of the ith bar back.
PRICE[0] = price of current bar.
PRICE[2] = price 2 bars back, etc.
Essentially the numerator calculates a weighted sum of price
while the numerator calculates the sum of price and the ratio
represents the strength of movement in one direction.
• Amazon: Rocket Science for Traders By John F. Ehlers
|
Example: |
| • Chaikins Volatility(10,10) has been increasing for 5 days |
| • Chaikins Volatility(10,10) has been decreasing for 3 days |
Description: |
Typical of most volatility measures, Chaikin's Volatility
measures the separation between the high and low price of a
stock. Specifically, Chaikin's Volatility uses the difference
between current day average of the high and low and the average
of the high and low, divided by the average high and low
separation. Interpretations of this indicator involve watching
for high volatility to indicate market peaks with low
volatility possibly indicating a market bottom.
The Chaikin Volatility indicator is the rate of change of the trading range.
The indicator defines volatility as a increasing of the difference between
the high and low. A rapid increases in the Chaikin Volatility indicate that
a bottom is approaching. A slow decrease in the Chaikin Volatility indicates
that a top is approaching.
Formula:
![]() |
Description: |
• Learn More
• Learn More
January 94 issue of Stocks & Commodities magazine
Inspired by the prior work of Joe Granville and Larry Williams,
Marc Chaikin developed a new volume indicator, extending the work
done by his predecessors. The Chaikin Oscillator is a moving average
oscillator based on the Accumulation/Distribution indicator.
Interpretation
The following discussion of volume accumulation/distribution
interpretation, written by Marc Chaikin, is reprinted here with
his permission:
Technical analysis of both market averages and individual stocks must
include volume studies in order to give the technician a true
picture of the internal dynamics of a given market. Volume analysis
helps in identifying internal strengths and weaknesses that exist
under the cover of price action. Very often, volume divergences versus
price movement are the only clues to an important reversal that is
about to take place. While volume has always been mentioned by
technicians as important, little effective volume work was done
until Joe Granville and Larry Williams began to look at volume
versus price in the late 1960s in a more creative way.
For many years it had been accepted that volume and price normally
rose and fell together, but when this relationship changed, the
price action should be examined for a possible change of trend.
The Granville OBV concept which views the total volume on an up
day as accumulation and the total volume on a down day as distribution
is a decent one, but much too simplistic to be of value. The
reason is that there are too many important tops and bottoms,
both short-term and intermediate-term, where OBV confirms the
price extreme. However, when an OBV line gives a divergence signal
versus a price extreme, it can be a valuable technical signal and
usually triggers a reversal in price.
Larry Williams took the OBV concept and improved on it. In order to
determine whether there was accumulation or distribution in the
market or an individual stock on a given day, Granville compared
the closing price to the previous close, whereas Williams compared
the closing price to the opening price. He [Williams] created a
cumulative line by adding a percentage of total volume to the line
if the close was higher than the opening and, subtracting a
percentage of the total volume if the close was lower than its
opening price. The accumulation/distribution line improved results
dramatically over the classic OBV approach to volume divergences.
Williams then took this one step further in analyzing the Dow Jones
Industrials by creating an oscillator of the accumulation/distribution
line for even better buy and sell signals. In the early 1970s,
however, the opening price for stocks was eliminated from the daily
newspaper and Williams' formula became difficult to compute without
many daily calls to a stockbroker with a quote machine. Because of
this void, I created the Chaikin Oscillator substituting the average
price of the day for Williams' opening and took the approach one
step further by applying the oscillator to stocks and commodities.
The Chaikin Oscillator is an excellent tool for generating buy and
sell signals when its action is compared to price movement. I
believe it is a significant improvement over the work that preceded
it.
The premise behind my oscillator is three-fold. The first premise
is that if a stock or market average closes above its midpoint for
the day (as defined by [high + low] / 2), then there was accumulation
on that day. The closer a stock or average closes to its high, the
more accumulation there was. Conversely, if a stock closes below
its midpoint for the day, there was distribution on that day.
The closer a stock closes to its low, the more distribution there
was.
The second premise is that a healthy advance is accompanied by
rising volume and a strong volume accumulation. Since volume is
the fuel that powers rallies, it follows that lagging volume on
rallies is a sign of less fuel available to move stocks higher.
Conversely, declines are usually accompanied by low volume, but
end with panic-like liquidation on the part of institutional
investors. Thus, we look for a pickup in volume and then lower-lows
on reduced volume with some accumulation before a valid bottom can
develop.
The third premise is that by using the Chaikin Oscillator, you can
monitor the flow of volume into and out of the market. Comparing
this flow to price action can help identify tops and bottoms,
both short-term and intermediate-term.
Since no technical approach works all the time, I suggest using
the oscillator along with other technical indicators to avoid
problems. I favor using a price envelope around a 21-day moving
average and an overbought/oversold oscillator together with the
Chaikin Oscillator for the best short and intermediate-term technical
signals.
The most important signal generated by the Chaikin Oscillator
occurs when prices reach a new high or new low for a swing,
particularly at an overbought or oversold level, and the oscillator
fails to exceed its previous extreme reading and then reverses
direction.
1. Signals in the direction of the intermediate-term trend are
more reliable than those against the trend.
2. A confirmed high or low does not imply any further price
action in that direction. I view that as a non-event.
A second way to use the Chaikin Oscillator is to view a change of
direction in the oscillator as a buy or sell signal, but only in
the direction of the trend. For example, if we say that a stock
that is above its 90-day moving average of price is in an uptrend,
then an upturn of the oscillator while in negative territory would
constitute a buy signal only if the stock were above its 90-day
moving average--not below it.
A downturn of the oscillator while in positive territory (above zero)
would be a sell signal if the stock were below its 90-day moving
average of closing prices.
Formula:
The Chaikin Oscillator is created by subtracting a 10-period
exponential moving average of the Accumulation/Distribution
Line from a 3-period exponential moving average of the
Accumulation/Distribution Line.
|
| Command: |
Chandelier Exit |
| Type: | Indicator |
| Parameters: | [Period, Period] |
| Usage: |
• chandelier exit(PERIOD1, PERIOD2) |
| Components: | price |
| Developed by: | Chuck LeBeau - |
Example: |
| • show stocks where close is between 10 and 50 and draw Chandelier Exit(22,2.5) |
| • show stocks where close crossed below Chandelier Exit(22,2.5) |
Description: |
The Chandelier Exit is a volatility
measure using the ATR to help set stop limits. The exit is
computed by finding the highest value over the period and then
subtracting a multiple of the ATR for that period. On
StockFetcher, the position parameter is the ATR multiplier
used to find the actual stop position.
• Amazon: Technical Traders Guide to Computer Analysis of the Futures Markets By Charles Lebeau
|
Example: |
| • Show stocks where the CMO(20) is above 50 |
| • Show stocks where the CMO(20,9) is below -50and CMO(20,9) crossed below Average CMO(20,9) |
Description: |
The Chande Momentum Oscillator (CMO) was developed by Tushar Chande.
A scientist, an inventor, and a respected trading system developer,
Mr. Chande developed the CMO to capture what he calls pure momentum".
For more definitive information on the CMO and other indicators we
highly recommend the book The New Technical Trader by Tushar Chande
and Stanley Kroll.
The CMO is closely related to, yet unique from, other momentum
oriented indicators such as Relative Strength Index, Stochastic,
Rate-of-Change, etc. It is most closely related to Welles Wilders
RSI, yet it differs in several ways:
• It uses data for both up days and down days in the numerator,
thereby directly measuring momentum.
• The calculations are applied on unsmoothed data. Therefore,
short-term extreme movements in price are not hidden. Once
calculated, smoothing can be applied to the CMO, if desired.
• The scale is bounded between +100 and -100, thereby allowing
you to clearly see changes in net momentum using the 0 level.
The bounded scale also allows you to conveniently compare
values across different securities.
Interpretation
The CMO can be used to measure several conditions.
Overbought/oversold: The primary method of interpreting the CMO
is looking for extreme overbought and oversold conditions. As a
general rule, Mr. Chande quantifies an overbought level at +50 and
the oversold level at -50. At +50, up-day momentum is three times
the down-day momentum. Likewise, at -50, down-day momentum is three
times the up-day momentum. These levels correspond to the 70/30
levels on the RSI indicator.
You could also establish overbought/oversold entry and exit rules
by plotting a moving average trigger line on the CMO. For example,
if you are using the default 20-period CMO, a 9-period moving
average may serve as a good trigger line. Buy when the CMO crosses
above the 9-period trigger line; sell when it crosses below.
Trendiness: The CMO (much like the VHF indicator), can also be
used to measure the degree to which a security is trending. The
higher the CMO, the stronger the trend. Low values of the CMO
show a security in a sideways trading range.
You may find the CMO helpful in establishing the entry and exit
rules of a trend following system. Enter when the CMO is high and
exit when it moves lower.
Divergence. Although not specifically mentioned in Mr. Chandes
book, you could also look for divergence between the CMO and the
price, as is often done with other momentum indicators. See the
discussion about divergence in the Interpretation section of RSI.
Other: Although not specifically mentioned in Mr. Chandes book,
you may also look for chart formations (head and shoulders, rising
wedges, etc.), failure swings, and support/resistance. See the
discussion on these methods in the Interpretation section of RSI.
![]() • Amazon: The New Technical Trader By Tushar S. Chande
|
| Command: |
channel |
| Type: | Indicator |
| Parameters: | [None] |
| Usage: |
• [NUMBER] {day, week, month} channel • {increasing, decreasing} [NUMBER] {day, week, month} channel |
| Components: | price pattern |
Description: |
A very specific phrase, the channel phrase allows a user to
search for stocks that are trading within some computed
boundaries.
Outside of just identifying stocks which are
trading within a channel, this phrase can allow a user to look
for stocks specifically trading near the top or bottom of the
channel.
Finally, the channel does not have to be flat, but
could actually have a positive or negative slope by using the
increasing or decreasing keywords.
Channel Analysis, beginning on page 18 of the
July 1998 Technical Analysis of Stocks and Commodities Magazine
|
| Command: |
chart color scheme |
| Type: | Result Modifier |
| Parameters: | NONE |
| Usage: |
• See Link • chart-type is line • chart-type is OHLC |
| Components: | results |
Example: |
| • price between 5 and 10 and chart-type is candlestick |
| • price ma(10) crossed above ma(50) and chart-type is line |
Description: |
chart color customization page. While this is by no means
polished, we thought it would provide immediate benefit for
a number of StockFetcher members.
• Chart Color
|
| Command: |
Chart-Display |
| Type: | Modifier |
| Parameters: | [] |
| Usage: |
• chart-display weekly |
| Components: | results |
Example: |
| • MA(10) crossed abocve the MA(50) and chart-display is weekly |
Description: |
chart-display is a very specific phrase that tells a chart to be
to weekly mode. Like the other chart options, this does not affect
screening results; instead it provides another way to draw the chart.
By telling StockFetcher to place the chart in weekly mode, all of
the plots, invluding price are converted to the appropriate weekly
values. Any measuers or indicators that were a part of th screen are
also converted to their weekly conterpart. As an example below is a
screen that look for a 10 and 50 day moving average cross over.
Adding the phrase chart-display is weekly to this screen doesn't
affect the individual matches; however, it does convert our
averages from 10 and 50 day to 10 and 50 week averages.
While providing the ability to analyze charts, this addition can be
confiusion when cerifying that a particular condition occurred.
Therefore, it is important to be careful using weekly charts.
|
| Command: |
Chart-Scale |
| Type: | Modifier |
| Parameters: | [] |
| Usage: |
• chart-scale is {logarithmic, linear} |
| Components: | results |
Example: |
| • Close is above the MA(20) and MA(20) is above the MA(50) and MA(50) is above the MA(200) and Chart-time is 1 year and Chart-scale is logarithmic |
Description: |
As with other available charting tools, changing the scale from linear to logarithmic is an
important feature on StockFetcher. Analyzing price information on a logarithmic scale can
smooth some of the edges found when viewing long-term plots spanning a large price range. On
StockFetcher, changing the scale of the chart can either be accomplished from the Chart Settings
section, or through the phrase chart-scale is. The two scale options available are linear
and logarithmic. Below is an example illustrating this phrase.
By default StockFetcher displays charts using the linear scaling.
Chart-scale is only applied to the primary (price) plot. Other
plots, such as volume, MACD, RSI, etc, are always linear.
|
| Command: |
Chart-Size |
| Type: | Modifier |
| Parameters: | [] |
| Usage: |
• chart-size is {small, medium, large, giant, huge} |
| Components: | results |
Example: |
| • Show stocks where the close is below the lower Bollinger Band(20) And chart-size is huge |
| • Show stocks where the MA(10) crossed above the MA(150) And chart-size is 250 |
Description: |
Chart-size tells StockFetcher how wide the resulting charts should
be. This is entirely a user preference when it comes to analyzing
charts, as well as managing bandwidth. Available widths include:
Possible Values:
• Small
• Medium
• Large
• Giant
• Huge
• 100 to 1024
In addition, specific pixel values of 100 to 1024 may be specified
for the chart-width.
|
| Command: |
Chart-Time |
| Type: | Modifier |
| Parameters: | [] |
| Usage: |
• chart-time is [NUMBER] {days, weeks, months} |
| Components: | results |
Example: |
| • MA(10) 5 days ago crossed above the MA(50) 5 days ago and MA(10) 1 day ago has been above and the MA(50) 1 day ago for 3 days and MA(10) is below the MA(50) and Chart-time is 2 weeks |
Description: |
As with any stock chart package, changing the amount of time covered
by a chart on StockFetcher is critical. By default, StockFetcher
provides 3-month, 6-month, and 1 year plot periods. Using the
chart-time key phrase it is possible to customize the default time
period for the charts. The chart-time may be configured from 2 years
down to single day plots.
While a single day plot typically doesn't provide much perspective,
short-term charts can provide important details when researching
recent price or measure activity. For example, the detailed screen
below watches for two crossovers in a short period of time. Reducing
the amount of time for the plot allows for greater inspection of
the activity.
MA(10) 5 days ago crossed above the MA(50) 5 days ago
and MA(10) 1 day ago has been above
and the MA(50) 1 day ago for 3 days
and MA(10) is below the MA(50) and Chart-time is 2 weeks
The moving average analysis above describes a specific double
crossover, but further information about the strength of the first
crossover is easily seen in the resulting charts.
|
| Command: |
chart-type |
| Type: | Result Modifier |
| Parameters: | NONE |
| Usage: |
• chart-type is candlestick • chart-type is line • chart-type is OHLC |
| Components: | results |
Example: |
| • price between 5 and 10 and chart-type is candlestick |
| • price ma(10) crossed above ma(50) and chart-type is line |
Description: |
Chart-type can be used to force the charts to draw the price
values in a specific way, overriding StockFetcher's default
rules.
|
| Command: |
Chart-type |
| Type: | Modifier |
| Parameters: | [] |
| Usage: |
• chart-type {candlestick, line, OHLC} |
| Components: | results |
Description: |
The chart-type option directs StockFetcher to change the default
plotting style for stock prices. The available chart-types are
line, OHLC and candlestick. The line option simply displays the
price using a single value, the close. The OHLC option plots all
4 fundamental values.
The lowest value on the bar represents the low, the tick facing
left is the open, the tick facing right is the close, and the
tallest point is the high. The following is an examples of an
OHLC chart.
Finally the candlestick plot type is a popular short-term
plotting style. Again including all 4 price values, the
candlestick has 4 main characteristics.
• the tail, which ends at the lowest value of the day
• the body, represents the range covered by the
high and low
• the head, ends at the high of the day
• the body color, a shaded body indicates a close
below the low while a clear or white body
indicates an increase in the price from open to close.
Depending on the timeframe used for charts, the chart-type can
either simplify the chart viewing, or provide additional
information for making decisions about the price pattern of a
stock.
Below are a couple examples demonstrating how to change the
default chart-type:
Close is below the lower Bollinger band
and Chart-time is 1 year and Chart-type is line
High is above high 1 day ago
and Low is below low 1 day ago
Depending on the timeframe used for charts, the chart-type can
either simplify the chart viewing, or provide additional
information for making decisions about the price pattern of a
stock.
Below are a couple examples demonstrating how to change the
default chart-type:
Close is below the lower Bollinger band
and Chart-time is 1 year and Chart-type is line
High is above high 1 day ago
and Low is below low 1 day ago
and Chart-time is 2 months
and Chart-type is candlestick
The above provide excellent examples of where the actual price
charting style can greatly enhance the interpretation of a chart
|
| Command: |
Close-to-open Gap |
| Type: | Indicator |
| Parameters: | NONE |
| Usage: |
• Close-to-open Gap |
| Components: | price close open |
Example: |
| • Close-to-open gap is above 0 |
Description: |
The Close-to-open gap is a simple measure of a stock's opening
price relative the previous close. The resulting values from
this measure are the difference between the open and close
represented as a percent of the closing price.
|
| Command: |
Add Column |
| Type: | Result Modifier |
| Parameters: | NONE |
| Usage: |
• add column [indicator] |
| Components: | results |
Example: |
| • show stocks between 10 and 40 and add column RSI(14) |
| • show stocks between 10 and 40 and add column industry |
| • show stocks between 10 and 40 and add column MA(10) and add column MA(150) |
Description: |
By default, StockFetcher returns basic price and volume information
for each of the stocks returned in a screen.
This information includes:
• most recent closing price.
• percent change from previous close.
• the number of shares traded during the most
recent day.
The results columns can easily be augmented using the add column
phrase. With add column nearly any measure or indicator may be added
to the filter results. As an example, the ten day average volume is
added as a column to a basic stock screen:
Price is between 10 and 50
and Add column average volume(10)
Now the results present the ten day average volume along with the
standard information.
In addition to providing new information with the filter results,
each new measure can be sorted in either ascending or descending
order by clicking on the appropriate column header. Sorting these
additional columns is useful with measures whose high or low values
can provide additional approach confirmation. For example, take an
approach where the close-to-open gap in price is displayed.
Show stocks where the price is between 10 and 15
and Add column close to open gap
Clicking on the column heading for the "close to open gap"
immediately presents the results where the most recent open price
gapped significantly from the closing price the day before.
Column Aliases
Enclosing text inside the {} symbols provides an optional extension
to the "add column" phrase. These braces are used to rename
resulting column headers to something more concise or meaningful.
Taking the average volume example above, suppose the column is
renamed to "av10" to clean up the results.
Price is between 10 and 50
and Add column average volume(10) {av10}
The contents inside the {...} will be used as the new column header.
This extension definitely proves useful when many measures are added
to the results, or when the actual measures added to the results
are complex and produce difficult to read headers. In the example
below, a 52-week high of the MA(50) is added to the results.
Price is between 10 and 50
and Add column average volume(10) {av10}
and Add column MA(50) 52 week high {ma50hi}
|
| Command: |
Commodity Channel Index (CCI) |
| Type: | Indicator |
| Parameters: | Period |
| Usage: |
• CCI(PERIOD) |
| Components: | volatility indicator price high low close |
| Developed by: | Donald Lambert - 1980 |
Example: |
| • CCI(14) is below -100 |
| • CCI(14) is above 100 and CCI(14) has been decreasing for 2 days |
Description: |
• Learn More
The Commodity Channel Index ("CCI") measures the variation of a
security's price from its statistical mean. High values show that
prices are unusually high compared to average prices whereas low
values indicate that prices are unusually low. Contrary to its name,
the CCI can be used effectively on any type of security, not
just commodities.
Interpretation
There are two basic methods of interpreting the CCI: looking for
divergences and as an overbought/oversold indicator.
• A divergence occurs when the security's prices are making
new highs while the CCI is failing to surpass its previous highs.
This classic divergence is usually followed by a correction in
the security's price.
• The CCI typically oscillates between 100. To use the CCI
as an overbought/oversold indicator, readings above +100 imply
an overbought condition (and a pending price correction) while
readings below -100 imply an oversold condition (and a pending
rally).
Further details on the contents and interpretation of the CCI can
be found in an article by Donald Lambert that appeared in the
October 1980 issue of Commodities (now known as Futures) Magazine.
Formula:
A complete explanation of the CCI calculation is beyond the scope
of this document. The following are basic steps involved in the calculation:
1. Add each period's high, low, and close and divide this sum by 3.
This is the typical price.
2. Calculate an n-period simple moving average of the typical prices
computed in Step 1.
3. For each of the prior n-periods, subtract today's Step 2 value
from Step 1's value n days ago. For example, if you were
calculating a 5-day CCI, you would perform five subtractions
using today's Step 2 value.
4. Calculate an n-period simple moving average of the absolute values
of each of the results in Step 3.
5. Multiply the value in Step 4 by 0.015.
6. Subtract the value from Step 2 from the value in Step 1.
7. Divide the value in Step 6 by the value in Step 5.
![]() |
| Command: |
Comparative Relative Strength |
| Type: | Indicator |
| Parameters: | [Symbol, Period] |
| Usage: |
• comparative relative strength(SYMBOL, PERIOD) • relative strength(SYMBOL, PERIOD) |
| Components: | price close |
Description: |
The comparative relative strength performs a simple calculation
of how a stock performed, over the specified period of time,
with a given input stock. This measure is often used to find
stocks that are underperforming or outperforming a given index,
but can also be used to compare against individual stocks. It
should be noted that this measure is not a pattern matching
routine. That is, it simply looks to see the price change from
beginning to end, not what happened in the middle. All values
above 1.0 indicate that a stock has outperformed the input
stock, where any value below 1.0 indicates
underperformance.
|
| Command: |
Comparison Chart |
| Type: | Modifier |
| Parameters: | [] |
| Usage: |
• comparison chart(SYMBOL) |
| Components: | results |
Example: |
| • Show stocks where the MA(10) crossed above the MA(50) and draw comparison chart(^IXIC) |
Description: |
When evaluating screen results, it can be helpful to compare the
results with a known "good" stock. The comparison chart feature
allows you to view the price change comparison between any
of your filter matches and a given stock.
As an example, suppose you are interested in stocks that
recently had a moving average crossover, but you would also
like to visually compare any matches with the Nasdaq Composite.
Show stocks where the MA(10) crossed above the MA(50)
and draw comparison chart(^IXIC)
|
| Command: |
count |
| Type: | Math |
| Parameters: | [screening phrase, period] |
| Usage: |
• count(PHRASE , PERIOD) |
| Components: | core |
Example: |
| • Show stocks where the count(high reached a new 1 year high, 30) is above 10 |
| • show stocks where the count(CCI(14) below -100,90) equals 20 |
Description: |
count As a basic example, suppose you are interested in stocks
that have set multiple 1 year highs over the last 30 days:
Current Limitations:
• You can only include a single screen within the
count(...) text. That is, you can't include filters
which have been joined with "and" inside of the
count(...) text.
• There is a limit of 100 days for accumulating the
counts. This restriction is based on performance and
hopefully we will be able to increase that value.
|
Example: |
| • show stocks where the CWMA(CCI(10),7) reached a new 6 month low |
| • Show stocks where the RSI(14) crossed above CEMA(RSI(14),5) and RSI(14) is below 40 |
Description: |
• Learn More
Custom exponential moving averages CEMA In addition to creating
custom simple moving averages, you can now create your own
custom exponential moving averages (CEMA) and custom weighted
moving averages (CWMA). The usage is the same as the custom
moving average (CMA).
EMA Formula:
![]() WMA Formula:
![]() |
| Command: |
custom moving averages (CMA) |
| Type: | Indicator |
| Parameters: | [indicator, days, *main plot {0-no; 1-yes}] |
| Usage: |
• CMA(INDICATOR, PERIOD) • CMA(INDICATOR, PERIOD, MAIN PLOT STATE) |
| Components: | core |
Example: |
| • show stocks where the close is above CMA(high,20) |
| • show stocks where the CCI(14) crossed above CMA(CCI(14),21) |
Description: |
• Learn More
You can create your own custom moving averages for any measure
on StockFetcher. The moving average is based on the simple
moving average forumula. At this time we do not support custom
exponential moving averages.
Formula:
![]() |
| Command: |
Darvas Box |
| Type: | Pattern |
| Parameters: | NONE |
| Usage: |
• pattern is darvas box • pattern is db |
| Components: | pattern price high |
| Developed by: | Nicolas Darvas - |
Description: |
• Learn More
Description
The Darvas trading technique is designed as a method of capturing the
strength of the trend. The buy signals are generated on new bullish
strength and managed by using the five day volatility range to set a
stop loss.
The Darvas approach is built around long term trend trading. It is a
bullish approach that is most suited to trending stocks, and also to
trending markets. Darvas was able to follow and trade stocks without
the need for intra day prices, or to be constantly in front of a screen,
or even to have access to daily prices. This makes the approach
particularly useful for readers who have full time jobs. Darvas
applies a filter - a Darvas box (DB) - to price movements to help
determine which price moves are significant, and which are not. The
filter is established by upper and lower limits of a Darvas box.
The top of the Darvas box always starts with a new high. This high
must be followed by 3 days that are lower. The bottom of the Darvas
box can only be calculated after the top of the Darvas box has been
confirmed. It is constructed in the opposite way to the top of the
box. It uses as its starting point the lowest low that occurs AFTER
the top of the Darvas box is established. It is again a 4 day pattern,
but it starts 1 day after the top of the box pattern. This means it
takes a minimum of 5 days for a Darvas box to be identified for both
top and bottom.
From:
• Amazon: Nicolas Darvas book, How I Made $2,000,000 in the Stock Market
|
| Command: |
Date Offset |
| Type: | Temporal |
| Parameters: | [] |
| Usage: |
• date offset is [NUMBER] |
| Components: | core |
Example: |
| • RSI(14) crossed above 30 and date offset is 10 |
| • date offset is 12/20/2006 close above 20 volume above 10000000 market is nasdaq |
Description: |
At a first glance the term date offset would be covered by the
days ago phrasing. But, there is an important difference between
the two constructs. days ago is important when creating a
specific trading approach; it permits access to historical
prices or measures for generating screens. "Date offset" is very
different from this. In essence date offset is used to back test
an entire screening approach. By specifying a date offset in the
filter text indicates to StockFetcher that the entire screening
approach needs to be run from a particular date in the past.
The date offset provides an essential tool not only for judging
the performance of a particular approach from different dates
in the past, but it also helps to verify the quantity and
quality of matches produced by an approach. Some approaches may
produce more or less matches based on the market conditions at
that time. Using the date offset helps to establish whether or
not an approach is easily swayed by a changing environment.
Using the date offset phrasing is very simple. All that is
required is the text date offset along with a number of days.
Below is an approach that returns matches ten days prior to the
current date:
RSI(14) crossed above 30 and date offset is 10
Date offsets of as little as a single day and up to 1 year are
valid on StockFetcher.
Mentioned above, the date offset is not related to the days ago
phrasing. An approach using days ago uses a look-back for the
specific measure(s) involved. Including a date offset increases
the number of days used in the days ago phrase.
Once the offset has been applied to a screen, StockFetcher
provides additional results that help to analyze the performance
of a screen. From the results page, it is possible to see the
price change from the offset specified to the current date.
Additionally, accessing the performance pop-up provides
breakdowns of different time periods as well as more information
about advancing and declining matches. For U.S. stocks, the
performance window also returns the performance of the major
indices to help judge the matches' performance.
|
| Command: |
Day Change / Absolute Day Change |
| Type: | Indicator |
| Parameters: | NONE |
| Usage: |
• day change • absolute day change |
| Components: | price open close |
Example: |
| • Day Change is above 10 percent |
| • Absolute Day Change is above 10 percent |
| • Day Change 10 week high is above 20 percent |
| • Absolute Day Change 5 day low is above 5 percent |
Description: |
This is a simple measure of the difference (in percent) of the
most recent closing prices of a stock. The absolute day change
disregards the sign of the change, so the results indicate the
magnitude of the change.
|
| Command: |
Day Position |
| Type: | Indicator |
| Parameters: | [Position {0...1}, *Period] |
| Usage: |
• Day Position(POSITION) • Day Position(POSITION, PERIOD) • Day Pos(POSITION, PERIOD) |
| Components: | price low high |
Example: |
| • close is above Day Position(0.50,1) |
| • Open is below the Day Position(0.25,5) |
Description: |
The Day Position is a basic measure that computes a value which
is a percentage of the day range. In otherwords, if the
position parameter is 0.5, the Day Position will be
Low + ((High - Low) * 0.5). Any value from 0 to 1 may be used
to locate a position within the daily range.
In addition to computing this value over a single day, a period
may be specified. The measure will then find the highest high
and lowest low over the given number of days and then perform
the same computation as above.
Note: By default the day position
Example 1. Finds stocks where the close was in the top half of
the trading range for the day:
Example 2. Finds stocks where the open was in the lower quarter
of the trading range for the last 1 week
|
| Command: |
Day Range / Average Day Range / Day Point Range |
| Type: | |
| Parameters: | [*Period] |
| Usage: |
• day range • average day range(PERIOD) • day point range |
| Components: | price low high close |
Example: |
| • show stocks where the day range is above 10% |
| • show stocks where the average day range(10) has been increasing for 2 days |
| • show stocks where the day point range is above 1.00 |
Description: |
The day range returns the difference between the high and low
prices of the day, represented as a percent of the closing
value. For example, suppose a stock closed at 10, the high was
11 and the low was 9. The difference between the high and low
is 2. Represented as a percent, the day range is: 20%.
The average day range computes a simple average of the day range
over a given number of days. This value is also represented as
a percent of the closing price.
Finally, the day point range is the actual price difference
between the high and low of the day. The day point range is
not converted to a percent.
|
| Command: |
Days (Weeks/Months) Ago |
| Type: | Temporal |
| Parameters: | [none] |
| Usage: |
• {days, weeks, months} ago |
| Components: | core |
Description: |
Nearly all screening approaches require the ability to specify a
value or values from the past. This could include a single
price, a volume change, the position of an oscillator, or the
entire range of an indicator from some specified offset.
Through the construction of phrases using days/weeks/months
ago, StockFetcher permits access to nearly any value in the
past.
While this feature is not limited to price values from
only one or two days ago, it is just that ability that allows
for creating classic and custom candlestick patterns. The first
example shows an outside reversal, using the offset phrasing.
High is above high 1 day ago and Low is below low 1 day ago and
Close is above Open and Close 1 day ago is below Open 1 day ago
The example demonstrates a very straightforward and logical
way to refer to specific values from just 1 day ago. Notice
that any time an offset is required it must immediately follow
the measure it refers to. The offset is not carried through to
any specific value. While this property may result in longer
phrases, it allows complete control of a screening approach.
For another example using the offset, suppose a trading
approach requires that the MACD histogram had been increasing
for 5 successive days up until the last couple of days.
MACD Histogram(12,26,9) 2 days ago had been increasing for 5 days
and MACD Histogram(12,26,9) has been decreasing for 2 days
By simply changing the offset of the MACD Histogram reference, in
conjunction with the increasing and decreasing keywords, the
approach above discovers a local maximum. No pattern is safe
from being detected using the "days ago" phrasing on
StockFetcher!
The offset phrasing also helps in avoiding a
critical flaw that affects many approaches where a measure
crosses a simple moving average. In this case, an example
screen detecting a spike in daily shares traded is used.
Suppose the approach looks for a 50% increase in the shares
traded versus the 10-day average of shares.
Volume is more than 50% above the average volume(10)
The approach above works and will return valid match, but the
approach is flawed and does not return all of the symbols possible.
The mistake is that the 10-day average volume includes the unusual volume
spike. With StockFetcher, it is very easy to solve this
problem:
Volume is more than 50% above the average volume(10) 1
day ago
Advanced Examples The true power of the "... days ago"
key phrase can be seen when it comes to defining specific
patterns with a particular measure or a stocks price. For
example, take the case where the price of a stock dips below
the lower Bollinger Band, remains in that position for a couple
of days and has just started to leave the band. This entire
pattern may be described using combinations of the offset pattern.
High 5 days ago crossed below the lower Bollinger(20)
and High1 day ago had been below the lower Bollinger(20)
for 4 days
and Low is above the lower Bollinger(20)
The screen above defines an exact pattern than can easily be
verified from the charts.
|
| Command: |
days since |
| Type: | Math |
| Parameters: | [scan, days to look back] |
| Usage: |
• days(PHRASE, PERIOD) |
| Components: | core |
Description: |
a new filter construct that allows you to filter based on the number
of days since a particular event occurs. The "days" feature allows
you to specify the event and a period of time; it returns the number
of days since the event most recently occurred.
For example, suppose you want to find stocks where the most recent
Bollinger breach was 10 days ago:
show stocks where days(high above upper Bollinger(20),15)
equals 10
Another example that controls the timing of two moving average
crossovers:
show stocks where the days(MA(10) crossed below MA(50),30) is
above 20 and days(MA(10) crossed above MA(50),20) is above 0
Finally, an example where the 14-day RSI crossed from below 30 to
above 70 within the last 2 weeks:
show stocks where days(RSI(14) crossed above 30,10) is above
days(RSI(14) crossed above 70,10)
and days(RSI(14) crossed above 70,10) is above -1
Note: the "above -1" portion of the filter adds the requirement that
the crossover above 70 must have occurred.
|
| Command: |
demarker |
| Type: | Indicator |
| Parameters: | period |
| Usage: |
• demarker(14) |
| Components: | low high |
| Developed by: | Thomas R. Demark - |
Example: |
| • DeMarker(14) crossed above 0.30 |
Description: |
Developed by Thomas R. Demark, this indicator attempts to detect
price tops and bottoms through adjacent highs and lows.
First, an average of differences is computed from the current intraday
high and previous intraday high. If the current high is above the
previous, the difference is used, otherwise nothing is added. Next,
the same process is used for current intraday lows which are less than
the previous intraday low. Finally, a ratio is computed by taking the
average of highs over the sum of the average high and low differences.
The DeMarker values range between 0 and 1.0 with 0.30 and 0.70 considered
to be important thresholds.
Demarker Technical Indicator is based on the comparison of the period
maximum with the previous period maximum. If the current period (bar)
maximum is higher, the respective difference between the two will be
registered. If the current maximum is lower or equaling the maximum of
the previous period, the naught value will be registered. The differences
received for N periods are then summarized. The received value is used as
the numerator of the DeMarker and will be divided by the same value plus
the sum of differences between the price minima of the previous and the
current periods (bars). If the current price minimum is greater than that
of the previous bar, the naught value will be registered.
When the indicator falls below 30, the bullish price reversal should be
expected. When the indicator rises above 70, the bearish price reversal
should be expected.
If you use periods of longer duration, when calculating the indicator,
you'll be able to catch the long term market tendency. Indicators based on
short periods let you enter the market at the point of the least risk and plan
the time of transaction so that it falls in with the major trend.
Calculation:
Parameters:
1. N - time period.
Calculation:
The value of the demarker for the j-th interval is calculated as follows:
1. The DeMaxj is calculated.
If highj > highj-1 , then DeMaxj = highj - highj-1 , otherwise DeMaxj = 0
2. The DeMinj is calculated.
If lowj < lowj-1 , then DeMinj = lowj-1 - lowj , otherwise DeMinj = 0
3. The value of the demarker is calculated as:
![]() • Amazon: Thomas Demark book The New Science of Technical Analysis
|
| Command: |
Detrended Price Oscillator (DPO) |
| Type: | Indicator |
| Parameters: | [PERIOD] |
| Usage: |
• detrended price oscillator(PERIOD) • DPO(PERIOD) |
| Components: | momentum indicator oscillator price close |
Example: |
| • show stocks where the DPO(20) crossed below 0 within the last 1 day |
| • show stocks where the DPO(50) has been increasing for 5 days |
Description: |
The Detrended Price Oscillator (DPO) computes the difference
between the current closing value of a stock and a specified
moving average. The basic idea behind the DPO is to detect
cycles in stocks as opposed to trends.
Formula:
To calculate the Detrended Price Oscillator, first create an
n-period simple moving average (where "n" is the number of
periods in the moving average).
![]() Now, subtract the moving average "(n / 2) + 1" days ago, from
the closing price. The result is the DPO.
![]() |
Description: |
• Learn More
The DI was developed by J. Welles Wilder and is described in his
1978 book New Concepts In Technical Trading Systems.
The Directional Movement System helps determine if a security is
"trending." It was developed by Welles Wilder and is explained in
his book, New Concepts in Technical Trading Systems.
Interpretation
The basic Directional Movement trading system involves comparing
the 14-day +DI ("Directional Indicator") and the 14-day -DI. This
can be done by plotting the two indicators on top of each other
or by subtracting the +DI from the -DI. Wilder suggests buying
when the +DI rises above the -DI and selling when the +DI falls
below the -DI.
Wilder qualifies these simple trading rules with the "extreme
point rule." This rule is designed to prevent whipsaws and reduce
the number of trades. The extreme point rule requires that on
the day that the +DI and -DI cross, you note the "extreme point."
When the +DI rises above the -DI, the extreme price is the high
price on the day the lines cross. When the +DI falls below the -DI,
the extreme price is the low price on the day the lines cross.
The extreme point is then used as a trigger point at which you
should implement the trade. For example, after receiving a buy
signal (the +DI rose above the -DI), you should then wait until
the security's price rises above the extreme point (the high price
on the day that the +DI and -DI lines crossed) before buying. If
the price fails to rise above the extreme point, you should continue
to hold your short position.
In Wilder's book, he notes that this system works best on securities
that have a high Commodity Selection Index. He says, "as a rule of
thumb, the system will be profitable on commodities that have a
CSI value above 25. When the CSI drops below 20, then do not use
a trend-following system."
Formula:
![]() • Amazon: New Concepts in Technical Trading System by J. Welles Wilder
|
| Command: |
dividend anual/yield/days since |
| Type: | Fundamental |
| Parameters: | [none] |
| Usage: |
• annual dividend • dividend yield • days since last dividend |
| Components: | fundamental |
Description: |
There are 3 dividend related measures. These include:
• annual dividend per share
• dividend yield
• days since last dividend
|
Example: |
| • Show stocks where the close crossed above the middle Donchian Band(20,0) |
| • Show stocks where the low is above the upper Donchian Band(15,10) |
Description: |
Donchian Channels, created by Richard Donchian [Donchian ???],
are envelopes around the price based on the highest and lowest
prices during the given number of days. The center band is
computed by taking the average of the upper and lower band.
These bands can be used to find potential areas of support and
resistance based on recent price activity. StockFetcher allows
a second parameter to the Donchian Channels that indicates a
lag or offset used in the computation. This lag is used to
offset the period of time for finding the highest and lowest
values. For example if "5" is used as the lag parameter and
"20" is used as the period, then the highest and lowest values
are discovered from the 20 days of history which started 5
days in the past. When lag is used, it is possible to have
recent price values which exceed the upper or lower band.
Without lag, the Donchian Channels will always contain all of
the prices within the specified period.
|
| Command: |
do not draw |
| Type: | Modifier |
| Parameters: | [none] |
| Usage: |
• do not draw [INDICATOR] |
| Components: | results |
Example: |
| • show stocks where RSI(14) reached a new 52 week low and do not draw RSI(14) 52 week low |
| • show stocks where the close reached a new 52 week high and do not draw close 52 week high |
Description: |
The syntax is the same as the "draw" command, with the exception
of the preceding "do not".
*Notes*
• In the case of indicators that produce multiple lines
(i.e. MACD, Stochastics, Bollinger Bands) you can not remove
specific lines. The "do not draw" will remove all of the lines
for those specific measures.
• At the current time it is not possible to remove the
volume plot.
|
Example: |
| • show stocks where pattern is double-bottom and price is above 3 |
| • show stocks where pattern is incomplete double-bottom(2) |
| • dt above 0 and add column dt |
| • dt2 above 0 and add column dt2 |
Description: |
pattern detector attempts to discover stocks that are nearing or
have recently completed a double-bottom. Below is an example
screen using this new pattern:
Please note the - (hyphen) in double-bottom, that is required to
produce the correct results.
As background, to meet the requirements of this pattern, the
following conditions must be met:
• Stock is in a recent downtrend
• Retracement of more than 10% of the low after the downtrend.
• Return to within 3% of the lower resistance
• Retest of the upper resistance
• Increase of volume on the retest of upper resistance.
Below is a chart demonstrating these qualifications:
![]() Please keep in mind this is a fairly specific implementation of
the double-bottom and may yield very few results each day.
Additionally, we will continue to analyze the results, so if
you have any ideas or suggestions for this pattern, please
don't hesitate to drop us a line!
By default the double-bottom algorithm will look for matches that
broke resistance within the last 6 trading days. To modify that,
you can add a parameter to the double bottom. For example:
1. pattern is double-bottom(25) and price is above 2
2. pattern is double-bottom(3) and price is above 2
The first example will look for double-bottoms that completed
within the last 25 trading days, and the second looks for very
recent ones.
To learn more about how this feature works, check out the post in
the announcements section of the forums:
Technical Nerd Note:
I am not sure why but when you try and add a comlumn that uses
"double-bottom" or "incomplete double-bottom(PERIOD)" it does
not work. But if you use "dt" or "dt2" then you get a strange
column heading (MISCPATS?MODE=4 & MISCPATS?MODE=3) and a
1.0 if pattern is correct or "-99999997952.00" if the pattern
is not a double top. That is probably a small glimpse inside how
SF works. MISCPATS might stand for "Misc Paterns" and mode may be
the index of the given pattern.
|
| Command: |
draw line |
| Type: | Result Modifier |
| Parameters: | NONE |
| Usage: |
• draw [CHART] line at [POSITION] |
| Components: | results |
Description: |
Draw lines based up measure or variable values.
you can draw lines based upon measure values.
Note: this is only a cosmetic feature, it does not effect filter
results.
Examples:
1. Draw lines based on price values.
show stocks where MA(10) crossed above MA(50)
and draw price line at high
and draw price line at low
2. Draw lines based on previous values of a measure.
show stocks where the RSI(14) is above 70
and draw RSI(14) line at RSI(14) 1 day ago
3. Create custom channels based on a measure.
set{myhigh,high 60 day high}
set{mylow, low 60 day low}
set{upper,myhigh * 0.99}
set{lower,mylow * 1.01}
show stocks where MA(10) crossed above MA(50)
and draw price line at upper
and draw price line at lower
4. And one last example:
show stocks where low crossed above upper Bollinger Band(20)
and draw price line at Upper Bollinger Band(20)
and draw price line at Lower Bollinger Band(20)
|
| Command: |
draw |
| Type: | Result Modifier |
| Parameters: | NONE |
| Usage: |
• draw • draw [MEASURE] on plot [MEASURE] |
| Components: | results |
Description: |
on plot - You can direct your draw commands to specific plots.
The usage for this new feature is:
draw [MEASURE] on plot [MEASURE]
you can not directly draw a basic price value (open, high, low,
close) on a different plot. You will want to assign these to
variables first.
StockFetcher automatically plots the appropriate measures
included in a screening approach. However, plotting additional
measures, not a part of the stock screen, can be extremely
helpful to the analysis process. Nearly any number of additional
measures may be plotted through the draw keyword. The strength
of adding charted measures is the ability to confirm a trading
approach, as well as further develop and refine an approach. As
an example, take a basic approach of selecting stocks breaking
through the lower Bollinger Band.
Close is below the lower Bollinger band(20)
The above is an easy test to find stocks trading below a
statistical lower bound. Browsing through the results reveals a
large number of choices, with very diverse characteristics.
After viewing a few charts, it becomes apparent that this
approach could be strengthened by finding stocks that were in a
long-term positive trend prior to the current down trend.
However, suppose the actual method of determining this longer
trend is not available. To help develop the trend detection, a
200-day moving average is added to the charts.
Close is below the lower Bollinger band(20)
And draw MA(200)
This new addition will not affect the total number of matches
from the first part of the filter.
After reviewing the charts with this new information, it is much
easier to locate, from chart analysis, stocks in a strong
uptrend. Simply including a plot of the MA(200) on the charts
provides a simple and quick chart-based screening mechanism.
The draw command may be used to add any number of measures and
indicators to plots and is not limited to any particular
measures. As noted above, the draw command will not affect the
filter output. Additionally, duplicate instances of the same
measure will not be a problem in cases where a screen includes
the same measure as a draw command. draw options may be accessed
by manually entering the text when creating a filter, or by
saving the options in the Chart Settings section.
|
Example: |
| • Show stocks where the EMV(14,9) reached a new 12 week low |
| • EMV(14,9) crossed above the Avg EMV(14,9)and the EMV(14,9) is above 0 |
Description: |
The Ease of Movement indicator shows the relationship between
volume and price change. As with Equivolume charting, this indicator
shows how much volume is required to move prices.
The Ease of Movement indicator was developed Richard W. Arms, Jr.,
the creator of Equivolume.
Interpretation
High Ease of Movement values occur when prices are moving upward
on light volume. Low Ease of Movement values occur when prices are
moving downward on light volume. If prices are not moving, or if
heavy volume is required to move prices, then the indicator will
also be near zero.
The Ease of Movement indicator produces a buy signal when it
crosses above zero, indicating that prices are moving upward more
easily; a sell signal is given when the indicator crosses below
zero, indicating that prices are moving downward more easily.
Formula:
To calculate the Ease of Movement indicator, first calculate the
Midpoint Move as shown below.
![]() Next, calculate the "High-Low" Box Ratio expressed in eighths with
the denominator dropped (e.g., 1-1/2 points = 12/8 or just 12).
![]() The Ease of Movement ("EMV") indicator is then calculated from
the Midpoint Move and Box Ratio.
The raw Ease of Movement value is usually smoothed with a moving
average.
|
Example: |
| • show stocks where close is above 1.00 |
| • show stocks where open is below 10.00 |
| • show stocks where price is near 11.00 |
Description: |
Used to describe equality relationship input measures, values
and time
"within" symantics:
The "within the last" is not supported with the "above" or
"below" phrases. Typically "within the last" is allowed when a
particular event occurs, such as a crossover.
For example:
MA(10) crossed above MA(50) within the last 5 days
To use "within" type syntax for your example, you will want to
use the "count()" feature. For example:
show stocks where count(opcl% is above 30%,5) is above 0
and price above 1
The following example is an error:
show stocks where the opcl% is above 30%
within the last 5 days
and price above 1
This is a work around to produce the results:
set{myOpclPrct, opcl%}
set{myConst, 30}
show stocks where myOpclPrct crossed above myConst
within the last 2 days
and price above 1
|
| Command: |
Ergodic Candlestick Oscillator |
| Type: | Indicator |
| Parameters: | [period1, period2] |
| Usage: |
• ECO(PERIOD1, PERIOD2) |
| Components: | oscillator price high low |
| Developed by: | William Blau - |
Example: |
| • show stocks where the ECO(5,5) reached a new 6 week low and ECO(5,5) is below 0 |
Description: |
Developed by William Blau, the Ergodic Candlestick Oscillator
examines the average ratio of the day change versus the day's
trading range. An n-day EMA of the close to open change is
divided by an n-day EMA of the difference between the high and
low. This ratio is then smoothed by a m-day EMA.
There are two parameters used with the ECO on StockFetcher. The
first indicates the period used for averaging the day change
and day range. The second period specifies the period for the
EMA used on the ratio of the day change and range.
The basic idea behind this measure is that in cases where the
stock is making positive net changes on large trading ranges,
the ECO values will be positive. In cases where the stock is
trading lower each day, the ECO will be negative.
• Amazon: Momentum, Direction, and Divergence By William Blau
|
| Command: |
ERSI |
| Type: | Indicator |
| Parameters: | [RSIPeriod, EMAPeriod] |
| Usage: |
• ERSI(PERIOD1, PERIOD2) |
| Components: | price close |
Example: |
| • Show stocks where the ERSI(15,7) is below 30 |
Description: |
The ERSI uses the values from an exponential moving average
(EMA) as input to the RSI computation. On StockFetcher, the
first parameter of the ERSI represents the period used for the
RSI computation and the second parameter is the period of the
EMA used as input. By using EMA values as input, the ERSI will
be less volatile than the standard RSI.
|
| Command: |
Exchange is |
| Type: | exchange |
| Parameters: | None |
| Usage: |
• exchange is [EXCHANGE] |
| Components: | sector fundamental |
Example: |
| • Price is between 5 and 7 and exchange equals 1 and add column exchange description and add column exchange and sort column 5 descending |
Description: |
Also See "Market is"
You can filter for Exchage by it's name or by it's number. See
"Market is" for more details.
|
| Command: |
Exchange Traded Funds (ETF) |
| Type: | market |
| Parameters: | NONE |
| Usage: |
• stock type is ETF |
| Components: | market fundamental |
| Developed by: | Toronto stock exchange - 1989 |
Example: |
| • Show stocks where stock type is ETF |
Description: |
• SEC: Learn More
• WikiPedia: Learn More
ETF is A fund that tracks an index, but can be traded like a stock.
ETFs always bundle together the securities that are in an index;
they never track actively managed mutual fund portfolios (because
most actively managed funds only disclose their holdings a few
times a year, so the ETF would not know when to adjust its holdings
most of the time). Investors can do just about anything with an
ETF that they can do with a normal stock, such as short selling.
Because ETFs are traded on stock exchanges, they can be bought and
sold at any time during the day (unlike most mutual funds). Their
price will fluctuate from moment to moment, just like any other
stock's price, and an investor will need a broker in order to
purchase them, which means that he/she will have to pay a commission.
On the plus side, ETFs are more tax-efficient than normal mutual
funds, and since they track indexes they have very low operating
and transaction costs associated with them. There are no sales
loads or investment minimums required to purchase an ETF. The
first ETF created was the Standard and Poor's Deposit Receipt
(SPDR, pronounced "Spider") in 1993. SPDRs gave investors an easy
way to track the S&P 500 without buying an index fund, and they
soon become quite popular.
• Amazon: The Exchange-Traded Funds Manual by Gary L. Gastineau
|
| Command: |
Fibonacci Bands Up |
| Type: | Indicator |
| Parameters: | NONE |
| Usage: |
• fibonacci bands up |
| Components: | price close |
| Developed by: | Leonardo Fibonacci - 1170 |
Example: |
Description: |
see: Fibonacci Retracement Lines
from: 1997 November TASC Traders Tip, by Thom Hartle
![]() |
Description: |
The Fibonacci retracement lines are ranges computed from the
high and low over a given period of time. The actual lines
that are drawn are specific percent retracements from the
given high or low. Investors primarily look at 3 different
lines (0.382,0.50,0.618), which are based on the historical
formula for the Fibonacci sequence.
These Fibonacci retracements can occur both after a recent
downturn or swing low; or after a run-up. The actual target
values are computed by taking a percent change from the high
or low value.
By specifying Fibonacci Down on StockFetcher, you are referring
to the retracement lines drawn after a recent swing low. All of
the values will be relative to how much the stock has recovered
from the recent low. For the Fibonacci Up, the values are
based upon a recent run-up in the stock price. Again, the
actual values refer to the amount the stock has moved to return
to the recent low.
Below is an example of the Fibonacci Down screen:
![]() The actual values returned by StockFetcher are computed from the
most recent close in reference to the recent high or low. In
the example above, the value returned by the screen wold be
near 0.382 (the most recent close is very near the 0.382
Fibonacci band.)
Note: When spcecifying the Fibonacci Up, the values returned
will be reversed from the Fibonacci Down. So a filter scanning
for crossed above in the Fibonacci Up case will actually result
in a downward price move.
StockFetcher allows several parameters with the Fibonacci retracements.
• time - The first parameter is the length of time used to look
for the up-trend or down-trend. So, a value of 65 will search
over the last 3 months to look for the trend.
• min length - The second parameter is the minimum number of
days for the trend to occur. For example, if you specify 15
days here, that means the distance between the high and low
must be at least 15 days.
• labels on/off - Finally, by setting the third or last
parameter to 0, you can eliminate the labels that are seen on
the charts; this may help to clear up your chart if needed.
|
| Command: |
Force Index |
| Type: | Indicator |
| Parameters: | Period |
| Usage: |
• force index(PERIOD) • FI(PERIOD) |
| Components: | volume price close |
| Developed by: | Alexander Elder - |
Description: |
The Force Index, developed by Alexander Elder, is a trend
indicator that attempts to determine the current buying and
selling activity in a stock. Values above 0 indicate a current
buying trend, while values below 0 indicate a sell-off. The
Force Index uses both the change in closing prices along with
the number of shares traded.
Popular interpretations of the Force Index involve 2 or 13-day
Force Index values, along with price divergences or positive
or negative trends.
• Amazon: Trading for a Living By Alexander Elder
|
| Command: |
Guppy Multiple Moving Averages |
| Type: | custom |
| Parameters: | NONE |
| Usage: |
• MMA |
| Components: | custom |
| Developed by: | Daryl Guppy - |
Description: |
• Learn More
• Learn More
• Learn More
• Learn More
see "Chart Trading" page 173 Daryl Guppy, Wrightbooks 1999
from here: http://store.traders.com/-v16-c02-011mult-pdf.html it costs $3.95
TASC V.16:2 (70-76): Using Multiple Moving Averages by Daryl Guppy
In case anyone is interested here is a rainbow indicator as defined by Daryl Guppy. It would be a lot
nicer if SF would provide a way to pick which color to draw with..
Here is a MWMA (Multiple Moving Average)
price between 1 and 3
and volume above 1000000
set{newPlot, cma(close,3)} on plot price
and draw cma(close,3) on plot price
and draw cma(close,5) on plot price
and draw cma(close,8) on plot price
and draw cma(close,10) on plot price
and draw cma(close,12) on plot price
and draw cma(close,15) on plot price
and draw cma(close,30) on plot price
and draw cma(close,35) on plot price
and draw cma(close,40) on plot price
and draw cma(close,45) on plot price
and draw cma(close,50) on plot price
and draw cma(close,60) on plot price
Here is a MWMA (Multiple Weighted Moving Average)
price between 1 and 3
and volume above 1000000
set{newPlot, cwma(close,3)} on plot price
and draw cwma(close,3) on plot price
and draw cwma(close,5) on plot price
and draw cwma(close,8) on plot price
and draw cwma(close,10) on plot price
and draw cwma(close,12) on plot price
and draw cwma(close,15) on plot price
and draw cwma(close,30) on plot price
and draw cwma(close,35) on plot price
and draw cwma(close,40) on plot price
and draw cwma(close,45) on plot price
and draw cwma(close,50) on plot price
and draw cwma(close,60) on plot price
Here is a MEMA (Multiple Exponential Moving Average)
price between 1 and 3
and volume above 1000000
set{newPlot, cema(close,3)} on plot price
and draw cema(close,3) on plot price
and draw cema(close,5) on plot price
and draw cema(close,8) on plot price
and draw cema(close,10) on plot price
and draw cema(close,12) on plot price
and draw cema(close,15) on plot price
and draw cema(close,30) on plot price
and draw cema(close,35) on plot price
and draw cema(close,40) on plot price
and draw cema(close,45) on plot price
and draw cema(close,50) on plot price
and draw cema(close,60) on plot price
Excerpt from TASC about this indicator:
Using Multiple Moving Averages by Daryl Guppy
Moving averages, familiar to every technical trader, are used by most technicians to identify important
trends. Here's a unique twist on using multiple moving averages as an early warning of trend reversals.
Technical analysis is an adaptive process, pressing at the edges of possibility and developing new
approaches from ideas glimpsed in passing. The multiple moving average (MMA) is an indicator developed
from one such encounter. It uses core information generated from multiple time frames to capture and
understand a concept of market dynamics rather than specific value readings.
|
Description: |
Interestingly enough Stockfetcher does not have basic Hammer
patterns defined in their rather extensive array of candle
patterns.
Some Stockfetcher users have built and shared a couple of filters
that make Hammers available in your scans.
Here's a hammer filter - change percentages to change tail or body length.
show stocks where low is more than 2% below open
AND close is less than 0.5% below high
AND close is above open
AND open is less than 1% below close
or
show stocks where low is more than 2% below open
AND close is less than 0.5% below high
AND open is above close
AND close is less than 1% below open
or
set{body_bottom,min(open,close)}
set{body_top,max(open,close)}
set{lshadowsize, body_bottom - low}
set{tshadowsize, high - body_top}
set{body_size, body_top - body_bottom}
set{body_size2, body_size * 2}
show stocks where tshadowsize is less than 0.001
AND lshadowsize > body_size2
AND close decreasing for the last 3 days
AND body_top below close 1 day ago
AND close above 5
hammer Candlestick Pattern
of
Inverted Hammer Candlestick Pattern
set{body_bottom,min(open,close)}
set{body_top,max(open,close)}
set{lshadowsize, body_bottom - low}
set{tshadowsize, high - body_top}
set{tshadowsize2, tshadowsize * 2}
set{body_size, body_top - body_bottom}
show stocks where lshadowsize is less than 0.001
AND tshadowsize2 > body_size
AND close decreasing for the last 3 days
AND body_top below close 1 day ago
close above 5
Inverted Hammer Candlestick Pattern
![]() |
Example: |
| • RSI(15) has been below 30 for the last 5 days |
| • RSI(15) 1 day ago had been below 30 for the last 5 days and the RSI(15) is above 30 |
Description: |
see also equality operators
has been above/below is an extension to the above/below phrases.
These phrases provide the ability to find indicators or prices
that are above or below a value, and have held that position
for a given period of time.
Combined with crossovers, the has been above/below phrasing can
be very useful to eliminate false crossovers, as well as
discover cases where a crossover had already occurred within
the previous couple of days.
Additionally, these phrases can help to find when a measure has
held a particular position for a longer period of time,
potentially strengthening the importance of the position of
the measure.
|
| Command: |
Historical Volatility |
| Type: | Indicator |
| Parameters: | [period, trading period {days, 7=weeks}] |
| Usage: |
• historical volatility(PERIOD1, PERIOD2) |
| Components: | options price close |
Example: |
| • Show stocks where the Historical Volatility(100,1) is below 10 |
Description: |
• Learn More
• Historical Volatility
Historical volatility uses the standard deviation of a stock's
price to measure the volatility of the stock. Additionally,
historical volatility is often expressed in daily, weekly or
monthly terms.
![]() Where:
s = standard deviation, or historical volatility
n = number of occurrences (bars)
m = mean
xi = price changes
|
| Command: |
ind() |
| Type: | Indicator |
| Parameters: | [symbol, indicator] |
| Usage: |
• ind(SYMBOL, INDICATOR) |
| Components: | price close |
Description: |
You can create screens that will compare all of the stocks
in the screen versus a single input symbol. In otherwords, you
could use this feature to find all stocks whose Stochastic
values were below that for the Nasdaq Composite.
The example above illustrates how this new feature,
ind(SYMBOL,INDICATOR) is constructed. Below is a description
of the parameters:
• SYMBOL - The symbol you want to compare the other
stocks to.
• INDICATOR - The indicator used in the comparison.
|
| Command: |
indposition |
| Type: | Indicator |
| Parameters: | indicator, length |
| Usage: |
• indposition(close,50) is near 0 |
| Components: | math |
Example: |
| • indposition(OBV,50) is between 0.45 and 0.55 and draw OBV and draw OBV 50 day high and draw OBV 50 day low |
| • indposition(close,50) is 0 |
Description: |
This measure returns the current position of an indicator with
respect to the min and max of the measure over the specified
number of days.
The value returned will be between 0 and 1. Values closer to 0
indicate the measure is closer to the lower bound in the given
period of time. Values closer to 1 indicator the current value
of the measure is closer to making a high over the specified
period of time.
|
| Command: |
Industry is |
| Type: | Industry |
| Parameters: | [None] |
| Usage: |
• industry equals [INDUSTRY] • ind equals [INDUSTRY] |
| Components: | Industry fundamental |
Example: |
| • Price is between 1 and 10 and industry equals 1 and add column industry description and add column industry and sort column 5 descending |
Description: |
You can use the name of the industry for the scan.
You will want to replace all "spaces" with the "-" symbol if
you want to use an industry or sector component directly in
your filter. For example:
industry is regional-banks
and average volume(30)is above 50000
and add column sector
and add column industry
or you can filter by Industry by it's number.
Price is between 1 and 10
and industry equals 1
and add column industry description
and add column industry
and sort column 5 descending
where industry is one of the following numbers:
0 - Apparel-Accessories
1 - Audio-and-Video-Equipment
2 - None
3 - Computer Networks
4 - Conglomerates
5 - Natural Gas Utilities
6 - None
7 - None
8 - None
9 - Business Services
10 - Computer Hardware
11 - Broadcasting and Cable TV
12 - Airline
13 - None
14 - Retail (Technology)
15 - None
16 - Biotechnology and Drugs
17 - None
18 - Restaurants
19 - Computer Storage Devices
20 - Security Systems and Services
21 - Misc. Financial Services
25 - Constr. - Supplies and Fixtures
26 - Tobacco
27 - Auto and Truck Manufacturers
28 - Retail (Department and Discount)
29 - Retail (Apparel)
30 - Oil and Gas Operations
32 - Retail (Specialty)
34 - Software and Programming
35 - Gold and Silver
36 - Auto and Truck Parts
37 - Printing and Publishing
39 - Metal Mining
40 - Real Estate Operations
41 - Personal and Household Products
43 - Computer Services
44 - Textiles - Non Apparel
45 - Insurance (Prop. and Casualty)
46 - Healthcare Facilities
48 - Semiconductors
49 - Communications Services
51 - Photography
52 - Iron and Steel
53 - Personal Services
54 - Recreational Activities
55 - Chemical Manufacturing
56 - Communications Equipment
58 - Misc. Fabricated Products
59 - Schools
60 - Advertising
62 - Hotels and Motels
63 - Investment Services
64 - Medical Equipment and Supplies
65 - Misc. Capital Goods
66 - Casinos and Gaming
67 - SandLs/Savings Banks
68 - Retail (Grocery)
70 - Insurance (Miscellaneous)
71 - Computer Peripherals
72 - Regional Banks
73 - Air Courier
74 - Paper and Paper Products
75 - Motion Pictures
76 - Retail (Drugs)
77 - Aerospace and Defense
79 - Electronic Instruments and Controls
80 - Trucking
82 - Food Processing
83 - Oil Well Services and Equipment
84 - Construction Services
85 - Mobile Homes and RVs
86 - Forestry and Wood Products
87 - Insurance (Life)
88 - Construction - Raw Materials
89 - Crops
90 - Fabricated Plastic and Rubber
91 - Tires
92 - Office Supplies
93 - Electric Utilities
94 - Misc. Transportation
95 - Chemicals - Plastics and Rubber
96 - Consumer Financial Services
97 - Appliance and Tool
98 - Retail (Catalog and Mail Order)
99 - Scientific and Technical Instr.
100 - Footwear
101- Non-Metallic Mining
|
Example: |
| • show stocks where Inertia(14,10,20) is above 50 and Inertia(14,10,20) has reached a new 6 week high |
Description: |
Appeared in the September 95 issue of Stocks & Commodities magazine.
Developed by Donald Dorsey, the Inertia measure is an extension
of the Relative Volatility Index (RVI). Inertia uses output
from the RVI as the input to the formula for the linear
regression indicator. Each point of the Interia measure is the
n-day linear regression value of the RVI. The basic idea
behind this measure is that the Inertia will indicate how much
weight the stock is carrying in it's current direction of
motion.
Three parameters are used with the Inertia measure on
StockFetcher. The first two are the input parameters for the
RVI measure. The third period is the number of days used in
computing the linear regression of the RVI measure. As with
the RVI and RSI the Inertia results range between 0 and 100.
|
| Command: |
Intraday Intensity |
| Type: | Indicator |
| Parameters: | [*Period] |
| Usage: |
• intraday intensity • intraday intensity(PERIOD) |
| Components: | volume price close |
| Developed by: | Dave Bostian - 1967 |
Example: |
| • Intraday intensity(21) has been increasing for 5 days |
| • Intraday intensity(21) crossed above 0 |
Description: |
• Learn More
Economist David Bostian created the Intraday Intensity Index, which is called Money Flow by Instinet,
Accumulation-Distribution by MetaStock and the Daily Volume Indicator by TechniFilter. Bostian's original
monograph on the subject appeared in 1967 and can be found in Encyclopedia of Stock Market Techniques, published by
Investors Intelligence.
Intraday Intensity is a volume indicator that depicts the flow of
funds for a security based on where it closes in its range. The
idea behind Intraday Intensity is that the need for institutional
traders to complete their positions gets ever more urgent as the
close of trading looms. As they move to fill their needs late in
the day, their actions cause prices to rise or fall, effectively
tipping their hands via the relationship of the close to the days
range.
The Intraday Intensity computes the position of the closing
price with respect to the high and low of the day. This value
is then weighted by the daily volume for each day within the
period.
![]() |
| Command: |
Intraday Momentum Index |
| Type: | Indicator |
| Parameters: | Period |
| Usage: |
• IMI(PERIOD) |
| Components: | momentum indicator volume price high low |
| Developed by: | Tushar Chande - |
Example: |
| • show stocks where the IMI(14) is below 30 |
| • show stocks where the IMI(14) is above 70 and the IMI(14) crossed below the CMA(IMI(14),5) |
Description: |
The Intraday Momentum Index (IMI) is the same formula as the
Relative Strength Index (RSI), except intraday differences are
used as input. In otherwords, while the RSI uses the day-to-day
change as input, the IMI uses the difference between the high
and low values for the day. The IMI was designed by Tushar
Chande.
The only parameter used with the IMI on StockFetcher is the
period. The period is used within the RSI-based formula.
Additionally, the results from the IMI measure are scaled
between 0 and 100.
![]() • Amazon: Beyond Technical Analysis By Tushar S. Chande
|
Description: |
• Learn More
From May 2004 issue of Technical Analysis of Stocks & Commodities magazine
Developed by John Ehlers, the RSI-based inverse Fisher
Transform is used to help clearly define trigger points.
First, a specified length RSI is computed and adjusted so that
the values are centered around zero. The inverse transform is
then applied to these values.
Formula:
The inverse transform is effectively:
(e^(2x) - 1)
------------
(e^(2x) + 1)
|
| Command: |
Keltner Channels (upper,lower,middle) |
| Type: | Indicator |
| Parameters: | Period |
| Usage: |
• {upper, lower, middle} keltner band(PERIOD) |
| Components: | envelope close high low |
| Developed by: | Chester W. Keltner - |
Example: |
| • Close is above the Upper Keltner Band(10) |
| • Close is below the Lower Keltner Band(10) |
| • Low crossed above the Upper Keltner Band(10) within the last 1 day |
Description: |
Originally described in Perry Kaufman's book:
"The New Commodity Trading System and Method" and designed
by Chester W. Keltner, the Keltner Channels provide a
Bollinger Band-like envelope around the price.
Keltner channels as are Bollinger Bands and fixed width envelopes
are moving average band.
Moving average bands and channels all fall into the general category
of envelops, which consist of three lines a middle line and two
outer lines. Envelope theory holds that price has the greatest
probability of falling within the boundaries of the envelope.
Price falling outside the envelope boundaries is considered an
anomaly and therefore provides a trading opportunity. The major
differences between an envelope types can be found in the calculation
of the lines, in the spacing between the lines or bandwidth, and
how they are interpreted.
Source: Stocks and Commodities V17:12(533-538)
Construction of Keltner Channels is simple. You have a mid band
based on the average of the high, low and closing price with a
band on each side formed from the 10 moving average of the daily
high minus the daily low.
Interpretation
Originally, Keltner had his system buy when the close exceed the
upper channel and sell when the close was below the lower channel.
Basically, penetration exceeding the channels showed a strong bullish
or bearish momentum and presumably the momentum would continue.
However, there is no reason why the Keltner Channel cannot be
interpreted the same way as other price envelopes such as Bollinger
Bands. When using Bollinger Bands ninety five percent of price
movement occurs within the bands. The upper and lower bands are
considered as extremes of the price movement and are a warning
that price exhaustion may be occurring. Buy signals occur when
the price is below the lower band and sell signal occur when price
exceeds the upper band.
Recommendations
Some prefer using the Keltner channels with a 10 day exponential average.
And would use other indicators such as Stochastic, MACD, RSI or
Williams %R to confirm overbought and oversold conditions.
• Amazon: How to make money in commodities By Chester W Keltner
|
Example: |
| • KST Daily SMA is above 0 |
| • KST Monthly SMA has been increasing for 3 days |
| • KST Long EMA has been decreasing for 2 days |
| • KST Weekly EMA crossed below 0 |
Description: |
The KST system is a set of momentum indicators developed by
Martin Pring. Each individual KST option is composed of the
sum of 4 smoothed Rate of Change value, with different options
for the smoothing as well as the rate of change parameters.
Using the different KST lengths, these momentum indicators are
useful for determining potential entry and exit points.
The name KST comes from "Know Sure Thing". The KST is constructed
by summing four smoothed rates of change. For more interpretation
refer to Martin Pring's article "Summed Rate of Change (KST)" in
the September 92 issue of TASC.
• Amazon: Technical Analysis Explaine By Martin J. Pring
|
| Command: |
Lag |
| Type: | Temporal |
| Parameters: | None |
| Usage: |
• lag [days] |
| Components: | core |
Description: |
see also "Days ago"
Lag is similar to the phrase "days ago". Essentially, it allows
you to specify the particular value of a measure from a period
of time in the past. The "date offset" phrase takes your entire
filter and runs it on a particular date specified in the past.
In "date offset", every element in your screen is essentially
shifted back to that date. So, if you had a "days ago" phrase in
a filter and then used "date offset", the "days ago" phrase would
be further shifted.
|
Example: |
| • Linear Regression(10) Indicator crossed above the EMA(10) |
| • lri(10) reached a new 1 year high |
Description: |
See "Slope of" for more details about using slope values.
The linear regression indicator uses the end points of
successive linear regression lines to create a
"moving average"-like measure. The period specifies how many
days are used to compute the linear regression
![]() |
Description: |
The linear regression is built by computing a least-squares
line over the specified last number of days. This line
represents and expectation of where the price should be. To
create the linear regression channels, we use the popular
method of finding the point furthest from the least squares
line and create two channels of equal width from that
point.
StockFetcher allows you to customize the width of the channel
through a scaling factor. By entering a scaling factor of 0.50,
a channel of half the normal width is created.
Linear regression is a statistical tool used to predict future
values from past values. In the case of security prices, it is
commonly used to determine when prices are overextended.
A Linear Regression trendline uses the least squares method to
plot a straight line through prices so as to minimize the distances
between the prices and the resulting trendline.
Interpretation
If you had to guess what a particular security's price would be
tomorrow, a logical guess would be "fairly close to today's price."
If prices are trending up, a better guess might be "fairly close
to today's price with an upward bias." Linear regression analysis
is the statistical confirmation of these logical assumptions.
A Linear Regression trendline is simply a trendline drawn between
two points using the least squares fit method. The trendline is
displayed in the exact middle of the prices. If you think of this
trendline as the "equilibrium" price, any move above or below the
trendline indicates overzealous buyers or sellers.
A popular method of using the Linear Regression trendline is to
construct Linear Regression Channel lines. Developed by Gilbert
Raff, the channel is constructed by plotting two parallel,
equidistant lines above and below a Linear Regression trendline.
The distance between the channel lines to the regression line is
the greatest distance that any one closing price is from the
regression line. Regression Channels contain price movement, with
the bottom channel line providing support and the top channel line
providing resistance. Prices may extend outside of the channel for
a short period of time. However if prices remain outside the
channel for a longer period of time, a reversal in trend may be
imminent.
A Linear Regression trendline shows where equilibrium exists.
Linear Regression Channels show the range prices can be expected
to deviate from a Linear Regression trendline.
The Time Series Forecast indicator displays the same information
as a Linear Regression trendline. Any point along the Time Series
Forecast is equal to the ending value of a Linear Regression
Trendline. For example, the ending value of a Linear Regression
trendline that covers 10 days will have the same value as a 10-day
Time Series Forecast.
![]() Formula:
![]() ![]() ![]() ![]() • Amazon: Trading the Regression Channel By Gilbert L. Raff
|
| Command: |
Linear Regression Slope |
| Type: | Indicator |
| Parameters: | [Period] |
| Usage: |
• linear regression(PERIOD) slope • LRS(PERIOD) |
| Components: | momentum indicator price close |
| Developed by: | Gilbert Raff - |
Example: |
| • linear regression(10) slope reached a new 6 month high |
| • linear regression(10) slope crossed below 0 within the last 1 day |
Description: |
See "Slope of" for more details about using slope values.
The linear regression slope indicator simply computes the slope
of the linear regression line. The period is used to determine
how many days are required to compute the linear regression.
The linear regression slope can be used to determine when the
there is possibly a change in trend.
|
Example: |
| • MACD Fast Line(12,26) crossed above the MACD Slow Line(12,26) |
| • MACD Fast Line(12,26) crossed below the MACD Slow Line(12,26) and the MACD Histogram(12,26) has been increasing for 2 days |
Description: |
• Learn More
The MACD ("Moving Average Convergence/Divergence") is a trend
following momentum indicator that shows the relationship between
two moving averages of prices. The MACD was developed by Gerald Appel,
publisher of Systems and Forecasts.
The MACD is the difference between a 26-day and 12-day exponential
moving average. A 9-day exponential moving average, called the
"signal" (or "trigger") line is plotted on top of the MACD to
show buy/sell opportunities. (Appel specifies exponential moving
averages as percentages. Thus, he refers to these three moving
averages as 7.5%, 15%, and 20% respectively.)
Interpretation
The MACD proves most effective in wide-swinging trading markets.
There are three popular ways to use the MACD: crossovers,
overbought/oversold conditions, and divergences.
Crossovers
The basic MACD trading rule is to sell when the MACD falls below
its signal line. Similarly, a buy signal occurs when the MACD
rises above its signal line. It is also popular to buy/sell when
the MACD goes above/below zero.
Overbought/Oversold Conditions
The MACD is also useful as an overbought/oversold indicator. When
the shorter moving average pulls away dramatically from the longer
moving average (i.e., the MACD rises), it is likely that the
security price is overextending and will soon return to more
realistic levels. MACD overbought and oversold conditions exist
vary from security to security.
Divergences
A indication that an end to the current trend may be near occurs
when the MACD diverges from the security. A bearish divergence
occurs when the MACD is making new lows while prices fail to reach
new lows. A bullish divergence occurs when the MACD is making new
highs while prices fail to reach new highs. Both of these divergences
are most significant when they occur at relatively overbought/oversold
levels.
Formula:
The MACD is calculated by subtracting the value of a 26-day
exponential moving average from a 12-day exponential moving average.
A 9-day dotted exponential moving average of the MACD
(the "signal" line) is then plotted on top of the MACD.
|
| Command: |
Market is |
| Type: | market |
| Parameters: | None |
| Usage: |
• market is [MARKET] • market is not [MARKET] |
| Components: | fundamental market |
Description: |
You can filter by market by it's name or by it number listed
below.
Currently Stockfetcher supports the major U.S. markets. Below
are some samples using the appropriate phrasing:
• NASDAQ
• NASDAQ 100
• NOT LEAPS
• NVI
• NYSE
• Not Amex
• Not NASDAQ
• Not NASDAQ 100
• Not NYSE
• Not OTCBB
• Not Optionable
• Optionable
• Not S&P 500
• OTCBB
A simple way to filter for maket is like this
Price is between 5 and 7
AND market equals 5
and add column market description
and add column market
where maket number is:
1 - OTCBB
2 - AMEX
3 - NYSE
4 - Nasdaq / OTCBB
5 - NASDAQ / OTCBB
Thanks to xplorer for discovering markets can be filtered by
number.
|
| Command: |
market OTC.BB |
| Type: | Market |
| Parameters: | [none] |
| Usage: |
• market is OTCBB • market is not OTCBB |
| Components: | market |
Example: |
| • show stocks where MA(10) crossed above MA(50) and market is OTCBB |
| • Show stocks where high reached a new 52 week high and market is not OTCBB |
Description: |
By default, StockFetcher screens over all possible stocks. Now,
adding the phrase and market is OTCBB StockFetcher will only
screen over the OTC.BB stocks. For example:
|
| Command: |
Mass Index |
| Type: | Indicator |
| Parameters: | [period, period EMA] |
| Usage: |
• mass index(PERIOD1, PERIOD2) |
| Components: | price high low |
| Developed by: | Donald Dorsey - |
Example: |
| • Mass Index(25) crossed below 26.5 |
| • Mass Index(25) crossed below 26.5 and the Mass Index(25) has been decreasing for 3 days |
Description: |
Developed by Donald Dorsey, the Mass Index is used to discover
trend reversals. The Mass Index analyzes the distances between
the high and low prices and as the range changes, the Mass
Index follows accordingly. Combined with a short-term moving
average, "bulges" of the Mass Index are used to determine
possible reversals. One popular approach for detecting
reversals involves the Mass Index(25) rising above 27 and then
falling below 26.5.
Formula:
1. Calculate a 9-day exponential moving average ("EMA") of the
difference between the high and low prices.
2. Calculate a 9-day exponential moving average of the moving
average calculated in Step 1.
3. Divide the moving average calculated in Step 1 by the moving
average calculated in Step 2.
4. Total the values in Step 3 for the number of periods in the
Mass Index (e.g., 25 days).
![]() |
Description: |
Used to apply mathematical functions to values.
show stocks where close is below open and abs(close minus open)
is above 0
Below is a list of mathematical functions available for your
StockFetcher filters
• abs(IND): return the absolute value of the input measure.
abs(close minus open) is above 2.0
• log(IND): take the natural log of the input measure.
log(RSI(14)) reached a new 6 week high
• log10(IND): take the loge, base-10 of the input measure.
log10(RSI(14)) reached a new 6 week high
• max(IND1,IND2): return the maximum of two values.
show stocks where max(MACD Fast Line, MACD Slow Line)
crossed above 0 and draw MACD
• min(IND1,IND2): return the minimum of two values.
show stocks where min(RSI(14),Smoothed RSI(14)) is above 60
and draw Smoothed RSI(14)
• sign(IND): return just the sign (1,-1) of the input measure.
sign(MACD Fast Line) equals 1
• sum(IND,LENGTH): return the sum of a measure, over the
specified length.
set{diff, close - close 1 day ago}
set{product, diff * volume},
show stocks where sum(product,10) crossed above 0
• round(indicator,decimal offset): Round to nearest value based on the decimal offset. By default, round() will round to the nearest integer. For example:
A negative, integer-based offset will shift the rounding to the "right" of the decimal point. For example, to round based on tenths you would enter a -1:
A positive, integer-based offset will shift the rounding to the "left" of the decimal point. For example:
• ceil(indicator): Round up to the nearest integer.
• floor(indicator): Round down to the nearest integer.
• mod(indicator,modulus): Return the remainder using the supplied modulus.
• pow(indicator,power): Return the value of the indicator to the specified power.
• exp(indicator): Return the value of e raised to the specified power.
• exp10(indicator): Return the value of 10 raised to the specified power.
• sin(indicator): Compute the sine of the specified value.
• asin(indicator): Compute the arc sine of the specified value.
• cos(indicator): Compute the cosine of the specified value.
• acos(indicator): Compute the arc cosine of the specified value.
• tan(indicator): Compute the tangent of the specified value.
• atan(indicator): Compute the arc tangent of the specified value.
|
| Command: |
Momentum |
| Type: | Indicator |
| Parameters: | [*Period] |
| Usage: |
• momentum • momentum(PERIOD) |
| Components: | momentum indicator price close |
Example: |
| • show stocks where the momentum(12) has reached a new 6 month high |
| • show stocks where the momentum(24) has been increasing for 4 days |
Description: |
The Momentum indicator measures the amount that a security's price
has changed over a given time span.
Interpretation
The interpretation of the Momentum indicator is identical to the
interpretation of the Price ROC. Both indicators display the
rate-of-change of a security's price. However, the Price ROC
indicator displays the rate-of-change as a percentage whereas the
Momentum indicator displays the rate-of-change as a ratio.
There are basically two ways to use the Momentum indicator:
• You can use the Momentum indicator as a trend-following
oscillator similar to the MACD (this is the method I prefer).
Buy when the indicator bottoms and turns up and sell when
the indicator peaks and turns down. You may want to plot a
short-term (e.g., 9-period) moving average of the indicator
to determine when it is bottoming or peaking.
If the Momentum indicator reaches extremely high or low values
(relative to its historical values), you should assume a
continuation of the current trend. For example, if the
Momentum indicator reaches extremely high values and then
turns down, you should assume prices will probably go still
higher. In either case, only trade after prices confirm the
signal generated by the indicator (e.g., if prices peak and
turn down, wait for prices to begin to fall before selling).
• You can also use the Momentum indicator as a leading indicator.
This method assumes that market tops are typically identified
by a rapid price increase (when everyone expects prices to
go higher) and that market bottoms typically end with rapid
price declines (when everyone wants to get out). This is
often the case, but it is also a broad generalization.
As a market peaks, the Momentum indicator will climb sharply
and then fall off-- diverging from the continued upward or
sideways movement of the price. Similarly, at a market
bottom, Momentum will drop sharply and then begin to climb
well ahead of prices. Both of these situations result in
divergences between the indicator and prices.
|
| Command: |
Money Flow Index |
| Type: | Indicator |
| Parameters: | [period] |
| Usage: |
• money flow index(PERIOD) • MFI(PERIOD) |
| Components: | market strength indicator price close volume |
| Developed by: | Laszlo Birinyi, Jr. - |
Example: |
| • Show stocks where the MFI(15) is below 20 |
| • Show stocks where the MFI(14) has been increasing for 4 daysand the close has been decreasing for 4 days |
Description: |
• Learn More
The Money Flow Index ("MFI") is a momentum indicator that measures
the strength of money flowing in and out of a security. It is
related to the Relative Strength Index, but where the RSI only
incorporates prices, the Money Flow Index accounts for volume.
Interpretation
The interpretation of the Money Flow Index is as follows:
• Look for divergence between the indicator and the price
action. If the price trends higher and the MFI trends lower
(or vice versa), a reversal may be imminent.
• Look for market tops to occur when the MFI is above 80. Look
for market bottoms to occur when the MFI is below 20.
Formula:
The Money Flow Index requires a series of calculations. First,
the period's Typical Price is calculated.
High + Low + Close
Typical Price = ------------------
3
Next, Money Flow (not the Money Flow Index) is calculated by
multiplying the period's Typical Price by the volume.
Money Flow = Typical Price * Volume
If today's Typical Price is greater than yesterday's Typical Price,
it is considered Positive Money Flow. If today's price is less, it
is considered Negative Money Flow.
Positive Money Flow is the sum of the Positive Money over the
specified number of periods. Negative Money Flow is the sum of
the Negative Money over the specified number of periods.
The Money Ratio is then calculated by dividing the Positive Money
Flow by the Negative Money Flow.
Positive Money Flow
Money Ratio = -------------------
Negative Money Flow
Finally, the Money Flow Index is calculated using the Money Ratio.
|
| Command: |
Moving Average (Displaced) |
| Type: | Indicator |
| Parameters: | [Period, Displacement] |
| Usage: |
• DMA(PERIOD, DISPLACEMENT) • DMA(PERIOD, -DISPLACEMENT) |
| Components: | price |
Example: |
| • show stocks where the MA(50) crossed above the DMA(50,-5) |
| • show stocks where the DMA(50,10) has been increasing for 5 days and the MA(50) has been decreasing for 5 days |
Description: |
• Learn More
The displaced moving average is a simple moving average shifted
forward or backward in time by a specified number of days. The
two parameters to the DMA include the length of the MA along
with the number of days this average should be shifted. A
positive displacement number indicates that the moving average
values are projected forward, while a negative displacement
indicates the values are moved backwards in time.
You should be careful when using this indicator in Stockfetcher
backtesting as it may yeild impossible to achieve results since
it is calculated after the fact.
|
| Command: |
Moving Average (Exponential) |
| Type: | Indicator |
| Parameters: | Period |
| Usage: |
• EMA(PERIOD) |
| Components: | price close |
Example: |
| • EMA(15) crossed below EMA(50) |
| • Price crossed above the EMA(10) and the EMA(10) is below the EMA(50) |
Description: |
Similar to the simple moving average, the exponential moving
average computes the average share price of a stock. Instead
of computing a simple average, the ema uses previous values of
the ema along with a smoothing factor to compute the average
price.
In order to reduce the lag in simple moving averages, technicians
often use exponential moving averages (also called exponentially
weighted moving averages). EMAs reduce the lag by applying more
weight to recent prices relative to older prices. The weighting
applied to the most recent price depends on the specified period
of the moving average. The shorter the EMA's period, the more
weight that will be applied to the most recent price. For
example: a 10-period exponential moving average weighs the most
recent price 18.18% while a 20-period EMA weighs the most recent
price 9.52%. As we'll see, the calculating and EMA is much harder
than calculating an SMA. The important thing to remember is that
the exponential moving average puts more weight on recent prices.
As such, it will react quicker to recent price changes than a simple
moving average. Here's the calculation formula.
Exponential Moving Average Calculation
Exponential Moving Averages can be specified in two ways - as a
percent-based EMA or as a period-based EMA. A percent-based EMA
has a percentage as it's single parameter while a period-based EMA
has a parameter that represents the duration of the EMA.
The formula for an exponential moving average is:
EMA(current) = ( (Price(current) - EMA(prev) ) x Multiplier) + EMA(prev)
For a percentage-based EMA, "Multiplier" is equal to the EMA's
specified percentage.
For a period-based EMA, "Multiplier" is equal to 2 / (1 + N)
where N is the specified number of periods.
|
| Command: |
Moving Average (Simple) |
| Type: | Indicator |
| Parameters: | NONE |
| Usage: |
• moving average(PERIOD) • MA(PERIOD) |
| Components: | price close |
Example: |
| • MA(10) crossed above MA(50) |
| • Price crossed below the MA(30) |
Description: |
• Learn More
The simple moving average uses the specified number of days to
compute the average share price for a given stock. Typically
used to indicate the position of a stock relative to it's
recent history.
A simple moving average is formed by computing the average (mean)
price of a security over a specified number of periods. While it
is possible to create moving averages from the Open, the High,
and the Low data points, most moving averages are created using
the closing price. For example: a 5-day simple moving average is
calculated by adding the closing prices for the last 5 days and
dividing the total by 5.
The calculation is repeated for each price bar on the chart. The
averages are then joined to form a smooth curving line - the
moving average line. Continuing our example, if the next closing
price in the average is 15, then this new period would be added
and the oldest day, which is 10, would be dropped.
|
Example: |
| • show stocks where the close is above the upper EMA envelope(25,6.0) |
| • show stocks where the high is below the MA(20) andlow is above the lower MA envelope(25,3.0) |
Description: |
• Learn More
Similar to Bollinger Bands, the moving average envelopes produce
upper and lower bounds, assisting in gauging the current
activity of a stock.
Moving average envelopes on StockFetcher may be created using
either exponential moving averages or simple moving averages.
Additionally, the width of the envelopes may be fully customized.
The first parameter of the envelopes is the period of the
moving average and the second parameter indicates the offset
(as a percent) from the moving average for each band.
StockFetcher also allows for further customization of the
envelopes by specifying the period and offsets for both the
upper and lower bands. If used, the third and fourth parameters
specify the period and offset used for the lower band.
An envelope is comprised of two moving averages. One moving average
is shifted upward and the second moving average is shifted downward.
Interpretation
Envelopes define the upper and lower boundaries of a security's
normal trading range. A sell signal is generated when the security
reaches the upper band whereas a buy signal is generated at the
lower band. The optimum percentage shift depends on the volatility
of the security--the more volatile, the larger the percentage.
The logic behind envelopes is that overzealous buyers and sellers
push the price to the extremes (i.e., the upper and lower bands),
at which point the prices often stabilize by moving to more
realistic levels. This is similar to the interpretation of
Bollinger Bands.
Formula:
Envelopes are calculated by shifted moving averages. In the above
example, one 25-day exponential moving average was shifted up 6%
and another 25-day moving average was shifted down 6%.
|
| Command: |
Negative Volume Index (NVI) |
| Type: | Indicator |
| Parameters: | None |
| Usage: |
• negative volume index • NVI |
| Components: | market strength indicator volume |
| Developed by: | Norman Fosback - 1976 |
Example: |
| • show stocks where NVI has been above CMA(NVI,247) for the last 10 days and draw PVI |
Description: |
As opposed to the Positive Volume Index (PVI), the Negative
Volume Index (NVI), is affected by days where the volume has
decreased from the previous day.
Norman Fosbeck (developed the NVI and PVI) believes that
following days where volume is decreasing helps to point out
where the "smart-money" is going in the market. By purchasing on
decreased volume days, quiet accumulation can occur.
Negative Volume Index (NVI) attempts to identify bull markets by
showing what the smart investors are doing. It is based on the assumption
smart investors dominate trading on light volume days and uninformed
investors dominates trading on active days. The NVI changes on days when
the volume is down and stays flat on up volume days. Look for the NVI to
rise above its one year moving average to signal a bull market.
![]() • Amazon: Stock Market Logic by Norman G. Fosback
|
| Command: |
On Balance Volume(OBV) |
| Type: | Indicator |
| Parameters: | NONE |
| Usage: |
• OBV |
| Components: | market strength indicator volume close |
| Developed by: | Joe Granville - |
Example: |
| • OBV has been increasing for 3 days |
| • OBV has been decreasing for 5 days lag 2 and OBV has been increasing for 2 days |
| • obv(12) crossed above average obv(12) |
Description: |
• Learn More
On Balance Volume ("OBV") is a momentum indicator that relates
volume to price change.
On Balance Volume was developed by Joe Granville and originally
presented in his book New Strategy of Daily Stock Market Timing
for Maximum Profits.
Interpretation
On Balance Volume is a running total of volume. It shows if volume
is flowing into or out of a security. When the security closes higher
than the previous close, all of the day's volume is considered
up-volume. When the security closes lower than the previous close,
all of the day's volume is considered down-volume.
A full explanation of OBV is beyond the scope of this book. If you
would like further information on OBV analysis, I recommend that
you read Granville's book, New Strategy of Daily Stock Market
Timing for Maximum Profits.
The basic assumption, regarding OBV analysis, is that OBV changes
precede price changes. The theory is that smart money can be seen
flowing into the security by a rising OBV. When the public then
moves into the security, both the security and the OBV will surge
ahead.
If the security's price movement precedes OBV movement, a
"non-confirmation" has occurred. Non-confirma-tions can occur at
bull market tops (when the security rises without, or before, the OBV)
or at bear market bottoms (when the security falls without, or before,
the OBV).
The OBV is in a rising trend when each new peak is higher than the
previous peak and each new trough is higher than the previous trough.
Likewise, the OBV is in a falling trend when each successive peak
is lower than the previous peak and each successive trough is lower
than the previous trough. When the OBV is moving sideways and is
not making successive highs and lows, it is in a doubtful trend.
Once a trend is established, it remains in force until it is broken.
There are two ways in which the OBV trend can be broken. The first
occurs when the trend changes from a rising trend to a falling
trend, or from a falling trend to a rising trend.
The second way the OBV trend can be broken is if the trend changes
to a doubtful trend and remains doubtful for more than three days.
Thus, if the security changes from a rising trend to a doubtful
trend and remains doubtful for only two days before changing back
to a rising trend, the OBV is consid-ered to have always been in
a rising trend.
When the OBV changes to a rising or falling trend, a "breakout"
has occurred. Since OBV breakouts normally precede price breakouts,
investors should buy long on OBV upside breakouts. Likewise,
investors should sell short when the OBV makes a downside breakout.
Positions should be held until the trend changes (as explain-ed
in the preceding paragraph).
This method of analyzing On Balance Volume is designed for trading
short-term cycles. According to Granville, investors must act quickly
and decisively if they wish to profit from short-term OBV analysis.
Formula:
On Balance Volume is calculated by adding the day's volume to a
cumulative total when the security's price closes up, and
subtracting the day's volume when the security's price closes down.
![]() ![]() |
| Command: |
Optionable |
| Type: | Fundamental |
| Parameters: | NONE |
| Usage: |
• stocks are optionable • stocks are not optionable |
| Components: | fundamental |
Example: |
| • Select stocks between 10 and 50 and stocks are optionable |
| • Select stocks above 25 and stocks are not optionable |
| • Select stocks above 25 and stocks are optionable add column optionable |
Description: |
A fundamental parameter indicating whether or not a given
ticker is listed as an optionable stock on the Chicago Board
of Exchange. This does not necessarily return the symbol
ticker that is used on the CBOE, but the actual stock
ticker.
|
Example: |
| • Parabolic SAR has been decreasing for 7 days |
| • price between 10 and 50 and the Parabolic SAR has been increasing for 5 days |
| • Parabolic SAR(0.02,0.2) has been decreasing for 7 days |
Description: |
• Learn More
SAR stands for stop and reverse.
Typically used to determine stop points for trades, the
Parabolic SAR forms a band either above or below the current
price of the stock.
*** Note ***
The Parabolic SAR is a cumulative indicator, so exact filters
such as crossovers may produce results which may not match
their charts.
The Parabolic Time/Price System, developed by Welles Wilder, is
used to set trailing price stops and is usually referred to as
the "SAR" (stop-and-reversal). This indicator is explained
thoroughly in Wilder's book, New Concepts in Technical Trading
Systems.
Interpretation
The Parabolic SAR provides excellent exit points. You should
close long positions when the price falls below the SAR and close
short positions when the price rises above the SAR.
If you are long (i.e., the price is above the SAR), the SAR will
move up every day, regardless of the direction the price is
moving. The amount the SAR moves up depends on the amount that
prices move.
Formula:
It is beyond the scope of this document to explain the calculation
of the Parabolic SAR. Refer to Wilder's book New Concepts in
Technical Trading, for detailed calculation information.
developed by J. Welles Wilder Jr. and is described in his book
New Concepts in Technical Trading Systems.
The Parabolic SAR, like some other indicators, is a "cumulative"
measure where the most recent value depends on the amount of
history used to compute that value. So the differences you see
with another service might be related to the amount of data they
use to "prime" the measure. On StockFetcher we use a minimum of
2 years of data (if available) to compute these measures.
|
| Command: |
PE Ratio |
| Type: | Fundamental |
| Parameters: | NONE |
| Usage: |
• PE ratio |
| Components: | fundamental |
Example: |
| • MA(10) crossed above MA(50) within the last 2 days and PE Ratio below 20 |
| • High is above the upper bollinger band(20) and PE Ratio is above 50 |
Description: |
Fundamental measure based on the price to earnings ratio of the
company. The P/E Ratio may not be availble for all stocks
carried on StockFetcher.
Price per Share
---------------
Earnings Per Share
The price per share (numerator) is the market price of a single
share of the stock. The Earnings per share (denominator) is the
Net Income of the company for the most recent 12 month period,
divided by number of shares outstanding. The PE of a stock describes
the price of a share relative to the earnings of the underlying
asset. The lower the PE, the less you have to pay for the stock,
relative to what you can expect to earn from it. The higher the
PE the more over-valued the stock is.
For example, if a stock is trading at $24 and the Earnings per
share for the most recent 12 month period is $3, then the PE
ratio is 24/3=8. The stock is said to have a PE of 8 (or a multiple
of 8).
The PE is calculated primarily for common shares, not for
preferred shares. The appropriate calculation for preferreds is
the preferred dividend coverage ratio.
An easy and perhaps intuitive way to understand the concept is
with an analogy:
Let's say, I offer you a privilege to collect a dollar every
year from me forever. How much are you willing to pay for that
privilege now? Let's say, you are only willing to pay me 50
cents, because you may think that paying for that privilege
coming from me could be risky. On the other hand, suppose
that the offer came from Bill Gates, how much would you be
willing to pay him? Perhaps, your answer would be at least
more than 50 cents, let's say, $20. Well, the price earnings
ratio or sometimes known as earnings multiple is nothing more
than the number of dollars the market is willing to pay for a
privilege to be able to earn a dollar forever in perpetuity.
Obviously, Bill Gates's PE ratio is 20 and my PE ratio is 0.5.
But then, think about it this way. The PE ratio also tells
you how long it will take before you can recover your investment
(ignoring of course the time value of money). Had you invested
in Bill Gates, it would have taken you at least 20 years,
while investing in me could have taken you less than a year,
i.e. only 6 months.
The main reason to calculate PEs is for investors to compare the
value of stocks, one stock with another. If one stock has a PE
twice that of another stock, it is probably a less attractive
investment. But comparisons between industries, between countries,
and between time periods are dangerous. To have faith in a
comparison of PE ratios, you should be comparing comparable stocks.
If a stock has a relatively high PE ratio, let's say, 100, what
does this tell you? It tells you that you will never be able to
recover your investment in your lifetime, at least from dividend
earnings. But we see many stocks with such a high PE ratio. Why
then are people buying them? It's because people do not expect
to keep them for a long time. People are buying those stocks
because they think that the price will continue to ride high and
even appreciate. Therefore, stocks with extremely high P/E ratio
are considered "speculative".
A distinction has to be made between the fundamental (or intrinsic)
PE and the way we actually compute PEs. The fundamental or
intrinsic PE examines earnings forecasts. That is what was done
in the analogy above. In reality, we actually computed PEs using
the latest 12 month corporate earnings.
A related concept is the PEG ratio. This is the PE ratio adjusted
by a growth coefficient. It is sometimes used in high growth
industries and new ventures. Its use is controversial.
|
Example: |
| • show stocks where the PPO(10,50) crossed above 0 within the last 1 day |
| • show stocks where the PPO(10,100) has been increasing for 10 days |
Description: |
• Learn More
The Percent Price Oscillator (PPO) is computed by taking the
difference between two specified moving averages. Typical use
for the PPO is to detect potential trends in stocks.
![]() |
Example: |
| • show stocks where the PVO(10,50) crossed above 0 within the last 1 day |
| • show stocks where the PVO(10,100) has been increasing for 10 days |
Description: |
• Learn More
The Percent Volume Oscillator (PVO) computes the difference
between two average volume measures. This difference is then
converted to a percent by dividing the result by the value
from the second average volume specified.
Formula:
The percentage difference between two moving averages of volume.
The indicator is calculated with the following formula:
Volume Oscillator (%) - PVO = ((Vol 12-day EMA - Vol 26-day EMA)/Vol 12-day EMA) x 100
|
| Command: |
Pivot Points (PP, R1, S1, R2, S2) |
| Type: | indicator |
| Parameters: | NONE |
| Usage: |
• R1 • R2 • S1 • S2 • PP |
| Components: | price high low close |
| Developed by: | Tom DeMark - |
Example: |
| • show stocks where the High is above the R2 1 day ago |
| • show stocks where the close is more than 10% above the R1 1 day ago |
| • show stocks where the High 1 day ago is above the R2 2 days ago |
Description: |
These are standard support and resistance pivot point values.
Below are the formulas used:
PP = (High + Low + Close) / 3.0
S1 = 2 * PP - High
R1 = 2 * PP - Low
S2 = PP - (High - Low)
R2 = PP + (High - Low)
When referring to these values, use the days ago syntax to
calculate current position based on a previous value.
The Pivot Point is defined as the average of the high, low and
settlement price of the previous day. There are also two sets of
resistance/support levels. Pivot point is considered to be the
"equilibrium" point around which trading will occur if there is
no pressure on the stock. The first set of support/resistance
levels is usually used by daytraders to indicate short term
breakouts. The second set is geared more toward position traders.
|
| Command: |
Positive Volume Index (PVI) |
| Type: | Indicator |
| Parameters: | None |
| Usage: |
• PVI • postive volume index |
| Components: | market strength indicator volume |
| Developed by: | Norman Fosback - 1976 |
Example: |
| • show stocks where PVI crossed above CMA(PVI,247) |
Description: |
The Positive Volume Index (PVI), developed by Norman Fosback,
is affected by days where the volume has increased from the
previous day.
By analyzing only positive volume days, the PVI
attempts to detect days when the market is in a
"follow-the-leader" mode, or as Fosback indicates, the PVI
shows what the "not-so-smart" money is doing.
The Positive Volume Index (PVI) attempts to identify bull markets.
The PVI shows what the uninformed investors are doing, while the
Negative Volume Index shows what the smart investors are doing. It is
based on the assumption smart investors dominate trading on light
volume days and uninformed investors dominates trading on active days.
The PVI changes on days when the volume is up and stays flat on down
volume days.
Formula:
![]() • Amazon: Stock Market Logic by Norman G. Fosback
|
| Command: |
price (Open, High, Low, Close) |
| Type: | Price |
| Parameters: | NONE |
| Usage: |
• open • close • low • high |
| Components: | price open close high low |
Example: |
| • Close is between 15 and 40 |
| • Close is between 15 and 40 |
| • High is above 50 |
| • Open is above close |
| • Low is between 12 and 21 |
Description: |
Represents the basic daily price components of a stock.
|
| Command: |
Price and Volume Trend (PVT) |
| Type: | Indicator |
| Parameters: | [Period] |
| Usage: |
• PVT • average PVT(PERIOD) |
| Components: | market strength indicator volume price close |
| Developed by: | Tom DeMark - |
Description: |
Similar to On-balance-volume(OBV) the Price and Volume Trend
uses the volume to indicate possible trend changes. The PVT
differs from the OBV in that the change in price is used to
scale the volume.
The PVT also includes an optional average line that is an n-day
EMA of the PVT signal. This can be used to find cases where
the raw PVT has crossed above a particular average, possibly
signalling an change in trend.
PVT is calculated by adding a percentage of the volume when
prices close up and subtracting a percentage of volume when the
prices close down. The amount of volume added or subtracted to
the PVT is relative to the amount that prices rose or fell
compared to the previous day's close.
Formula:
![]() |
| Command: |
Primary-plot-size |
| Type: | Modifier |
| Parameters: | [] |
| Usage: |
• primary-plot-size is [NUMBER] |
| Components: | results |
Example: |
| • Show stocks where the MA(10) crossed above the MA(50) And primary-plot-size is 400 |
Description: |
The primary-plot-size keyword controls the height of the main
price plot for StockFetcher charts. By increasing the size of
the price plot it may be easier to view price patterns as well
as any measures plotted in the primary plot. The primary plot
size may range from 100 to 500 pixels. Below is an example
demonstrating this keyword.
Show stocks where the MA(10) crossed above the MA(50)
And primary-plot-size is 400
This setting can also be adjusted globally through the
"Chart Settings" on StockFetcher.
|
Description: |
Similar in purpose to Bollinger Bands, the Projection Bands
(developed by M. Widner) use the slope of the linear regression
line along with recent highs and lows to establish price
boundaries. Due to the algorithm, the price will never cross
the upper or lower band, but a move towards the upper band may
indicate a negative correction coming, while a move near the
lower may present a bullish opportunity.
Projection Bands were developed by Mel Widner, Ph.D. They were
originally introduced in the July 1995 issue of Technical
Analysis of Stocks and Commodities magazine.
Projection Bands are similar in concept to other types of bands
including moving average bands, Price Channels, Envelopes, and
Bollinger Bands. They also have some of the characteristics of
channel lines such as Raff Regression Channels.
Projection Bands are plotted by finding the minimum and maximum
prices over the specified number of days and projecting these
forward (parallel to a linear regression line). The resulting
plot consists of two bands representing the minimum and maximum
price boundaries. Prices will always be contained by the bands,
unlike Bollinger Bands.
Interpretation
Projections Bands are used much like other types of bands--they
help gauge the ebb and flow of optimism and pessimism. When
prices are at or near the upper band, extreme optimism is
indicated--look for prices to move down to more rational levels.
Likewise, when prices are at or near the lower band, extreme
pessimism is indicated--look for prices to move up to more rational
levels.
It is recommended that all band generated signals be confirmed by
other indicators, because prices will often ride along a band for
an extended amount of time during strong trending markets. During
trending markets, you can use bands to trade short-term reactions
against the primary trend. In trading range markets, you can use
the bands to trade overbought/oversold levels. Indicators like the
VHF, CMO, and r-squared can be used to gauge the trendiness of the
market.
Formula:
![]() |
| Command: |
Projection Oscillator |
| Type: | Indicator |
| Parameters: | [Period] |
| Usage: |
• projection oscillator(PERIOD) |
| Components: | price close |
| Developed by: | Mel Widner - |
Description: |
The Projection Oscillator (developed by M. Widner) measures
the distance of the closing value within the current
Projection Bands. When the close is near or approaching 0,
that translates to a close which is near the lower projection
band. A value near or approaching 100 indicates the close is
approaching the upper projection band.
The projection oscillator is useful to screen for stocks that
are moving close to either the upper or lower projection band.
The valid range for this measure is 0-100.
![]() |
Description: |
Developed by Tushar Chande, the QStick indicator measures an
average of the distance between the open and close over a given
period. By measuring the open and close, the QStick provides
insight into the price candlesticks over the given period and
whether a majority are filled or unfilled.
Along with the raw QStick measure is a smoothed version of the
signal. StockFetcher uses an EMA of the QStick as this smoothed
value.
Two parameters are used with the QStick. The first parameter
is the period of time used to compute average of the difference
between the open and close. The second parameter is the period
used for the smoothing EMA of the raw QStick signal.
Interpretation
Qstick values below zero indicate a majority of black candlesticks
(over the time periods specified) and therefore a bearish bias
for the security. Values above zero indicate a majority of white
candlesticks (over the time periods specified) and therefore a
bullish bias for the security.
There are several ways to trade the Qstick indicator:
Crossovers: Buy when the indicator crosses above zero. Sell when
it crosses below zero.
Extreme Levels: Buy when the Qstick indicator is at an extremely
low level and turning up. Sell when the Qstick indicator is at an
extremely high level and turning down. You may even want to plot
a short-term moving average on the Qstick to serve as a trigger
line.
Divergences: Buy when the Qstick is moving up and prices are moving
down. Sell when the Qstick is moving down and prices are moving
up. You may want to consider waiting for the price to confirm the
new direction before placing the trade.
For more information on the Qstick indicator, refer to the book
The New Technical Trader by Tushar Chande and Stanley Kroll.
|
Description: |
The reached a new high or low phrase can help create filters that
are trading outside of normal bounds of price or an indicator.
Additionally, by using the optional argument at the end of the
phrase, the actual record value could have occurred in the last
few days. This allows a user to look for stocks that, while not
at a particular record value, are very close to it in time.
For the "52 week high" or "3 month low" style filters. You can now
use these values to determine resistance points or find recent
breakouts. Also, you can take advantage of these features to
find stocks restricted to particular ranges. Below are some
examples:
Traditional Filters:
Find stocks where the High reached a new 52 week high
Find stocks where the Low reached a new 3 month low
Find stocks where the close reached a new 52 week high within
the last 6 days
Ranges:
Find stocks where the CCI(14) 1 week high is below -100 and the
CCI(14) 1 week low is above -250
Find stocks where the close is less than 5 percent below the
26 week high
Find stocks where the close is less than 2 percent above the
low 52 week low
Find stocks where the close is more than 100 percent above the
52 week low
Drawing:
Show stocks between 10 and 15 and draw momentum 3 month high
and draw momentum 3 month low
|
Description: |
• Learn More
The Relative Strength Index ("RSI") is a popular oscillator. It
was first introduced by Welles Wilder in an article in Commodities
(now known as Futures) Magazine in June, 1978. Step-by-step
instructions on calculating and interpreting the RSI are also
provided in Mr. Wilder's book, New Concepts in Technical Trading
Systems.
The name "Relative Strength Index" is slightly misleading as the
RSI does not compare the relative strength of two securities, but
rather the internal strength of a single security. A more
appropriate name might be "Internal Strength Index." Relative
strength charts that compare two market indices, which are often
referred to as Comparative Relative Strength.
Interpretation
When Wilder introduced the RSI, he recommended using a 14-day RSI.
Since then, the 9-day and 25-day RSIs have also gained popularity.
Because you can vary the number of time periods in the RSI
calculation, I suggest that you experiment to find the period
that works best for you. (The fewer days used to calculate the
RSI, the more volatile the indicator.)
The RSI is a price-following oscillator that ranges between 0
and 100. A popular method of analyzing the RSI is to look for a
divergence in which the security is making a new high, but the
RSI is failing to surpass its previous high. This divergence is
an indication of an impending reversal. When the RSI then turns
down and falls below its most recent trough, it is said to have
completed a "failure swing." The failure swing is considered a
confirmation of the impending reversal.
In Mr. Wilder's book, he discusses five uses of the RSI in
analyzing commodity charts. These methods can be applied to other
security types as well.
• Tops and Bottoms - The RSI usually tops above 70 and
bottoms below 30. It usually forms these tops and
bottoms before the underlying price chart.
• Chart Formations - The RSI often forms chart patterns
such as head and shoulders (page 215) or triangles
that may or may not be visible on the price chart.
• Failure Swings - (also known as support or resistance
penetrations or breakouts). This is where the RSI surpasses
a previous high (peak) or falls below a recent low (trough).
• Support and Resistance - The RSI shows, sometimes more
clearly than price themselves, levels of support and
resistance.
• Divergences - As discussed above, divergences occur when the
price makes a new high (or low) that is not confirmed
by a new high (or low) in the RSI. Prices usually correct
and move in the direction of the RSI.
For additional information on the RSI, refer to Mr. Wilder's book.
The smoothed RSI simply takes the RSI and applies an exponential moving average.
Therefore these to indicators are the same: Smoothed RSI(15,3) and CEMA(RSI(15), 3)
Formula:
The RSI is a fairly simple formula, but is difficult to explain
without pages of examples. Refer to Wilder's book for additional
calculation information. The basic formula is:
![]() |
Example: |
| • show stocks where RVI(14,10) crossed above 40 |
| • show stocks where the RVI(14,10) crossed below 60and the RVI(14,10) 1 day ago was above 60 for the last 5 days |
Description: |
The Relative Volatility Index (RVI) was developed by Donald
Dorsey. It was originally introduced in the June 1993 issue of
Technical Analysis of Stocks and Commodities magazine (TASC).
A revision to the indicator was covered in the September 1995
issue.
The RVI is used to measure the direction of volatility. The
calculation is identical to the Relative Strength Index (RSI)
except that the RVI measures the standard deviation of daily
price changes rather than absolute price changes.
Interpretation
When developing the RVI, Dorsey was searching for a confirming
indicator to use with traditional trend-following indicators
(such as a dual moving average crossover system). He found that
using a momentum-based indicator to confirm another repackaged?
momentum-based indicator is usually ineffective.
Dorsey made this clear in the June 1993 TASC article:
Technicians are tempted to use one set of indicators to
confirm another. We may decide to use the MACD to confirm a
signal in Stochastic... Logic tells us that this form of
diversification will enhance results, but too often the
confirming indicator is just the original trading indicator
repackaged, each using a theory similar to the other to
measure market behaviour... Every trader should understand
the indicators being applied to the markets to avoid
duplicating information.?
When testing the profitability of a basic moving average crossover
system, Dorsey found that the results could be significantly
enhanced by applying the following RVI rules for confirmation.
Similar rules are likely to be effective for other momentum or
trend following indicators.
• Only act on buy signals when RVI > 50.
• Only act on sell signals when RVI < 50.
• If a buy signal is ignored, enter long if RVI > 60.
• If a sell signal is ignored, enter short if RVI < 40.
• Close a long position if RVI falls below 40.
• Close a short position if RVI rises above 60.
Because the RVI measures a different set of market dynamics than
other indicators, it is often superior as a confirming indicator.
As Dorsey states:
There is no reason to expect the RVI to perform any better
or worse than the RSI as an indicator in its own right. The
RVIs advantage is as a confirming indicator because it
provides a level of diversification missing in the RSI.?
On StockFetcher, the first parameter to the RVI is the period
used in the RSI-like computation. The second parameter is the
number of days used to compute the standard deviation. The
resulting values, as with the RSI, range from 0 to 100.
![]() |
| Command: |
R-Squared |
| Type: | Indicator |
| Parameters: | [Period] |
| Usage: |
• r-squared(30) |
| Components: | price close |
| Developed by: | Stanley Kroll - |
| Developed by: | Tushar Chande - |
Example: |
| • show stocks where r-squared(30) reached a new 6 month high and close is above 5 |
Description: |
• Learn More
The R-Squared or R2 indicator reflects the strength of a trend. The
closer prices move in a linear relationship with the passing of time,
the stronger the trend. R-Squared indicates the percentage of
movement that is caused by linear regression.
|
| Command: |
Sector is |
| Type: | sector |
| Parameters: | None |
| Usage: |
• sector is [SECTOR] • sector is not [SECTOR] |
| Components: | sector fundamental |
Example: |
| • Price is between 5 and 7 and sector equals 1 and add column sector description and add column sector and sort column 5 descending |
Description: |
Currently Stockfetcher supports the m
You can filter by sector by name or by the number of the sector.
A simple way to filter for sector is like this
Price is between 5 and 7
and sector equals 1
and add column sector description
and add column sector
and sort column 5 descending
where sector number is:
1 - Consumer Non-Cyclical
2 - Financial
3 - Basic Materials
4 - Healthcare
5 - Energy
6 - Technology
7 - Services
8 - Transportation
9 - Capital Goods
10 - Utilities
11 - Consumer Cyclical
Thanks to xplorer for discovering sectors can be filtered by
number.
|
| Command: |
set User-Defined Variables |
| Type: | Variable |
| Parameters: | [none] |
| Usage: |
• set{VAR_NAME, EXPRESSION} |
| Components: | core |
Example: |
| • set{var1,close - open} set{var2,high - low} set{var3,var1 / var2} set{var4,var3 * 100} show stocks where var4 is above 90 and var2 is above 0.50 |
Description: |
user-defined variables are advanced methods for creating screens.
Through the userdefined variables, you can create complex
expressions and formulas to assist in your screening needs.
The basic example below finds stocks trading in the top 90% of
their current day range: set{range,high - low}
set{closepos,close - low} set{ratio,closepos / range}
Show stocks where the ratio is above 0.90
Variable names should start is [a-z] or [A-Z] to be valid.
It seems Stockfetcher is loose on this rule but to be safe
you should follow this rule.
Thread
Syntax The user-defined variables have two purposes. First,
provide shortened names for indicators or measures used in a
filter. Second, create complex arithmetic operations that would
normally require nesting. The actual format of the set{...}
command is: set{variable,measure}
set{variable,measure [+-*/] measure} Note that the syntax above
only allows for binary and unary operations. Additionally,
you can substitute previously defined variables for any of the
measures indicated above. Below is an example which discovers
stocks whose open to close change is more than 90% of the total
trading range (creating a large white candle body):
set{var1,close - open} set{var2,high - low}
set{var3,var1 / var2} set{var4,var3 * 100}
show stocks where var4 is above 90 and var2 is above 0.50
Tips First, remember that the user-defined variable
is an advanced feature that you may not even need to use.
Typically, the user-defined variables are necessary when you
have a particular computation that you need. For common
screening tasks, other readily available filtering syntax
should likely do the trick for you. Next, the user-defined
variables are not aliases for screening logic. That is, they
can not be used to store actual filtering logic. Below is a
table which shows operations that are perfect for the
user-defined variables, as well as logic that should not be
used in the user-defined variables.
|
| Command: |
Shares Outstanding |
| Type: | Fundamental |
| Parameters: | None |
| Usage: |
• shares outstanding |
| Components: | fundamental |
Description: |
• Learn More
• Learn More
Shares Outstanding value is represented in millions. For example,
if you wanted to screen for stocks with more than 1 billion shares
outstanding:
show stocks where shares outstanding is above 1000
Using this measure, you can now create a market capitalization
measure. For example:
set{market_cap, shares outstanding * close}
show stocks where market_cap is above 1000
and add column market_cap
Again, since shares outstanding is in millions, the "1000" above
represents "one thousand million" or "one billion."
|
| Command: |
Slope of |
| Type: | Math |
| Parameters: | NONE |
| Usage: |
• slope of |
| Components: |
Example: |
| • Show stocks where the 50 day slope of the close is above 1.0 |
| • show stocks where the 25 day slope of the RSI(15) is below -0.50 |
Description: |
• Learn more about slope
Slope is a simple indicator equal to the change in values divided
by the number of time periods. A positive slope begins low and
rises over time with a steeper rise illustrating a greater slope.
A negative slope begins high and declines over time with a steeper
decline illustrating a more negative slope.
Slope 0 - indicates no change (-)
Slope 1 - 45 degree rising (/)
Slope -1 - 45 degree declining (\) (aka 315 degrees)
The slope of feature allows you to search for stocks where a
measure or indicator has trended up or down over a particular
period of time. Here is an example where the slope of the closing
prices is computed:
Show stocks where the 50 day slope of the close is above 1.0
Sample chart:
![]() Some information about the slope of ... feature:
• The length of time used for computing the slope is variable
depending on the length of the trend that is needed.
• Any measure may be used as input.
For example:
show stocks where the 25 day slope of the RSI(15) is below -0.50
• Values above 0 indicate an uptrending measure. Positive values
above 1.0 indicate the measure has effectively doubled from start
to the end.
• Values below 0 indicate a measure which is trending down.
• Values near 0 mean that the measure is moving horizontally.
This does not mean the values didn't move up or down during the
specified time interval, just that the start point is near the
end point.
Slope Equation:
![]() |
Example: |
| • Smoothed Rate of Change crossed above 100 within the last 1 day |
| • SmROC(13,21) has been decreasing for 10 days |
| • SmROC(13,21) has reached a new 26 week high |
Description: |
• Learn More
Developed by Fred G. Schutzman, the smoothed rate of change is
different from the typical rate of change by using an EMA as
opposed to closing values for computing the rate of change. By
using the EMA, as opposed to price, the resulting ROC signal
does not succumb to rapid changes triggered by the price.
Formula:
![]() ![]() |
| Command: |
Sort Column |
| Type: | Temporal |
| Parameters: | [] |
| Usage: |
• sort column [ID] {descending, ascending} |
| Components: | results |
Example: |
| • Show stocks where the MA(10) crossed above the MA(50) and add column RSI(14) and sort column 5 ascending |
Description: |
By default StockFetcher returns stock screen results in order of
highest to lowest volume. You can change this sorting manually
by clicking on any of the column headers in your filter results.
Additionally, using the sort column feature, you can have the
initial filter results arrive using the sorting you want.
For example:
Show stocks where MA(10) crossed above MA(50)
and sort column 1 descending
The column numbers begin with "1" (which is the ticker symbol),
so the example above will return all results sorted in descending
order based on ticker symbol. Below is a table listing the
default columns and associated column numbers.
• Ticker Symbol 1
• Last Price (Close) 2
• Percent Change 3
• Volume 4
• User Defined 5+
The sort column feature also allows you to automatically sort
based on any additional columns you add using the add column
feature.
Show stocks where the MA(10) crossed above the MA(50)
and add column RSI(14)
and sort column 5 ascending
You can also set your default sorting through the Settings
options on StockFetcher.
|
Description: |
• Learn More
The standard deviaition is a statistical measure indicating how
much a set of data is changing over a given period of time.
StockFetcher provides two different standard deviation measures
(along with a simple moving average of each.) The normalized
standard deviation divides the standard deviation results by
the average of the closing prices as an attempt to perform some
normalization to the values.
![]() |
Example: |
| • Stochastic Momentum(5,3,1) crossed above 0 within the last 1 day |
| • smi(25,13,2) crossed reached a new 5 week high |
Description: |
The Stochastic Momentum indicator varies slightly from the
standard stochastic measure in that the closing values are
compared with the average of the extreme highs and lows, as
opposed to the high value. The three periods used in this
measure are the period of the %K line, the period of the %D
line and then a smoothing period.
|
Example: |
| • Stochastic Momentum(5,3,1) crossed above 0 within the last 1 day SMI(25,13,2) crossed reached a new 5 week high |
Description: |
The Stochastic Momentum Index (SMI) is based on the Stochastic Oscillator.
The difference is that the Stochastic Oscillator calculates where the close
is relative to the high/low range, while the SMI calculates where the close
is relative to the midpoint of the high/low range. The values of the SMI range
from +100 to -100. When the close is greater than the midpoint, the SMI is above
zero, when the close is less than than the midpoint, the SMI is below zero.
The SMI is interpreted the same way as the Stochastic Oscillator. Extreme
high/low SMI values indicate overbought/oversold conditions. A buy signal
is generated when the SMI rises above -50, or when it crosses above the
signal line. A sell signal is generated when the SMI falls below +50, or
when it crosses below the signal line. Also look for divergence with the
price to signal the end of a trend or indicate a false trend.
![]() |
Example: |
| • Show stocks where the Double Stochastic(10,3) is below 20 |
Description: |
A variation of the standard stochastic oscillator, the double
stochastic is computed through a two step process. First,
the standard stochastic oscillator is computed
(see Stochastics). Then, an n-day exponential moving average
(EMA) of the stochastic oscillator is fed back into the
stochastic computation. Finally, one more EMA is taken of the
resulting values.
|
Example: |
| • show stocks where the Stochastic %K(15,5,3) crossed above the Stochastic %D(15,5,3) |
Description: |
The Full Stochastic Oscillator is simply the standard Stochastic
Oscillator, except a third parameter is allowed. This third
parameter is used as a smoothing period applied to the %K. This
additional period is actually what differentiates the "Fast
Stochastic" from the "Slow Stochastic". In the "Fast Stochastic"
the additional period is "1", while the "Slow Stochastic" uses
a period of "3".
|
Description: |
A popular oscillator for detecting oversold/overbought
conditions, the fast and slow stochastics uses recent extreme
highs and lows, over the specified last days, in relation to
the most recent close to determine these conditions.
The two components of either the Fast Stochastic or the Slow
Stochastic are the %K and the %D. The %K, or fast signal
examines the difference between the most recent close and the
extreme low versus the difference between the extreme high and
low over the specified period. The %D, or slow line, is a
moving average of the %K line.
The difference between the Fast Stochastic and the Slow
Stochastic depends on a slowing factor. The slowing factor,
usually 3, is applied to the %K to smooth, or slow the signal
down.
Common buy interpretations of the stochastics involve watching
when one of the lines falls below 20 and then rises above that
value. Another popular method involves buying when the faster
%K line rises above the slower %D and then selling on the next
crossover (%K falls back below the %D.)
Formula:
![]() |
| Command: |
StochRSI |
| Type: | Indicator |
| Parameters: | [period, rsi period] |
| Usage: |
• stochRSI(PERIOD1, PERIOD2) |
| Components: | oscillator price close low high |
| Developed by: | Tushard Chande - |
| Developed by: | Stanley Kroll - |
Example: |
| • show stocks where the StochRSI(14,14) is below 0.2 and draw RSI(14) |
| • show stocks where the StochRSI(14,14) crossed below 0.50 |
Description: |
• Learn More
The StochRSI is an oscillator similar in computation to the
stochastic measure, except instead of price values as input,
the StochRSI uses RSI values. The StochRSI computes the current
position of the RSI relative to the high and low RSI values
over a specified number of days. The intent of this measure,
designed by Tushard Chande and Stanley Kroll, is to provide
further information about the overbought/oversold nature of
the RSI.
The StochRSI ranges between 0.0 and 1.0. Values above 0.8 are
generally seen to identify overbought levels and values below
0.2 are considered to indicate oversold conditions.
Sto.chas.tic (sto kas'tik) adj. 2. Math. designating a process
having an infinite progression of jointly distributed random
variables.
- Webster's New World Dictionary
The Stochastic Oscillator compares where a security's price closed
relative to its price range over a given time period.
Interpretation
The Stochastic Oscillator is displayed as two lines. The main
line is called "%K." The second line, called "%D," is a moving
average of %K. The %K line is usually displayed as a solid line
and the %D line is usually displayed as a dotted line.
There are several ways to interpret a Stochastic Oscillator. Three
popular methods include:
1. Buy when the Oscillator (either %K or %D) falls below a
specific level (e.g., 20) and then rises above that level.
Sell when the Oscillator rises above a specific level
(e.g., 80) and then falls below that level.
2. Buy when the %K line rises above the %D line and sell when
the %K line falls below the %D line.
Look for divergences. For example, where prices are making
a series of new highs and the Stochastic Oscillator is
failing to surpass its previous highs.
Formula:
![]() |
Description: |
support / resistance Parameters: Period - Amount of time to
search for support or resistance. Min Distance - Minimum number
of days required between two points making up support or
resistance. Open Period - Number of days at the end of the
chart to allow for breaking of support or resistance. We have
added a new feature that automatically finds support and
resistance lines. This will allow you to search for stocks that
have either broken or testing these levels.
There are 3 parameters to the support and resistance feature.
Below is an explanation of the parameters:
• Period - Amount of time to search for support or
resistance.
• Min Distance - Minimum number of days required
between two points making up support or resistance.
• Open Period - Number of days at the end of the
chart to allow for breaking of support or resistance.
You can also access the support or resistance slope through the
phrases support slope or resistance slope. The slope can
further refine whether you want an increasing or decreasing
line for the support or resistance.
|
| Command: |
T3 Moving Average |
| Type: | Indicator |
| Parameters: | [Period, Damping Coefficient] |
| Usage: |
• T3(PERIOD, COEFFICIENT) |
| Components: | price close |
| Developed by: | Tim Tillson - 1998 |
Example: |
| • show stocks where close has been above T3(5,0.7) for the last 2 days |
Description: |
Developed by Tim Tillson the T3 moving average is a smoothing
technique that is intended to produce more effective and
accurate signals. The T3 computes 6 successive EMA's on the
closing values for a stock.
The actual formula for T3 is elaborate, the result of cubing the
function
(1+a)x - ax2
where a is the percentage of amplification of the filters response
to price movement (creator Tim Tillson calls it the volume factor)
and x is the price smoothed using a moving average of a period you
specify.
Here is the expanded formula where 'a' is the damping coefficient
or second parameter.
-a^3 * EMA6 + (3a^2 + 3a^3) * EMA5 + (-6a^2 - 3a - 3a^3) * EMA4 + (1 + 3a + a^3 + 3a^2) * EMA3
T3 plots a smoothed moving average line whose value falls anywhere
between the double exponential moving average calculation (DEMA)
and an exponential moving average (EMA). IE/2 plots a moving
average that is derived from evenly splitting a combination of
the integral of the linear regression slope (ILRS) and the endpoint
moving average (EPMA). Both indicators include a basic alert
criteria that is triggered when the close crosses above/below
the smooth plotted value.
The basis of the calculation for the T3 indicator occurs in a
function referred to as GD. This function handles the calculation
known as generalized DEMA. The T3 indicator will handle the
multiple smoothing of the generalized DEMA.
For more information see January. 1998 issue of TASC, p57,
"Smoothing Techniques for More Accurate Signals", by Tim Tillson.
Tim Tillson writes:
Both EMA(11) and EMA(3)5 have five days of lag with respect to
linear input, EMA(3)5 does have more lag when the input has
spectral content (such as a sine or sawtooth wave).
The compensation for this extra lag is that EMA(3)5 is much less
noisy than EMA(11). I computed both on over two years of
Hewlett-Packard [HWP] closes, then took the one-period rate of
change of each. I then divided the number of days of data by the
number of times each derivative crossed the zero line. EMA(11) had
an average of 5.653 days/crossing, where EMA(3)5 had an average
of 11.4 days/crossing, meaning that it is about half as noisy
(in terms of potential trading whipsaws) on real data.
|
| Command: |
TD Range Expansion Index (TDREI) |
| Type: | Indicator |
| Parameters: | [period] |
| Usage: |
• TDREI(PERIOD) |
| Components: | price high low close |
| Developed by: | Thomas DeMark - 1997 |
Example: |
| • Show stocks where the TDREI(5) is below 20 Show stocks where the TDREI(12) crossed above 70 |
Description: |
The TD Range Expansion Index (TDREI), developed by Thomas DeMark
[DeMark 1997], is an oversold/overbought measure that uses
successive high and low values from several past days in the
computation. The computation uses a complex set of look-backs
to generate the actual index from high, low and closing values.
The actual computation of this measure is not included here.
|
Description: |
Triangle patterns are based on support and resistance levels and
how these levels either remain the same or reveal some trend. Two
parameters may be specified when creating a triangle-based
screen. The first parameter is the length, in days, of the
pattern. The second parameter may be used to specify a window of
time that allows for breaking the triangle pattern. This window
can be used to detect stocks that were trading in a particular
triangle pattern, but have recently violated one or more of the
triangle properties.
The ascending triangle is based on a flat upper resistance, while
the lower support levels are steadily increasing. So, over the
specified period of time, the stock is making "higher lows" while
at the same time, the high prices are relatively stable.
Descending triangles reverse the logic in the ascending triangles.
Now the relative high prices are becoming successively lower,
while the low prices remain near constant levels.
Symmetric triangles employ the notion that while the stock is
making lower highs, it is also making higher lows. This creates
the case where both the resistance and support are converging
towards each other.
Diverging triangles are essentially the opposite of the symmetric
triangle. To match this pattern stocks need to be creating higher
highs, while at the same time making lower lows. This pattern
results in stocks that are increasing in volatility.
Below is a sample chart demonstrating the ascending triangle
pattern:
![]() Abbreviations:
• SYMTRI
• ASCTRI
• DIVTRI
• DSCTRI
• Lower 3x5ATR
Others:
• Lower Descending Triangle
• Lower Diverging Triangle
• Upper Descending Triangle
• Upper Diverging Triangle
• symmetric triangle top
• upper symmetric triangle
• symmetric triangle upper
|
Description: |
• Learn More
The TRIX is an oscillator developed by Jack Huton which uses a
triple-smoothed EMA to produce a resulting signal that is
fairly tolerant to recent volatile price moves. This ability
to ignore recent volatility produces a trend oscillator that
can assist in following current trends.
The construction of the TRIX requires a single period.
Essentially, 3 successive EMA's are computed from this period.
In addition to the primary TRIX signal, a smoothed signal is
presented along with the TRIX that further reduces volatility.
This smoothing is an n-day EMA of the raw TRIX value.
Finally, StockFetcher also provides a TRIX Histogram. Which,
similar to the MACD Histogram, measures the difference between
the TRIX signal and the smoothed , or slower, EMA of the TRIX.
|
Example: |
| • TSI(25,13,9) crossed above Smoothed TSI(25,13,9) |
| • TSI Histogram(25,13,9) is above 0 and TSI(25,13,9) is below 0 |
Description: |
The TSI is a momentum indicator devloped by William Blau. The
TSI first creates a double EMA of the difference between the
daily closing values. This value is divided by the double-smoothed
absolute difference of the daily closing values. The raw signal
is accompanied by a smoothed version and a histogram illustrating
the differ! ence between the two values.
• Amazon: Momentum, Direction, and Divergence By William Blau
|
| Command: |
TSF |
| Type: | Indicator |
| Parameters: | NONE |
| Usage: |
• |
| Components: | price |
Example: |
| • /* Modify the 14 to the period of interest. */ set{TSF, LRI(14) + LRS(14)} draw TSF on plot price |
Description: |
• Learn More
• Learn More
• Learn More
• Learn More
The Time Series Forecast indicator displays the statistical trend of a security's price over a specified
time period. The trend is based on linear regression analysis. Rather than plotting a straight linear
regression trendline, the Time Series Forecast plots the last point of multiple linear regression
trendlines. The resulting Time Series Forecast indicator is sometimes referred to as the
"moving linear regression" indicator or the "regression oscillator."
Interpretation
The interpretation of a Time Series Forecast is identical to a moving average. However, the Time Series
Forecast indicator has two advantages over classic moving averages.
Unlike a moving average, a Time Series Forecast does not exhibit as much delay when adjusting to price
changes. Since the indicator is "fitting" itself to the data rather than averaging them, the
Time Series Forecast is more responsive to price changes.
As the name suggests, you can use the Time Series Forecast to forecast the next period's price. This
estimate is based on the trend of the security's prices over the period specified (e.g., 20 days).
If the current trend continues, the value of the Time Series Forecast is a forecast of the next period's
price.
|
| Command: |
TTF |
| Type: | Indicator |
| Parameters: | NONE |
| Usage: |
• 15dayTTF above 100 |
| Components: | price close |
| Developed by: | M.H. Pee - 2004 |
Description: |
• Learn More
M.H. Pee's article "Trend Trigger Factor" in the December 2004 issue presents his
trend trigger factor (TTF) indicator, which is a method of detecting uptrends and downtrends using a
15-day buy power and 15-day sell power calculation. Pee also provides sample criteria that can be used
to create an always-in-the-market reversal strategy based on the TTF indicator.
Whether you're trading short term or long term, the only way to make money in the market is to position
yourself in the direction of the trend.
The markets are mostly random, but they do have a small trend component. It is this trend component that
you should take advantage of if you want to make money in the markets. I don't mean you should buy at
the bottom of a trend and sell at the top by predicting exactly when it will start and when it will end.
What you should do is follow the trend and ride it along until you see weakness. The further the market
moves from your entry price in your direction, the more you will make; the stronger the trend, the more
opportunity you will have to make a larger profit.
DEFINITION
To keep you trading with the trend, I designed an indicator called the trend trigger factor (TTF) that
will help you be long in an uptrend and short in a downtrend. This indicator allows you to follow the
trend and capitalize on that rare nonrandom trend component of the markets.
I will illustrate the calculation of the TTF by using a 15-day parameter. Before going any further, I
will first define the TTF's signals: buy power and sell power. If you were to label today as day 1,
yesterday as day 2, the day before yesterday as day 3, and so on, then the buy power and sell power are
as follows:
15-day buy power = Highest high of (day 1 to day 15 inclusive) ? Lowest low of (day 16 to day 30 inclusive)
15-day sell power = Highest high of (day 16 to day 30) ? Lowest low of (day 1 to day 15)
After calculating these variables, you can move on to calculating the TTF:
15-day TTF = ((Buy power ? sell power)/(0.5*(Buy power + sell power))) * 100
The denominator of the TTF is actually the average range of two 15-day periods, in which the first period
refers to day 1 through day 15 and the second period refers to day 16 through day 30, as shown below:
0.5*(Buy power + sell power)
= 0.5*((Highest high of first period ? Lowest low of second period) +
(Highest high of second period ? Lowest low of first period))
= 0.5*((Highest high of first period ? Lowest low of first period) +
(Highest high of second period ? Lowest low of second period))
= ((Range of first period) + (Range of second period))/2
= Average of the ranges in the first and second periods
![]() /* TTF Trend Trigger Factor, Buy Power, Sell Power */
/* From TASC pg.28 12/04 by M.H. Pee */
set{buyPower1, high 15 day high}
set{buyPower2, low 15 day low 15 days ago}
set{15dayBuyPower, buyPower1 minus buyPower2}
set{sellPower1, high 15 day high 15 days ago}
set{sellPower2, low 15 day low}
set{15daySellPower, sellPower1 - sellPower2}
set{scratch1, 15dayBuyPower - 15daySellPower}
set{scratch2, 15dayBuyPower + 15daySellPower}
set{scratch3, scratch2 * .5}
set{scratch4, scratch1 / scratch3}
set{15dayTTF, scratch4 * 100}
AND price above 1
AND 15dayTTF above 100
AND volume above 100000
AND draw buyPower1 on plot price
AND draw buyPower2 on plot price
AND draw 15dayBuyPower
AND draw 15daySellPower on plot 15dayBuyPower
AND draw 15dayTTF
AND add column 15dayTTF column 5
|
| Command: |
Ultimate Oscillator |
| Type: | Indicator |
| Parameters: | [Fast Period, Medium Period, Slow Period] |
| Usage: |
• |
| Components: | momentum indicator oscillator price close |
| Developed by: | Larry Williams - |
Description: |
• Learn More
Oscillators typically compare a security's (smoothed) price with
its price x-periods ago. Larry Williams notes that the value of
this type of oscillator can vary greatly depending on the number
of time periods used during the calculation. Thus, he developed
the Ultimate Oscillator that uses weighted sums of three
oscillators, each of which uses a different time period.
The three oscillators are based on Williams' definitions of buying
and selling "pressure".
Interpretation
Williams recommends that you trade following a divergence and a
breakout in the Ultimate Oscillator's trend.
A bullish divergence occurs when the security's price makes a
lower low that is not confirmed by a lower low in the Oscillator.
A bearish divergence occurs when the security's price makes a
higher high that is not confirmed by a higher high in the
Oscillator.
|
| Command: |
Vertical Horizontal Filter (vhf) |
| Type: | Indicator |
| Parameters: | NONE |
| Usage: |
• VHF |
| Components: | price close |
| Developed by: | Adam White - 1991 |
Example: |
| • price between 1 and 5 and draw vhf |
| • show stocks where vhf has been increasing for 10 days |
| • show stocks where vhf is near 1 |
Description: |
• Learn More
Vertical Horizontal Filter (VHF) was created by Adam White to identify
trending and ranging markets. VHF measures the level of trend activity,
similar to ADX in the Directional Movement System. Trend indicators
can then be employed in trending markets and momentum indicators in
ranging markets.
Vertical Horizontal Filter does not, itself, generate trading signals,
but determines whether signals are taken from trend or momentum
indicators.
• Rising values indicate a trend.
• Falling values indicate a ranging market.
• High values precede the end of a trend.
• Low values precede a trend start.
The Vertical Horizontal Filter ("VHF") determines whether prices are
in a trending phase or a congestion phase.
The VHF was first presented by Adam White in an article published in
the August, 1991 issue of Futures Magazine.
Interpretation
Probably the biggest dilemma in technical analysis is determining if
prices are trending or are in a trading-range. Trend-following indicators
such as the MACD and moving averages are excellent in trending markets,
but they usually generate multiple conflicting trades during trading-range
(or "congestion") periods. On the other hand, oscillators such as the
RSI and Stochastics work well when prices fluctuate within a trading
range, but they almost always close positions prematurely during
trending markets. The VHF indicator attempts to determine the
"trendiness" of prices to help you decide which indicators to use.
There are three ways to interpret the VHF indicator:
1. You can use the VHF values themselves to determine the degree
that prices are trending. The higher the VHF, the higher the
degree of trending and the more you should be using
trend-following indicators.
2. You can use the direction of the VHF to determine whether a
trending or congestion phase is developing. A rising VHF
indicates a developing trend; a falling VHF indicates that
prices may be entering a congestion phase.
3. You can use the VHF as a contrarian indicator. Expect congestion
periods to follow high VHF values; expect prices to trend
following low VHF values.
Formula
To calculate the VHF indicator, first determine the highest closing
price ("HCP") and the lowest closing price ("LCP") over the specified
time period (often 28-days).
HCP = Highest closing price in n-periods
LCP = Lowest closing price in n-periods
Next, subtract the lowest closing price from the highest closing price
and take the absolute value of this difference. This value will be the
numerator.
Numerator = Absolute value of (HCP - LCP)
To determine the denominator, sum the absolute value of the difference
between each day's price and the previous day's price over the specified
time periods.
Denominator = E (n, j=1) Absolute value of (close j - close j-1)
The VHF is then calculated by dividing the previously defined numerator
by the denominator.
VFH = Numerator / Denominator
![]() |
| Command: |
Volume |
| Type: | Indicator |
| Parameters: | [PERIOD] |
| Usage: |
• volume • average volume(PERIOD) |
| Components: | market strength indicator volume |
Example: |
| • Volume has been increasing for 3 days |
| • average volume(90) is above 100000 |
Description: |
Number of shares traded for the a given stocks on a particular day.
|
| Command: |
Volume Rate of Change (VROC) |
| Type: | Indicator |
| Parameters: | [Period] |
| Usage: |
• volume rate of change • Volume ROC(PERIOD) • VROC(PERIOD) |
| Components: | market strength indicator volume |
Example: |
| • Show stocks where the volume ROC has been increasing for 4 days |
| • Show stocks where the volume rate of change has reached a new 1 year high |
Description: |
The Volume Rate-of-Change ("ROC") is calculated identically to the
Price ROC, except it displays the ROC of the security's volume,
rather than of its closing price.
Interpretation
Almost every significant chart formation (e.g., tops, bottoms,
breakouts, etc) is accompanied by a sharp increase in volume. The
Volume ROC shows the speed at which volume is changing.
Additional information on the interpretation of volume trends can
be found in the discussions on Volume and on the Volume Oscillator.
Formula:
The Volume Rate-Of-Change indicator is calculated by dividing the
amount that volume has changed over the last n-periods by the volume
n-periods ago. The result is the percentage that the volume has
changed in the last n-periods.
If the volume is higher today than n-periods ago, the ROC will
be a positive number. If the volume is lower today than n-periods
ago, the ROC will be a negative number.
VROC = [(Today's Volume - (Today - n periods Volume))/(Today - n periods Volume)] * 100
|
Description: |
The volume weighted MACD is computed in the exact same fashion
as the standard MACD (Moving average convergence/divergence)
except the Volume Weighted MACD uses volume weighted moving
averages as opposed to exponential moving averages.
To generate the signal (or fast line), the difference is
computed between the fast and slow moving average. The slow
line is then computed by taking an n-day exponential moving
average of the raw signal. Finally, the VWMACD Histogram is
the difference between the fast and slow lines.
|
| Command: |
Volume Weighted Moving Average(simple) |
| Type: | Indicator |
| Parameters: | [period] |
| Usage: |
• volume weighted moving average(PERIOD) • VMA(days) |
| Components: | market strength indicator volume price close |
Example: |
| • VMA(50) is more than 5 percent below the MA(50) |
| • VMA(50) has been increasing for 5 days |
| • VMA(20) crossed above the MA(20) within the last 1 day |
Description: |
The simple volume weighted moving average takes a standard
moving average and uses the daily volume as a weighting
mechanism. The end effect is a moving average that responds to
spikes or lulls in trading activity.
|
| Command: |
weekly |
| Type: | Temporal |
| Parameters: | [none] |
| Usage: |
• weekly [INDICATOR] • chart-display is weekly |
| Components: | core |
Description: |
Add the word "weekly" in front of any indicator you wish to be
computed on a weekly scale.
show stocks where the weekly ma(10)
crossed above the weekly ma(50)
within the last 1 week]
show stocks where the weekly RSI(14) is below 30
Please keep in mind that any period of time that you specify in
your indicators or screens will be related to weeks, not days.
Also, the above examples produce charts that are on a daily scale.
You can mix any weekly and daily measures on a daily chart!
To view your screen using a weekly chart, simply add the
"chart-display is weekly" phrase to any of your filters.
For example:
show stocks where the weekly high is below the weekly high 1
week ago
and the weekly low is above the weekly low 1 week ago
and chart-display is weekly
This will convert your chart to display all of the measures using
weekly information. Note that a weekly chart can not show any daily
measures.
to actually compute the weekly stochastic, you would just need
to add the "Weekly" keyword right before the "SLOW STOCHASTIC..."
weekly high is below the weekly high 1 week ago
and the weekly low is above the weekly low 1 week ago
and weekly slow stochastic(13) fast %K is below 40
and daily slow stochastic(13) fast %K is below 40
More details about weekly measures: (11/15/2004 12:59:23 PM)
When using any weekly measure on StockFetcher, the values are
based on Monday-Friday weeks (or partial weeks depending on
holidays and what the the last trading date was.)
For example, after the market close on Wednesday you run
"weekly MA(20) crossed above weekly MA(50)",
the MA(20) will be computed by using the closing value for the
current week (up to Wednesday) and then the closing values from
the previous 19 weeks. Same for the MA(50).
In your example, the "C" will be the close from the current
week. "L" will be the lowest value out of all of the weeks. So,
if the lowest value occurred in the first 3 days of the partial
week, that would be "L".
|
| Command: |
Williams %R |
| Type: | Indicator |
| Parameters: | [period] |
| Usage: |
• Williams %R(PERIOD) |
| Components: | momentum indicator price close high low |
| Developed by: | Larry Williams - |
Example: |
| • Williams %R(14) below -80 |
| • Williams %R(14) decreasing for 3 days lag 2 days and Williams %R(14) increasing for 2 days and Williams %R(14) below -70 |
Description: |
• Learn More
Williams %R (pronounced "percent R") is a momentum indicator that
measures overbought/oversold levels. Williams %R was developed
by Larry Williams.
Interpretation
The interpretation of Williams' %R is very similar to that of the
Stochastic Oscillator (page 244) except that %R is plotted
upside-down and the Stochastic Oscillator has internal smoothing.
To display the Williams %R indicator on an upside-down scale, it
is usually plotted using negative values (e.g., -20%). For the
purpose of analysis and discussion, simply ignore the negative
symbols.
Readings in the range of 80 to 100% indicate that the security is
oversold while readings in the 0 to 20% range suggest that it is
overbought.
As with all overbought/oversold indicators, it is best to wait for
the security's price to change direction before placing your trades.
For example, if an overbought/oversold indicator (such as the
Stochastic Oscillator or Williams' %R) is showing an overbought
condition, it is wise to wait for the security's price to turn down
before selling the security. (The MACD is a good indicator to monitor
change in a security's price.) It is not unusual for
overbought/oversold indicators to remain in an overbought/oversold
condition for a long time period as the security's price continues
to climb/fall. Selling simply because the security appears overbought
may take you out of the security long before its price shows signs
of deterioration.
An interesting phenomena of the %R indicator is its uncanny ability
to anticipate a reversal in the underlying security's price. The
indicator almost always forms a peak and turns down a few days
before the security's price peaks and turns down. Likewise, %R
usually creates a trough and turns up a few days before the
security's price turns up.
Formula:
![]() |
| Command: |
WizeTrade |
| Type: | Indicator |
| Parameters: | NONE |
| Usage: |
• |
| Components: | price |
| Developed by: | George Thompson - |
Description: |
• Learn More
• Learn More
If you are a WizeTrade user (which I don't advocate) then this will give you a Mid and Short term green
lights with the slope of the lines going up.
If I could figure out how to do monthly open and close easily I would add that to the filter so you get a
green long term also (partially implemented above). This is known as "Three Wise Men" in wizetrade Lingo.
I think the strength of this filter is it's multi time frame nature. It is looking for Weekly and Daily
data to agree.
/* Short Term Green*/
set {sg1, close + close}
set {sg2, sg1 + close 1 day ago}
set {sg3, sg2 divided by 3}
/* Short Term Red*/
set {sr1, open + open}
set {sr2, sr1 + open 1 day ago}
set {sr3, sr2 divided by 3}
/* Short Term Width*/
set {sw, sg3 - sr3}
/* Mid Term Green*/
set {mg1, weekly close + weekly close}
set {mg2, mg1 + weekly close 1 week ago}
set {mg3, mg2 divided by 3}
/* Mid Term Red*/
set {mr1, weekly close 1 week ago + weekly close 1 week ago}
set {mr2, mr1 + weekly close 2 weeks ago}
set {mr3, mr2 divided by 3}
/* Mid Term Width*/
set {mw, mg3 - mr3}
/* Long Term Green */
set {lg1, weekly close 1 month ago + weekly close 1 month ago}
set {lg2, lg1 + weekly close 2 months ago}
set {lg3, lg2 divided by 3}
/* Long Term Green */
set {lr1, weekly open 1 month ago + weekly open 1 month ago}
set {lr2, lr1 + weekly open 2 months ago}
set {lr3, lr2 divided by 3}
/* Long Term Width */
set {lw, lg3 - lr3}
AND sg3 crossed above sr3
AND the 2 day slope of sg3 is above 0
AND the 2 day slope of sr3 is above 0
AND the 2 day slope of mg3 is above 0
AND the 2 day slope of mr3 is above 0
AND mg3 above mr3
AND price between 1 and 10
AND volume(90) above 100000
AND chart-length is 20 days
AND add column lw
AND add column mw
AND add column sw descending
|
Appendix:
History
| 2007-jan-1 - yepher |
|
• updated date offset • updated math functions |
| 2006-jan-10 - yepher |
|
• Added TTF Trend Triggered Factor • Added filter for WizeTrade • Added Rainbow Indicator • Added TSF Time Series Forcast |
| 2006-jan-9 - yepher |
|
• Added formula for CWMA and CEMA • Added learn more for CEMA, CWMA, and CMA • Started adding links to books for each particular indicator • Added BOP Balance of Power |
| 2006-jan-6 - yepher |
|
• updated smoothed RSI • fixed some XML formatting error in base doc and expanded DTD • updated hammer • added average obv example • added more formulas |
| 2005-oct-10 - yepher |
|
• added R-Squared • added Shares Outstanding |
| 2005-sept-05 - yepher |
|
• fixed DT and DT2 as belonging to "double-top" group • added indposition • added demarker |
| 2004-dec-12 - yepher |
|
• Started adding auto conversion to/from MetaStock Formula |
| 2004-nov-30 - yepher |
|
• Fixed error in AD Ratio formula. Mistakenly had formula from AD Normal |
| 2004-nov-21 - yepher |
|
• added "slope of" syntax description thanks for input from defghca |
| 2004-nov-15 - yepher |
|
• added more details to weekly description |
| 2004-oct-26 - yepher |
|
• added more details about the symantics of "within the last" • cleaned up channel examples • added more details to "weekly" commnad |
| 2004-oct-25 - yepher |
|
• refactored PDF encoding to optimize for size • alphabetized indicators • standardized usage descriptions • fixed image parsing |
| 2004-oct-24 - yepher |
|
• Added Hammer filter |
| 2004-oct-23 - yepher |
|
• Added market is/not • Added Exchange Traded Funds (ETF) • added posts from Avery and Cegis • changed version 0.02 • Added the attributes "component" and "developed by" • added attributes to command definitions to make it simpler to identify the type of idicator • reformatted the source doc to make auto code generation simpler • fixed details for shares outstanding • expanded many descriptions • began adding command attributes so a commands can be filtered • changed examples to be before description • started adding developer details to each indicator |
| 2004-oct-22 - yepher |
|
• updated Parabolic SAR for parameter suport |
| 2004-oct-19 - yepher |
|
• added true strength index (TSI) • added draw "on plot".. Almost missed that one ;) |
| 2004-sept-10 - yepher |
|
• added advance decline ratio • added Shares Outstanding |
| 2004-sept-6 - yepher |
|
• fixed examples for "has been" |
| 2004-sept-4 - yepher |
|
• fixed wording for days ago • added examples for days ago • added Absolute Open to Close Change Percent • added Arms Index • added Fibonacci Bands • added Vertical Horizontal Filter (vhf) • added Darvas Box |
| 2004-aug-29 - yepher |
|
• added triangles • added chart modifiers • fixed various typos • added more examples |
| 2004-aug-25 - yepher |
|
• made examples clickable • removed some of the typos |
| 2004-aug-17 - yepher |
|
• Added PVI • Added NVI • Added Bollinger %B |
| 2004-aug-09 - yepher |
|
• Initial Creation |
Copyright (c)
2004 yepher [http://yepher.com],
All Rights Reserved.
Learn More










•pattern is Bullish Upside Tasuki Gap
•pattern is Bullish Side-by-Side White Lines
•pattern is Bullish Separating Lines
•pattern is Bullish Three Line Strike
•pattern is Bullish Upside Gap Three Methods
•pattern is Bullish Harami Cross
•pattern is Bullish Three Outside Down
•pattern is Bullish Three Inside Up
•pattern is Bullish Homing Pigeon
•pattern is Bullish Harami
•pattern is Bullish Morning Doji Star
•pattern is Bullish Tri-Star
•pattern is Bullish Meeting Lines
•pattern is Bullish Unique Three Rivers
•pattern is Bullish Abandoned Baby
•pattern is Bullish Matching Low
•pattern is Bullish Engulfing
•pattern is Bullish Concealing Baby Swallow
•pattern is Bullish Three White Soldiers
•pattern is Bullish Kicking
•pattern is Bearish Side-by-Side White Lines
•pattern is Bearish In Neck
•pattern is Bearish Separating Lines
•pattern is Bearish Three Line Strike
•pattern is Bearish Downside Gap Three Methods
•pattern is Bearish Thrusting
•pattern is Bearish On Neck
•pattern is Bearish Harami Cross
•pattern is Bearish Three Outside Up
•pattern is Bearish Three Inside Down
•pattern is Bearish Harami
•Bearish Evening Doji Star
•pattern is Bearish Tri-Star
•pattern is Bearish Meeding Lines
•pattern is Bearish Advance Block
•pattern is Bearish Identical Three Crows
•pattern is Bearish Abandoned Baby
•pattern is Bearish Two Crows
•pattern is Bearish Engulfing
•pattern is Bearish Dark Cloud Cover
•pattern is Bearish Three Black Crows
•pattern is Bearish Kicking
•pattern is Bearish Deliberation
•pattern is Hanging Man














































