BASIC_COND
TecStock.com utilizes a basic condition to only consider stocks
that are closed above $0.30 and have more than 20,000 trading volume per day for the last 20 days.
Stocks traded below this level tend to produce a high degree of
misleading scan signals, which simply results in a waste of the trader's time.
The basic condition is represented by the following formula:
# basic_cond
m := 20; # one month
cond1 := every(vol >= 20000, m);
cond2 := close > 0.3;
cond1 and cond2;
New 52 Week High / New 52 Week Low
This scan identifies stocks which closed at new highs/lows with
respect to the price range of the last 52 weeks.
The new 52 week high or low pattern does not suggest any particular
trading strategy. It simply indicates that the price breaks into new
trading area. While a new high with high volume may imply an exhaustion
peak, a repeated new high could signal a bullish momentum play.
Signals of new 52 week high and low are generated by the following formula
signal_new_52_week_high : high = hhv(high, 250) and "basic_cond";
signal_new_52_week_low : low = llv(low, 250) and "basic_cond";
MA50 MA200 Crossover
The crossover of the 50-day moving average (MA50) and
the 200-day moving average (MA200) is an important trading signal
for institutional investors. When the MA50 crosses above the MA200,
it is called a "golden cross". When the MA50 crosses
below the MA200, it is called a "death cross".
This scan generates two kinds of signals: ma50_ma200_cross_up
and ma50_ma200_cross_down, depending on whether the MA50 and
MA200 are forming a golden cross or a death cross.
ma50 := ma(close, 50);
ma200 := ma(close, 200);
signal_ma50_ma200_cross_up : cross(ma50, ma200) and "basic_cond";
signal_ma50_ma200_cross_down : cross(ma200, ma50) and "basic_cond";
Gap
- Gap Up - Stocks with a low price which is
at least 2% higher than its previous day's high price.
- Gap Down - Stocks with a high price which is at least 2%
lower than its previous day's low price.
Breakaway Gap
- Breakaway Gap Up - Stocks which were steadily
traded recently gapped up today with a low price
higher than the recent one-month high and a volume
three times larger than its 5- and 60-day simple moving averages.
- Breakaway Gap Down - Stocks which were steadily traded
recently gapped down today with a high price lower
than the recent one-month low.
Island Reversal

An island reversal is a pattern consisting of two gaps in
opposite directions. An island top is formed when prices gap
up after an extended advance, trade one or more days leaving
the gap open, and then gap down. Similarly, an island bottom
is formed when prices gap down after an extended decline, trade
one or more days leaving the gap open, and then gap up.
Island reversals are often news driven and usually occur because
conflicting news events occur within short time frames. Island
reversals are "trend killers" and usually lead to the formation
of large patterns that follow the trend.
The signals are most reliable if they occur after a strong trend.
If the trend is weak, so is the signal.
M := 20;
hhv1M := hhv(high, M);
llv1M := llv(low, M);
hhv6M := hhv(high, 6*M);
llv6M := llv(low, 6*M);
gap_up2 := low / ref(high, 1) - 1 >= 0.01;
gap_down2 := high / ref(low, 1) - 1 <= -0.01;
gap_up1 := low > ref(hhv1M, 1) and gap_up2;
gap_down1 := high < ref(llv1M, 1) and gap_down2;
d_up := barslast(gap_up1);
d_down := barslast(gap_down1);
hhv_high_up := hhv(ref(high, 1), d_up);
llv_low_up := llv(ref(low, 1), d_up);
hhv_high_down := hhv(ref(high, 1), d_down);
llv_low_down := llv(ref(low, 1), d_down);
cond1 := d_up > 0 and d_up <= M and
hhv_high_up = hhv6M and
llv_low_up > ref(hhv1M, d_up+1) and
gap_down2 and high < llv_low_up;
cond2 := d_down > 0 and d_down <= M and
llv_low_down = llv6M and
hhv_high_down < ref(llv1M, d_down+1) and
gap_up2 and low > hhv_high_down;
bcond := "basic_cond";
signal_island_top : cond1 and bcond;
signal_island_bottom : cond2 and bcond;
Volume Spike
Volume spikes are relatively large volumes which exceed normal
volume multiple times. We use the following formula to define
a volume spike:
cond : vol > 3*ref(vol, 1) and
vol > 3*ref(ma(vol, 50), 1);
signal_volume_spike : cond and "basic_cond";
i.e., a volume spike signal occurs when the volume is at
least 3 times larger than its yesterday's value and at
least 3 times larger than its yesterday's 50-day simple
moving averages of volume. A volume spike is therefore
visually unmistakable in a chart.
Volume spikes are usually caused by news, for instance,
lower- or higher-than-expected consensus earnings, analyst
up or downgrades etc. It is, however, not uncommon that
volume spikes occur without any news. This is often the
result of heavy activities of market makers or of people
knowing internal news and is therefore worth paying close
attention to.
Highest Volume
Stocks displaying the highest volume ever seen are often
where the real excitement of the day lies. These extreme
volume levels indicate unusual levels of supply or demand. Moves
on volume well above average can often ignite further supply or demand,
and at times, can lead to continued price action over the coming days
and weeks. But keep an eye out for non-supply/demand driven
sources of high volume, such as secondary offerings.
The formula used for this scan is:
cond := vol = hhv(vol, 0);
signal_highest_volume: cond and "basic_cond";
RSI divergence

The RSI, or Relative Strength Index, is a momentum oscillator
introduced by Welles Wilder. It is going up when the market is
strong, and down, when the market is weak. The oscillation range
is between 0 and 100.
The RSI divergence identifies stocks that display a peak-to-peak
divergence between price and RSI.
A bearish RSI divergence signal occurs when a stock or index makes
a higher high in price than at its last peak while the RSI forms
a peak lower than its previous peak.
A bullish RSI divergence signal occurs when the opposite is true:
price traces a lower low while the RSI traces a higher low.
"When divergence begins to show up after a good directional move,
this is a very strong indication that a turning point is near. divergence
is the single most indicative characteristic of the relative strength line."
The signal quality of the RSI divergence is ranked by the sum of
percentage changes between price peaks/troughs and rsi peaks/troughs.
The higher the number, the more divergent the price and RSI have become.
What follows is the formula used to identify bearish rsi divergence signals:
bcond := "basic_cond";
rsi := "RSI"(14);
price1 := high;
price2 := low;
n1 := 10; n2 := 5;
peak1 := hhvbars(price1, 50) = n1 and ref("trend.up"(5, 20, 10, 0.8), n1);
peak1days := barslast(peak1) + n1;
peak1price := ref(price1, peak1days);
peak1rsi := ref(rsi, peak1days);
peak2 := hhvbars(price1, 50) = n2 and
between(peak1days, 20, 50) and
ref("trend.up"(5, 10, 3, 0.75), n2);
peak2days := barslast(peak2) + n2;
peak2price := ref(price1, peak2days);
peak2rsi := ref(rsi, peak2days);
cond1 := peak2 and peak2price / peak1price > 1.03 and
peak2rsi + 3 < peak1rsi and
peak1rsi > 70 and peak2rsi < 70;
signal_rsi_divergence_bearish: cond1 and bcond;
The bullish rsi divergence formula is very similar:
trough1 := llvbars(price2, 50) = n1 and ref("trend.down"(5, 20, 10, 0.8), n1);
trough1days := barslast(trough1) + n1;
trough1price := ref(price2, trough1days);
trough1rsi := ref(rsi, trough1days);
trough2 := llvbars(price2, 50) = n2 and
between(trough1days, 20, 50) and
ref("trend.down"(5, 10, 3, 0.75), n2);
trough2days := barslast(trough2) + n2;
trough2price := ref(price2, trough2days);
trough2rsi := ref(rsi, trough2days);
cond2 := trough2 and trough1price / trough2price > 1.03 and
trough2rsi > trough1rsi + 3 and
trough1rsi < 30 and trough2rsi > 30;
signal_rsi_divergence_bullish: cond2 and bcond;
Double Top

The double top is a major reversal pattern that forms after
an extended uptrend. The pattern is made up of two consecutive
peaks that are roughly at the same price level, with a moderate
trough in between. The duration of the interval between the two
tops is called the size of the pattern, while the horizontal line
passing through the bottom of the trough is called the neck line.
A double top is only complete, when the price declines below the neck line.
The double top is sometimes called an "M" formation because of the
pattern it creates on the chart.
The formula used to identify the double top is listed below. It
generates signals only when the price crosses below the neck line.
Some analysts suggest that the size of the double top should be
at least one month and the price decline between the tops should
be at least 15%. In our formula, we specify that the size is between
15 to 50 days and the price decline is more than 10%. The formula
does not generate many signals as other formulas do. If you would like
to see more signals, you can loosen conditions by changing the size to
10+ days and the decline to 5%+. Signals generated under these conditions
are still highly reliable when the whole market is in the process
of becoming an downtrend.
top := max(open, close);
bot := min(open, close);
price := top;
peak1 := price = hhv(price, 60) and "trend.up"(5, 20, 15, 0.85);
peak1days := barslast(peak1);
peak1price := ref(price, peak1days);
peak2 := between(peak1days, 15, 50) and
max(peak1price, price) >= hhv(price, peak1days) and
abs(peak1price-price)/peak1price < 0.03 and
peak1price/llv(price, peak1days) - 1 > 0.1;
peak2days := barslast(peak2);
peak2price := ref(price, peak2days);
neck : ref(llv(bot, peak1days - peak2days), peak2days);
dtop := peak1days > peak2days and
between(peak2days, 1, 15) and
peak2price > hhv(price, peak2days) and
cross(neck, close);
signal_double_top: dtop and "basic_cond";
Double Bottom

The double bottom is a major reversal pattern that forms
after an extended downtrend. The pattern is made up of
two consecutive troughs that are roughly at the same price
level, with a moderate peak in between. The duration of the
interval between the two bottoms is called the size of the
pattern, while the horizontal line passing through the top
of the peak is called the neck line. A double bottom is only
complete, when the price advances above the neck line.
The double bottom is sometimes called an "W" formation
because of the pattern it creates on the chart.
The formula used to identify the double bottom is listed
below. It generates signals only when the price crosses
above the neck line.
Some analysts suggest that the size of the double bottom
should be at least one month and the price advance between
the bottoms should be at least 15%. In our formula, we specify
that the size is between 15 to 50 days and the price advance
is more than 10%. The formula does not generate many signals
as other formulas do. If you would like to see more signals,
you can loosen conditions by changing the size to 10+ days and
the advance to 5%+. Signals generated under these conditions are
still highly reliable when the whole market is in the process of
becoming an uptrend.
top := max(open, close);
bot := min(open, close);
price := bot;
trough1 := price = llv(price, 60) and "trend.down"(5, 20, 15, 0.85);
trough1days := barslast(trough1);
trough1price := ref(price, trough1days);
trough2 := between(trough1days, 15, 50) and
min(trough1price, price) <= llv(price, trough1days) and
abs(trough1price-price)/trough1price < 0.03 and
hhv(price, trough1days)/trough1price - 1 > 0.1;
trough2days := barslast(trough2);
trough2price := ref(price, trough2days);
neck : ref(hhv(top, trough1days - trough2days), trough2days);
dbot := trough1days > trough2days and
between(trough2days, 1, 15) and
trough2price < llv(price, trough2days) and
cross(close, neck);
signal_double_bottom: dbot and "basic_cond";
NR7

NR7, or Narrow Range 7, is a pattern referring to the
daily price range being narrower than that for each of
the preceding six days.
The NR7 pattern shows up when a stock's price shows a
short-term pattern of decreasing volatility. In this
way NR7 is like a triangle chart pattern, but with more
emphasis on the volatility, and less emphasis on the specific
shape or direction.
While the NR7 pattern often precedes a day of sharp price
movement, it does not, by itself, predict which direction a
stock will move. People use it to predict which stocks are
likely to make a large price move.
NR7 is identified by the following formula. By changing the
value of N to 5 or 6, you can easily use the formula to screen
your own NR5 or NR6 patterns.
N := 7;
range := high -low;
cond := every(range < ref(range, 1), N-1);
signal_nr7 := cond and "basic_cond";
TAIL

A tail, also commonly known as a shooting star, hammer, or
finger, is a single bar price formation displaying a larger than
average high to low range, but a tight open to close range, which
lies near either the top or bottom of the daily range, making the
tail 'point' downward or upward, respectively. Higher than average
volume is desired for a quality tail formation.
Tail patterns that occur after a long rally or fall that point
in the direction of the trend often mark turning points. The tail
pushes into at-least-recently uncharted territory, exhausts the
trend and reverses, leading to a trend reversal. The odds for a
turning point being marked by a tail may be increased if the tail
pokes through any major support or resistance. However, a tail
that prints early in a trend is often simply paving the way for
continued price expansion. It is also common to see price action
following a reversal tail to behave as expected for one to two days,
but then to see the tail taken out with a continuation of the original
trend. Thus, trading tail patterns are not without challenges.
We identify tail patterns using the following formula:
range := high - low;
rank := vol / ref(ma(vol, 50), 1);
cond := range = hhv(range, 20) and
(high = hhv(high, 40) or low = llv(low, 40)) and
(range > 3*(max(open, close) - low) or
range > 3*(high-min(open,close))) and
rank > 1;
signal_tail: cond and "basic_cond";
HITW

HITW, or Hole-In-The-Wall, refers to a downward price
gap that marks the end of a major rally.
HITW's can act as a shock event, possessing the ability
to initiate a down-trend from a prior up-trend. The
level of shock, and perhaps the likelihood of a HITW successfully
marking the top, may be quantified by the size of the gap, how
far the gap bar fell, its participation (volume), and the strength
of the preceding rally. As such, this indicator is typically
used to identify potential shorting opportunities.
We identify HITW using the following formula:
range := high - low;
days:= barslast(high = hhv(high, 40) and "trend.up"(5, 20, 10, 0.85));
cond := days < 3 and
high < ref(low, 1) and
range > ma(range, 10) and
isdown;
signal_hitw : cond and "basic_cond";
Patterns:
Dark Cloud Cover

This is a two-candlestick pattern signaling a top reversal
after an uptrend. We see a strong white real body in the first
day. The next day opens strongly above the previous close, makes
a new high, and closes less than halfway into the prior
white candlestick's real body.
The dark cloud cover pattern occurs when the bulls can not continue
the uptrend and start losing control. Investors are dumping at the
top to lock their gains, short sellers take over the control and
pull the price down.
range := high - low;
long_body := range > ma(range, 10);
cond := ref(isup, 1) and
ref(long_body, 1) and
open > ref(close, 1) and
close < ref((close +open)/2, 1) and
high = hhv(high, 30) and
"trend.up"(5, 20, 10, 0.7);
signal_dark_cloud_cover : cond and "basic_cond";
Engulfing

The engulfing pattern includes the bullish and bearish engulfing
patterns. A bearish engulfing pattern is a large black
candlestick that features an opening price above the prior day's
high and a closing price below the prior day's low. As such,
the body of the pattern "engulfs" the prior day's range. A bearish
engulfing pattern is an major top reversal signal.
The bullish engulfing pattern is similar, but in the opposite
direction: it opens below the prior day's low and closes above
the prior day's high. A bullish engulfing pattern is an major
bottom reversal signal.
top := max(open, close);
bot := min(open, close);
engulf := ref(high, 1) < top and ref(low, 1) > bot;
cond1 := engulf and ref(isdown, 1) and isup and "trend.down"(5, 20, 10, 0.8);
cond2 := engulf and ref(isup, 1) and isdown and "trend.up"(5, 20, 10, 0.8);
signal_bullish_engulfing : cond1 and "basic_cond";
signal_bearish_engulfing : cond2 and "basic_cond";
Evening Star

The evening star is a major top reversal pattern formed
by three candlesticks:
- a long-bodied white candle extending the current uptrend,
- a short middle candle that gaped up on the open,
- and a long-bodied black candle that gaped down
on the open and closed below the close of the first day.
The first long white candle shows the continuing bullish nature
of the market. Then the short middle candle appears showing
the diminishing power of the longs. The last long black candle
proves that bears have taken over the control.
top := max(open, close);
bot := min(open, close);
range := top - bot;
range_ma := ma(range, 10);
cond := ref(isup, 2) and
ref(range > range_ma, 2) and
ref(bot, 1) > ref(top, 2) and
ref(range < range_ma/2, 1) and
isdown and
range > range_ma and
open > ref(open, 2) and
close < ref(close, 2) and
ref("trend.up"(5, 20, 10, 0.75), 2);
signal_evening_star : cond and "basic_cond";
Falling Three Methods

This is a bearish continuation pattern representing
a temporary break in the downtrend of prices without causing
a reversal. It consists of a long black candlestick, three
small bodies in three consecutive days, with each closing within
the range of the 1st day, and a long black day that closes
below the 1st day's close. The three small candles between the
two long black days shows a short market break and after that,
the bearish trend continues.
The Bearish Falling Three Methods Pattern is a continuation
pattern marked with a temporary break in the overall trend of
prices without causing a reversal. The temporary break shows that
there is some doubt about the ability of the trend to continue. This
doubt increases as the small-range reaction days take place.
However, given the fact that a new high cannot be made, the
bearishness is resumed and new lows are set quickly.
range := high - low;
long_black_body := isdown and range > ma(range, 10);
cond := ref(long_black_body, 4) and
ref(high, 1) < ref(high, 4) and
ref(high, 2) < ref(high, 4) and
ref(high, 3) < ref(high, 4) and
ref(low, 1) > ref(low, 4) and
ref(low, 2) > ref(low, 4) and
ref(low, 3) > ref(low, 4) and
low = llv(low, 30) and
close = llv(close, 30) and
open < ref(close, 1) and
ref("trend.down"(5, 5, 3, 0.7), 4);
signal_falling_three_methods : cond and "basic_cond";
Harami

The harami pattern includes the bullish and bearish harami patterns.
The bearish harami pattern is composed of a small black real
body contained within a prior relatively long white real body,
while the bull harami pattern is composed of a small white real
body contained within a prior relatively long black real body.
The Bearish Harami Pattern is a sign of a disparity about the market's
health. Bull market continues further confirmed by the long white
real body's vitality but then a small black real body which shows
some uncertainty. This shows the bulls' upward drive has weakened
and now a trend reversal is possible.
The Bullish Harami Pattern is a sign of disparity about the
market's health. While the market is characterized by downtrend
and bearish mood; there is heavy selling reflected by a long, black
real body however it is followed by a small white body in the next
day. This may signal a trend reversal since the second day's small
real body shows that the bearish power is diminishing.
range := high - low;
top := max(open, close);
bot := min(open, close);
sign := sgn(close-open);
harami := high < ref(top, 1) and
low > ref(bot, 1) and
ref(sign, 1) * sign = -1 and
ref(range > ma(range, 10), 1);
cond1 := harami and ref(low, 1) = llv(low, 30) and
ref(isdown,1) and ref("trend.down"(5, 20, 10, 0.9), 1);
cond2 := harami and ref(high, 1) = hhv(high, 30) and
ref(isup,1) and ref("trend.up"(5, 20, 10, 0.9), 1);
bcond := "basic_cond";
signal_harami_bullish : cond1 and bcond;
signal_harami_bearish : cond2 and bcond;
Morning Star

The morning star is a major bottom reversal pattern formed
by three-candlestick:
- a long-bodied red candle extending the current downtrend,
- a short middle candle that gaped down on the open,
- and a long-bodied white candle that gaped up
on the open and closed above the close of the first day.
The first long black candle shows the continuing bearish
nature of the market. Then the short middle candle appears
implying the incapacity of sellers to drive the market lower.
The last long white candle shows that the market turned
bullish now.
top := max(open, close);
bot := min(open, close);
range := top - bot;
range_ma := ma(range, 10);
cond := ref(isdown, 2) and
ref(range > range_ma, 2) and
ref(top, 1) < ref(bot, 2) and
ref(range < range_ma/2, 1) and
isup and
range > range_ma and
open < ref(open, 2) and
close > ref(close, 2) and
ref("trend.down"(5, 20, 10, 0.75), 2);
signal_morning_star : cond and "basic_cond";
Piercing Line

This is a two-candlestick pattern signaling a bottom reversal
after an downtrend. We see a strong black real body in
the first day. The next day opens below the previous
close, makes a new low, and closes more than halfway
into the prior black candlestick's real body.
The piercing line pattern shows when the downtrand exhausts
and bears can no more retain their control. Potential buyers
start thinking that the market has touched its bottom and
taking long positions.
range := high - low;
long_body := range > ma(range, 10);
cond := ref(isdown, 1) and
ref(long_body, 1) and
open < ref(close, 1) and
close > ref((close +open)/2, 1) and
low = llv(low, 30) and
"trend.down"(5, 20, 10, 0.7);
signal_piercing_line : cond and "basic_cond";
Rising Three Methods

This is a bullish continuation pattern representing
a pause during a uptrend without causing a reversal.
It consists of a long white candlestick, three small
bodies in three consecutive days, with each closing
within the range of the 1st day, and a long white
day that closes above the 1st day's close. The three
small candles between the two long white candlesticks
represent a break during the uptrend. The upward trend
then resumes and continues.
The Bullish Rising Three Methods Pattern typically
represents a rest in the market action. This may be used
to add new positions by longs. The pattern is the reflection
of doubts about the ability of the trend to continue. This
doubt may increase because of small-range reaction days.
However, given the fact that a new low cannot be made, the
bullishness is resumed and new highs are set quickly.
range := high - low;
long_white_body := isup and range > ma(range, 10);
cond := ref(long_white_body, 4) and
ref(high, 1) < ref(high, 4) and
ref(high, 2) < ref(high, 4) and
ref(high, 3) < ref(high, 4) and
ref(low, 1) > ref(low, 4) and
ref(low, 2) > ref(low, 4) and
ref(low, 3) > ref(low, 4) and
high = hhv(high, 30) and
close = hhv(close, 30) and
open > ref(close, 1) and
ref("trend.up"(5, 5, 3, 0.7), 4);
signal_rising_three_methods : cond and "basic_cond";
Shooting Star

Bearish Shooting Star Pattern suggests that prices
may be approaching to a top. It looks like its name,
a shooting star. The shooting star is a small real
body characterized by a long upper shadow, which gaps
away from the prior real body.
The Shooting Star simply tells us that the market opened
near its low, then prices strongly rallied up and finally
prices moved down to close near the opening price. In
other words, the rally of the day was not sustained.
A single day bearish pattern that can appear in an uptrend.
It opens higher, trades much higher, then closes near its
open.
range := high - low;
cond := min(open, close) = low and
high - low > 3.5*(max(open, close) - low) and
open != close and
range > ma(range, 10) and
high = hhv(high, 30) and
"trend.up"(5, 20, 10, 0.75);
signal_shooting_star : cond and "basic_cond";
Spinning Top

A spinning top is a single day pattern that has
a small body with long up and bottom shadows.
Spinning tops indicate the uncertainty and indecision
in a market. Investors have difficulty coming to a
consensus on a security's value. Neither the buyers
nor the sellers have a clear sense of which direction
the market will head. The forces of supply and demand
are equally balanced.
A spinning top with high volume is a sign of that there
is an active tug of war between the bulls and the bears
and the market is confused about the direction prices are
headed.
When spinning tops show up after a long rally with high
volume, it often signals an exhausted up-going trend.
top := max(close, open);
bot := min(close, open);
range := top - bot;
spinning_top := range != 0 and
range < ma(range, 10) / 2 and
(high-top) > range and
(bot-low) > range;
cond1 := spinning_top and (high = hhv(high, 40)) and "trend.up"(5, 20, 10, 0.8);
cond2 := spinning_top and (low = llv(low, 40)) and "trend.down"(5, 20, 10, 0.8);
bcond := "basic_cond";
signal_spinning_top_bearish : cond1 and bcond;
signal_spinning_top_bullish : cond2 and bcond;
Three Black Crows

The three black crows pattern signaling a top reversal after
an uptrend. It is consisting of three consecutive black bodies
where each day closes near below the previous low, and opens
within the body of the previous day.
The Bearish Three Black Crows Pattern is indicative of
the fact that the market has been at a high price for too
long and the market may be approaching a top or is already
at the top. A decisive downward move is reflected by the
first black candlestick. The next two days show further decline
in prices due to profit taking. Bullish mood of the market cannot
be sustained anymore.
range := high - low;
range_ma := ma(range, 10);
black_body := isdown and between(range, range_ma*0.3, range_ma*1.0);
var1 := between(open, ref(open, 1), ref(close, 1)) and
close < ref(close, 1);
cond := every(black_body, 3) and
every(var1, 2) and
ref("trend.up"(5, 20, 10, 0.7), 3);
signal_three_black_crows : cond and "basic_cond";
Three White Soldiers

Bullish Three White Soldiers Pattern is indicative of
a strong reversal in the market. It is characterized by
three long candlesticks stepping upward like a staircase.
The opening of each day is slightly lower than previous
close rallying then to a short term high.
The Bullish Three White Soldiers Pattern appears in a context
where the market stayed at a low price for too long. The market
is still falling down and it is now approaching a bottom or already
at bottom. Then we see a decisive attempt upward shown by the
long white candlestick. Rally continues in the next two days
characterized by higher closes. Bears are now forced to cover
short positions.
range := high - low;
range_ma := ma(range, 10);
white_body := isup and between(range, range_ma*0.3, range_ma*1.0);
var1 := between(open, ref(open, 1), ref(close, 1)) and
close > ref(close, 1);
cond := every(white_body, 3) and
every(var1, 2) and
ref("trend.down"(5, 20, 10, 0.7), 3);
signal_three_white_soldiers : cond and "basic_cond";