You are on page 1of 79

Volume Spike Analysis (VSA)

by Vincent Kott
©2014 by Vincent Kott

All rights reserved. No part of this publication may be reproduced,


distributed, or transmitted in any form or by any means, including
photocopying, recording, or other electronic or mechanical methods, without
the prior written permission of this author.

Risk Disclaimer
Trading and investing is risky. The author believes all information contained
in the book to be accurate, but does not guarantee its accuracy. None of the
information in this book or any opinions expressed constitutes a solicitation
of the purchase or sale of any securities. All information, data and analysis in
this book is for informational and educational purposes only and is not a
recommendation to buy or sell a security. Under no circumstances, including,
but not limited to, negligence, shall the author be liable to you for direct,
indirect, consequential, incidental, special, punitive or exemplary damages
arising from the use of this material. The author does not warrant or make any
representations concerning the accuracy, likely results, or reliability of the
use of the materials in this book.

Books by this author


Volume Spike Analysis

Everything You Need to Know About Trading: Tools, Strategies, Automation


and More
Gauge the Markets: Stock Market Timing Model
Table of Contents
1. Introduction
2. Volume
3. How to interpret volume
4. Technically derived volume indicators
5. Volume Spike Analysis (VSA): Volume spike indicator

6. Volume spike indicator parameters


7. VSA Strategy - Volume breakout
8. VSA Strategy - Volume spike exhaustion
9. VSA to find the right stocks
10. Other ways of using VSA
11. VSA Spike levels
12. VSA Candlesticks
13. Conclusion
14. Free Volume Spike Indicators for eSignal
15. Adjusting VSA settings on eSignal
*BONUS: SAMPLE CHAPTER FROM “EVERYTHING YOU NEED TO
KNOW ABOUT TRADING” by Vincent Kott*
Chapter 1: INTRODUCTION

There are many ways to use technical analysis to generate profitable trades
with enticing risk/reward ratios. However, the sellers of technical analysis
based products often exaggerate the power of simple technical tools. To
become a successful trader, you must not only apply your methods properly,
but also use your technical tools in a different way than others do. In this
short eBook, you will discover a new method for analyzing volume and how
it can be applied in a trading strategy.
As a side note, trading is very difficult. The purpose of this eBook is to share
a new idea and make you think about volume in a different way. Volume spike
analysis can be blended with your current method and improve your trading.
This eBook is purely for educational purposes. I do not encourage trading
financial products with real money unless you are a professional. You will
find instructions on how to install the indicators mentioned in this book in
Chapters 14 and 15.
Chapter 2: VOLUME

A trade will produce two pieces of data: volume and price. A common flaw
when technical analysis is applied is to underweight the importance of
volume. Chart patterns can look wonderful, but unless they are combined
with proper volume behavior, they can be misleading. Volume is one of the
most important tools in trading in my opinion. Every type of investor or
trader uses volume. Fundamental investor or technical trader, they all use it.
Volume shows how many shares have been traded in a given period of time.
Price bars with high volume are more informative than bars with low
volume. Many patterns emerge from volume bars. There are also plenty of
technical tools that are derived from volume.
Charles Dow believed that volume leads price. Most likely this has
something to do with the amount of insider trading present back then. People
with insider information about a company will aggressively buy the stock
before critical news is released, therefore volume increases will lead price
increases. In today's market, the situation is different. Algorithmic trading
makes up 73% of volume according to recent reports and insider trading
laws are much more stringent. There are situations where volume tells you
more than price and vice versa. Therefore, in order to properly analyze a
stock chart, you must combine price action with volume patterns.
Chapter 3: HOW TO INTERPRET VOLUME

As mentioned, volume can lead or lag price action. In both cases, volume
will give you valuable information. I recommend interpreting volume in four
ways:

1- Volume as confirmation: When volume lags the price of an existing


trend.
High volume in the direction of the trend confirms the legitimacy of the
trend.

2- Volume as confirmation: When volume confirms the validity of a new


trend or breakout.
When a new chart pattern breakout or breakdown occurs with volume, the
odds of a new sustainable trend increase.

3- Volume as a leading factor: When volume leads the price of a new trend.
A large increase in volume combined with low price volatility is a powerful
hint that market participants are active and that a new potential trend might
begin. A large increase in volume can predict an increase in price volatility.

4- Volume as a warning: When volume and price send conflicting signals.


When price and volume are behaving in a conflicting manner it sends a signal
that the trend or pattern is unreliable. An example would be a breakout on
low volume or a stock in an uptrend that has large volume on days where the
stock goes down.
Chapter 4: TECHNICALLY DERIVED VOLUME INDICATORS

In order to have a better understanding of volume spike analysis (VSA), it is


important to analyze the strengths and weaknesses of other volume indicators.
In this chapter, we will go over the following volume indicators:
Simple volume bars
Volume bars with a moving average
On-balance volume (OBV)
Volume weighted average price (VWAP)
Color volume bars
Volume by price

Simple volume bars

The easiest way of looking at volume is to use a simple volume bar tool.
Many traders look for volume spikes in combination with an interesting price
pattern. This can be helpful, however, how do you judge the size of the
volume bar? A volume spike on a price chart might look big relative to the
previous few (Figure 1). However, we do not know how big the spike is
relative to the stock’s historical volume spikes. If it appears to be the largest
volume bar in the last few, what information does that give you? It can be
misleading since you do not know what size of volume spikes have occurred
in the past. Most websites with price charts will automatically give you
volume bars at the bottom of the chart (e.g. www.stockcharts.com).
Figure 1: Simple volume bars

Volume bars with a moving average

Another popular method of looking at volume is to add a 20- or 50-period


moving average (MA) to the volume bars. As shown in Figure 2, it is easy to
recognize if the current volume is running above or below its selected moving
average. If the volume is above the moving average, you know you have a
larger than usual volume. You can also see if the volume trend is increasing or
decreasing. A decreasing trend in volume could indicate waning interest
while an increasing trend may reflect a shift in sentiment for this particular
stock. For traders who have a long holding period, this indicator may be
precise enough. However, traders who are looking for intraday or swing
trades might not find this tool gives enough information about the current
volume bar.
Figure 2: Volume bars with a 50 period moving average

On-balance volume (OBV)

One of the more popular ways of looking at volume is through technically


derived volume indicators. A very popular one is the on-balance volume
(OBV). OBV is a running total of positive and negative volume (Figure 3).
You can judge whether volume is flowing into or out of a stock. On the chart
this indicator looks similar to the relative strength index (RSI). One of the
methods traders use OBV is to identify divergences and anticipate trend
reversals. From my experience, the best way to use OBV is to confirm price
trends, breakouts and breakdowns. A downfall of this indicator is that large
volume spikes can throw off the indicator in the short term.
Figure 3: On-balance volume (OBV)

Volume weighted average price (VWAP)

VWAP has greatly increased in popularity in the past decade. It stands for
volume weighted average price. To calculate VWAP, sum up the dollar value
of every transaction (price * shares) and then divide this number by the total
number of shares traded on that day. When you plot VWAP on a chart, it looks
very similar to a moving average (Figure 4). Similar to the moving average of
volume bars, VWAP is a lagging indicator. On a daily chart, VWAP can help
assess liquidity points at different levels.
This tool is popular with institutional investors since it helps them evaluate
how well their orders are being executed. If your average price for a long
position is lower or at the VWAP level (for a given period), then your
executions are deemed satisfactory or good. If your entry price is higher than
the VWAP, then this means the trader did not execute the order efficiently.
VWAP is also very popular with algorithmic traders. Many advanced black
boxes use some sort of VWAP derivative in their formula. However, this is a
topic for another book. Intraday VWAP can be useful for day traders since
algorithms tend to buy or sell at the VWAP.

Figure 4: Volume weighted average price (VWAP) is the red line on the chart.

Color volume bars

I discovered the color volume bars indicator while using my Bloomberg


terminal. I had never heard of this study before. It is quite interesting and
worth investigating. It was created by Edgar Kraut. Like many other technical
tools, it is meant to be used as a confirmation indicator. The color volume
bars study combines volume with price to confirm the signals of other
indicators. In Figure 5 below, we can see an example of this tool. Whenever
a volume pattern occurs, the volume bars change color. The three volume
patterns are:
1- If price and volume are greater than 2 weeks ago, the volume bars for
current period will be green
2- If the price is greater than 2 weeks ago but the volume is not, the volume
bars for the current period will be blue
3- If the price and volume are less than 2 weeks ago, the volume bars for the
current period will be orange

Figure 5: Color volume bars at the bottom of the chart

For more information regarding this trading tool, please visit:


http://www.traders.com/Documentation/FEEDbk_docs/2011/07/Kraut.html.

Volume by price

Volume by price is one of my favorite volume tools. It is an intuitive and


logical method of analyzing volume and it can help you find areas of support
and resistance that can lead to interesting trades. This indicator plots volume
on the background of a chart with the bars displayed horizontally. Each bar
shows the amount of volume for a particular price range during a period of
time. You can see this indicator plotted in Figure 6.

Figure 6: Volume by price

A large volume level or cluster of levels will give you valuable information.
When a stock is in an uptrend and you are looking for areas of support to buy
the pullback, if your chart has a large volume by price level, you can expect
there to be buyers who will support the stock (Figure 7). Similarly, in a
situation where the stock is in a downtrend, you can find good shorting
opportunities when the stock retraces to a large volume by price level (Figure
8).
Figure 7: There is a large volume level around $130 and $110. These levels
are typically support when a pullback occurs.

Figure 8: There is a large volume level around $400. This is where are short
seller would look to short this stock.

When a stock has been range bound for quite some time, and there is a notable
volume by price level bar, if the stock breaks out, you can expect a powerful
move (Figure 9). The larger the volume bar, the more powerful the velocity
of the break. When a stock is range bound and happens to break a large level
or cluster of levels to the downside, you can expect many investors to have
their stop loss triggered and this could start the beginning of a new downtrend
(Figure 10).

Figure 9: The stock was range bound with a large volume level around $85.
Once the stock broke out from this area, a strong uptrend emerged.

Figure 10: The breakdown of the stock below the cluster of volume between
$13 and $15 led to a quick slide in price.
Similar to my volume spike tool, volume by price is intuitive and logical.
This tool is very helpful since you can gauge the level of interest at different
price levels. For more information and to analyze stocks with this method, go
to: www.stockcharts.com.
Chapter 5: VOLUME SPIKE ANALYSIS (VSA): VOLUME SPIKE
INDICATOR

In trading, you need a different approach to have an edge over other


technicians. If everybody is using the same tools, it is hard to develop an
edge. The purpose of this eBook is to introduce a new method for analyzing
volume. This method for analyzing volume uses volume spikes relative to
previous volume bars.
Volume spike analysis (VSA) is the analysis of one time large volume
spikes. It is relatively simple to understand and very visually intuitive for
traders. The main tool needed to perform volume spike analysis is the
volume spike indicator. This indicator is similar to a simple volume bar tool
where the volume bars are plotted at the bottom of a chart. The biggest
difference is that the volume bars will change color to reflect the trading
volume of that bar relative to previous volume bars. Like all technical
indicators, there are parameters that must be inputted. With the volume spike
indicator, you can select different parameters to suit your personal trading
preferences.
Here is the simple algorithm:
If the current volume bar is greater than the past X volume bars, the
indicator will highlight the volume bar with color Y
In Figure 11, you can see an application of the volume spike indicator with
the following parameters:
Standard volume bar color: Blue
If the current volume bar is greater than the past 20 volume bars, highlight
the volume bar Turquoise.
If the current volume bar is greater than the past 100 volume bars,
highlight the volume bar Pink.
Figure 11: Volume spike indicator example

In Figure 11, you can see the volume spike indicator at the bottom of the
chart. Look at the pink volume bar. In this case, the pink volume bar indicates
it is the largest volume bar that has occurred in the past 200 periods. The
turquoise volume bar indicates that on that trading day, the volume bar was
the largest relative to the past 20 periods. The reason I say 100 periods and
20 periods is because this tool can be used on various times frames including
intraday minute, hourly or even monthly. These volume spikes can be applied
to your preferred time frame.
This type of analysis has value for traders who trade with intraday charts,
daily charts or even weekly charts. The information lies within its simplicity.
Many professionals who work for asset management firms claim they do not
believe in chart analysis. I understand why they think this way although I do
not completely agree with their reasons. However, if a large volume bar
occurs and they tell you this gives you no valuable information, they are
simply wrong. If the daily volume on a stock is the highest it has been in the
past year, this is very important information. You would be handicapping
yourself as an investor if you do not look at volume, especially when it is at
extreme levels. The volume spike indicator makes it easy to spot these
situations. It can be used by automated traders as well as manual traders. For
example, an automated trader can add a criterion that the volume bar at the
entry must be greater than the past X volume bars. This can easily be back
tested to find the optimal number of back periods. Adding a volume condition
may improve your black box’s performance. The manual trader can develop
visual patterns to make his trading decisions quicker.
Chapter 6: VOLUME SPIKE INDICATOR PARAMETERS

As previously mentioned the parameters for the volume spike indicator need
to be specified. For my trading purposes, I have found that the best parameters
are:
Standard volume bar color: Red
If the current volume bar is greater than the past 4 volume bars, highlight
the volume bar blue.
If the current volume bar is greater than the past 20 volume bars, highlight
the volume bar green.
If the current volume bar is greater than the past 200 volume bars,
highlight the volume bar pink.

Figure 12: Recommended volume spike indicator parameters

These parameters will change depending on which type of trader you are. For
my purposes, I have found that these 3 filters give me the most valuable
information. If a blue volume bar appears (largest volume bar in the previous
4 periods), I take this as a warning that something might be happening with the
stock. If a green bar appears (largest volume bar in the previous 20 periods), I
am mildly confident that something may be happening although it may lead to a
minor stock price move. If a pink bar appears (largest volume bar in the
previous 200), I am very confident that something is happening and must make
a trading decision. I found that any volume spike going back more than 250
periods does not give additional information. Also, if you are running your
charts on an eSignal or Trade Station platform, you will be required to wait
for the past data to be loaded. Sometimes this can take a few seconds or even
with the old eSignal you must manually drag your chart back in order to load
the data (very annoying). Therefore I recommend staying with a maximum
parameter of 200 periods back.
Chapter 7: VSA STRATEGY -VOLUME BREAKOUT

Breakout trading is one of the most popular forms of trading amid traders. It
has been around for many years. The problem with buying a stock on
breakout is that it usually involves buying a stock that is already overbought.
It is very hard to achieve an acceptable risk/reward ratio by simply buying
breakouts. With the use of volume spike analysis, you can trade breakouts
with a higher probability of success. The strategy revolves around trading
price levels where large volume was traded.
Long breakout trading example
For this example I will be using the same parameters as in Figure 11. If the
volume bar is the largest in the past 200 days, and the close of the bar is
greater than the open, you would want to buy the breakout of the high of that
bar’s day. (Figure 13)
Figure 13: Breakout trading using volume spike analysis (VSA)

Most trading books advise buying stocks once they have broken out of a level
on high volume. You may have some success trading this way, but this method
is reactive instead of proactive because you are waiting for volume to come
in after the breakout has occurred. If you apply volume spike analysis, you
know ahead of time which levels will most likely lead to successful trades.
When combining volume spike analysis with breakout trading, traders have a
different perspective. As a side note, trading around volume spike levels is
not as easy as it seems. Usually the stock will move extremely quickly and it
is very important to pay attention to the stock and prepare your orders to pull
the trigger as quickly as possible.

Short breakdown trading example


You can also apply volume analysis to breakdown trading and find some
interesting short trading opportunities. The parameters are the same as the
previous example: if the volume bar is the largest in the past 200 days, and
the close of the bar is lower than the open, short the break of the low of that
bar’s day. In Figure 14, you can see a short trading example on the stock
DMND. Shorting the stock on the break of the $48.61 level would have been
an interesting trade.
Figure 14: Breakdown trading using volume spike analysis (VSA)

Volume confirmation after a breakout or breakdown


Once a stock has broken out of a level, you can also use the volume spike
indicator to confirm the breakout or breakdown. If the volume is increasing
relative to previous volume bars, this increases the odds of a successful
trade. You do not need to use a parameter of 200 bars back to analyze the
volume after the breakout or breakdown, you can use a 10 or 5 bars back
parameter for confirmation.

Breakout trading versus breakdown trading with volume spike analysis


From personal experience, I believe volume spike analysis trades on the
short side exhibit the best fluidity after the break of a level. This is because
of the non-intended consequences of stop loss orders. When a level is broken
on the downside, especially where a large volume has traded, you can expect
many stop loss orders to be triggered. Sometimes you get a large flush to the
downside and such trades turn very profitable very quickly. If ever the stock
recovers beyond the break point (e.g. if the stock were to go back to the
$48.61 level as see in Figure 14), it is best to close the short trade flat and
breakeven.
When trading breakouts with volume spike analysis, the individual stocks
will often try to retest their breakout level, hence you need to be more
patient. Also, the stock market as a whole generates more positive returns
than negative returns on a yearly basis. In layman terms, stocks go up more
often than down on average. Therefore unless you are in a really bearish
stock market environment, you are better off trading breakouts than
breakdowns.
For this style of trading, it is best to combine the volume spike indicator with
your favorite technical tools. In order to maximize your profitability, you
should also monitor the relative strength of a stock. The best breakouts come
from stocks that have been stronger than the market in the past three to six
months and, conversely, the best shorting opportunities come from the stocks
that have been weaker than the market.
Chapter 8: VSA STRATEGY- VOLUME SPIKE EXHAUSTION

Volume is a great tool to find trend reversals. It is difficult to pick a bottom


or a top, but some of the most profitable strategies are mean reverting. Large
moves tend to begin and end with volume spikes. Capitulation is a term often
used when speaking about tops and bottoms in stocks. You can use the
volume spike analysis to judge the entry timing of a mean reversion system. I
have personally followed a mean reverting strategy for day trading. The most
important entry criterion was always a large volume spike. This is how I
came to create the volume spike indicator. I was looking for a quick and easy
way of evaluating an individual volume spike. Once I developed the
indicator and started using it, I realized I had created a very useful tool.
In Figure 15, you can see an example of trend exhaustion combined with a
volume spike. I used the following parameters:
Standard volume bar color: Blue
If the current volume bar is greater than the past 100 volume bars,
highlight the volume bar Turquoise.
If the current volume bar is greater than the past 200 volume bars,
highlight the volume bar Pink.
You can notice that these parameters are different from the ones used in the
previous examples. The reason I selected 100 and 200 volume bars back is
because I am looking for really big spikes and not for small spikes for this
mean reverting strategy.
Figure 15: Volume exhaustion on a 15 minute chart

Such large volume spikes are easy to notice. A cluster of large volume spikes
after a long trend is also a very powerful signal. If a cluster of volume spikes
occur within a short period, this is a signal of price exhaustion and a reversal
is imminent. Many stocks during the tech bubble ended their run this way and
were followed by steep moves to the downside.
Chapter 9: VSA TO FIND THE RIGHT STOCKS

An important factor in generating interesting risk/reward ratio is trading the


right stocks. You want to trade stocks that are volatile. It is generally accepted
amongst technicians that an increase in volume leads to an increase in
volatility.
Filtering your stocks to trade only the ones with a recent increase in volume
will help you find better trading candidates. Finding stocks that are about to
make large moves is at the essence of a great risk/reward ratio.
www.stockcharts.com has a stock scanner that can help you filter for stocks
that have large volume spikes. (Subscription required)

Figure 16: Example of volume spike leading to an increase in volatility


Chapter 10: OTHER WAYS OF USING VSA

There are many other ways traders can use volume spike analysis:
Manual traders can use volume spikes for confirmation of volume coming
into a stock after entering a position (for any strategy, not just breakout or
breakdown)
Automated traders can add a volume filter for volume spikes in order to
improve the risk/reward ratio of their black boxes.
Comparing the volume spikes of up days to the volume spikes of down days
Creating new technical indicators
Chapter 11: VSA SPIKE LEVELS

I have created 3 new indicators based on the framework of volume spike


analysis. The volume spike indicator was introduced earlier. This is the
indicator at the bottom of the chart where the level of the volume spikes
changes the color of the volume bars.
The second indicator I have created is the volume spike level tool. The
indicator was seen but not explained in Figures 13 and 14 when discussing
breakdown and breakout trading. In this chapter, I will explain it in more
detail how the indicator works.
In Figure 17, you can see a snippet of the volume spike level indicator.

Figure 17: Volume spike level indicator

Here are the details for this volume spike level indicator:
If the current volume bar is greater than the past 200 volume bars AND the
open is lower than the close, draw a green line at the high of the day.
If the current volume bar is greater than the past 200 volume bars AND the
open is higher than the close, draw a red line at the low of the day.
I have mentioned that waiting for volume to come in after a breakout is
reactive instead of proactive. By having these lines drawn on your chart
ahead of a breakout, you can visually anticipate the price moves before it
occurs. Similar to the volume spike indicator, you can modify the parameters
of the volume spike. If you are looking for small volume spike levels, you
can set the parameter to the past 20 or 50 volume bars.
With this indicator, the level or line is always drawn at the high of the day for
stocks that have large volume spikes and the stock has appreciated during the
price bar. The level or line is always drawn at the low of the day for stocks
that have large volume spikes and the stock has depreciated in value during
the price bar.
This is a simple tool to help traders locate levels where trades can be
initiated. (Figure 18) As a trader, you are trying to follow many things during
the day: news, your positions, finding new trades etc... This tool saves you
time and effort.
Figure 18: Volume levels are simple and intuitive
Chapter 12: VSA CANDLESTICKS
Manual traders can take volume spike analysis to a higher level by mixing
this concept into their candlesticks. This indicator is similar to Equivolume
charts. In Equivolume charts, the volume information is given on a chart by
the width of each individual candlestick. The bigger the volume is within a
period, the wider the candlesticks. (Figure 19)

Figure 19: Equivolume candlesticks

VSA candlesticks are still quite different from Equivolume candlesticks. In


VSA candlesticks, the color changes depending on the size of the volume
spike. If the volume bar is greater than the set parameter, then the candlestick
will change colors. To summarize, the candlesticks change colors on days
with large volume spikes.
Here are the details for the VSA candlestick indicator:
If the current volume bar is greater than the past 100 volume bars, plot the
candlestick turquoise
If the current volume bar is greater than the past 200 volume bars, plot the
candlestick pink

Since many people use candlesticks to analyze price action, adding volume
spike analysis into the chart adds a second dimension. Traders can also
adjust the parameters of the VSA candlesticks to suit their trading style.

Figure 20: Volume spike candlesticks


Chapter 13: CONCLUSION

Volume spike analysis simplifies the decision making process. It is an


intuitive way of applying a very important factor and greatly contributes to
trading success. There is no holy grail for trading, however sometimes
simple concepts and a different perspective can make a big difference.

Figure 21: Volume spike analysis (VSA) application


Chapter 14: FREE VOLUME SPIKE INDICATORS FOR ESIGNAL
In order to use the indicators mentioned in this book, you will need to save the
code below and upload them individually onto eSignal. I will guide you step
by step in this Chapter (note: I will be using eSignal v.10 for this
demonstration, if you are using a newer version or are not able to upload the
indicators, please contact the eSignal support desk, they are very helpful).
Please note that the code provided only works for eSignal. If you wish to
apply these indicators to another platform such as Trade Station, you may
share this eSignal code to a programmer who can then translate into the
appropriate coding language.

Step 1: Open the EFS Editor (Tools -- EFS -- Editor)

Step 2: Copy the code found below (make sure you copy everything) starting
below

========================================================
=============
Project Description:

Dislaimer: For educational purposes only! Obviously, no guarantees


whatsoever and use at your own risk.
********************************************************************
**/

var STUDY_TITLE = "Volume Spikes";

//External Variables
var grID = 0;
var nBarCounter = 0;
var aFPArray = new Array();
var bInitialized = false;

var aLevels = null;

//== PreMain function required by eSignal to set things up


function preMain() {
var x;

setPriceStudy(false);
setStudyTitle( STUDY_TITLE );
setCursorLabelName("Volume", 0);
setShowTitleParameters( false );

//unrem this if you don't want the labels in cursor window


//setShowCursorLabel(false);

//unrem this if you don't want the study to update on every tick
//setComputeOnClose();
grID = 0;

//initialize formula parameters


x=0;
aFPArray[x] = new FunctionParameter( "fThresh1",
FunctionParameter.NUMBER);
with( aFPArray[x] ) {
setName( "Lookback #1 (bars)" );
setLowerLimit( 0 );
setDefault( 4 );
}
x++;
aFPArray[x] = new FunctionParameter( "fColor1",
FunctionParameter.COLOR);
with( aFPArray[x] ) {
setName( " Highlight Color" );
setDefault( Color.blue );
}
x++;
aFPArray[x] = new FunctionParameter( "fThresh2",
FunctionParameter.NUMBER);
with( aFPArray[x] ) {
setName( "Lookback #2 (bars)" );
setLowerLimit( 0 );
setDefault( 20 );
}
x++;
aFPArray[x] = new FunctionParameter( "fColor2",
FunctionParameter.COLOR);
with( aFPArray[x] ) {
setName( " Highlight Color" );
setDefault( Color.green );
}
x++;
aFPArray[x] = new FunctionParameter( "fThresh3",
FunctionParameter.NUMBER);
with( aFPArray[x] ) {
setName( "Lookback #3 (bars)" );
setLowerLimit( 1 );
setDefault( 100 );
}
x++;
aFPArray[x] = new FunctionParameter( "fColor3",
FunctionParameter.COLOR);
with( aFPArray[x] ) {
setName( " Highlight Color" );
setDefault( Color.cyan );
}
x++;
aFPArray[x] = new FunctionParameter( "fThresh4",
FunctionParameter.NUMBER);
with( aFPArray[x] ) {
setName( "Lookback #4 (bars)" );
setLowerLimit( 1 );
setDefault( 150 );
}
x++;
aFPArray[x] = new FunctionParameter( "fColor4",
FunctionParameter.COLOR);
with( aFPArray[x] ) {
setName( " Highlight Color" );
setDefault( Color.magenta );
}
x++;
aFPArray[x] = new FunctionParameter( "fColor5",
FunctionParameter.COLOR);
with( aFPArray[x] ) {
setName( "Default Volume Color" );
setDefault( Color.navy );
}
x++;
aFPArray[x] = new FunctionParameter( "fThick5",
FunctionParameter.NUMBER);
with( aFPArray[x] ) {
setName( " Thickness" );
setLowerLimit( 1 );
setUpperLimit( 10 );
setDefault( 4 );
}
x++;
aFPArray[x] = new FunctionParameter( "fLineType5",
FunctionParameter.STRING);
with( aFPArray[x] ) {
setName( " Line Type" );
addOption( "Solid" );
addOption( "Dot" );
addOption( "Dash" );
addOption( "DashDot" );
addOption( "DashDotDot" );
setDefault( "Solid" );
}

//== Main processing function


function main( fThresh1, fColor1,
fThresh2, fColor2,
fThresh3, fColor3,
fThresh4, fColor4,
fColor5, fThick5, fLineType5 ) {
var x, y;
var oObj;

//script is initializing
if ( getBarState() == BARSTATE_ALLBARS ) {
return null;
}

if ( bInitialized == false ) {

setDefaultBarThickness( Math.round( fThick5 ), 0 );


setDefaultBarFgColor( fColor5, 0 );
setDefaultBarStyle( eval(
"PS_"+fLineType5.toUpperCase() ), 0 );
setPlotType( PLOTTYPE_HISTOGRAM, 0 );

aLevels = new Array();


x=0;
y=0;
while( x<4 ) {
v = eval( "fThresh"+(x+1) );
if ( v>0 ) {
oObj = new Object();
oObj.Len = v;
oObj.Color = eval( "fColor"+(x+1) );
aLevels[y] = oObj;
oObj = null;
y++;
}
x++;
}

aLevels.sort( sortASC );

bInitialized = true;
}

//called on each new bar


if ( getBarState() == BARSTATE_NEWBAR ) {

nBarCounter++;

vol = volume(0);

x=0;
while( x<aLevels.length ) {
if ( isHigher( aLevels[x].Len, vol, volume() ) ) {
setBarFgColor( aLevels[x].Color, 0 );
break;
}
x++;
}

return( getSeries( volume() ) );


}

/*************************************************
SUPPORT FUNCTIONS
**************************************************/
function sortASC( r1, r2 ) {
if ( r1.Len<r2.Len ) {
return(1);
}
if ( r1.Len>r2.Len ) {
return(-1);
}
return(0);
}

function isHigher( _len, _val, _src ) {


var x=1;

while( x<_len+1 ) {
if ( _src.getValue(-x)>=_val ) {
return( false );
}
x++;
}

return( true );

//== gID function assigns unique identifier to graphic/text routines


function gID() {
grID ++;
return( grID );
}
//==rnd will round to N digits.
function rnd(value, N) {
var n;
var mult=1;
for(n=0;n<N;n++) mult*=10;
value*=mult;
return Math.round( value,N)/mult;
}

//== Frac functions returns the fractional portion of a real number


function Frac( iVal ) {
var x = Math.floor( iVal );
return( iVal - x );
}

Step 3: Paste the code into the blank eSignal Formula window

Step 4: Save the code in the eSignal Formula window


You will save it in the Other folder. This folder can be found by going to your
program files. Then you will find the eSignal folder, the formulas folder and
finally the other folder. Save it as Volume Spike Indicator.
Step 5: Load the Volume Spike Indicator onto your eSignal Chart.
To do this, you must right click on the eSignal chart. You will select
Formulas, then Other. In this Other folder, you will find the Volume Spike
Indicator.

Step 6: Repeat steps 1 through 5 for the VSA Spike Level


To do this, copy and paste the code below. Save it as VSA Spike Level in the
folder name Other.
========================================================
=============
Project Description:
Dislaimer: For educational purposes only! Obviously, no guarantees
whatsoever and use at your own risk.

********************************************************************
**/

var STUDY_TITLE = "High Volume Levels";

//External Variables
var grID = 0;
var nBarCounter = 0;
var nLookback = 0;
var aFPArray = new Array();
var bInitialized = false;
var bBail = false;
var bPrimed = false;

var aLevels = null;

var cLongColor = null;


var cLongThick = null;
var cLongType = null;

var cShortColor = null;


var cShortThick = null;
var cShortType = null;

var cExtend = 2;
var cTextColor = Color.navy;
var cFontSize = 10;
var cDecimals = 2;

//== PreMain function required by eSignal to set things up


function preMain() {
var x;

setPriceStudy(true);
setStudyTitle( STUDY_TITLE );
setShowTitleParameters( false );

//unrem this if you don't want the labels in cursor window


setShowCursorLabel(false);

//unrem this if you don't want the study to update on every tick
//setComputeOnClose();
grID = 0;

//initialize formula parameters


x=0;
aFPArray[x] = new FunctionParameter( "fLookback",
FunctionParameter.NUMBER);
with( aFPArray[x] ) {
setName( "Lookback Period (bars)" );
setLowerLimit( 1 );
setDefault( 200 );
}
x++;
aFPArray[x] = new FunctionParameter( "fDays",
FunctionParameter.NUMBER);
with( aFPArray[x] ) {
setName( "Visibility (# of Days)" );
setLowerLimit( 1 );
setDefault( 3 );
}
x++;
aFPArray[x] = new FunctionParameter( "fColor1",
FunctionParameter.COLOR);
with( aFPArray[x] ) {
setName( "Long Volume Level Color" );
setDefault( Color.green );
}
x++;
aFPArray[x] = new FunctionParameter( "fThick1",
FunctionParameter.NUMBER);
with( aFPArray[x] ) {
setName( " Thickness" );
setLowerLimit( 1 );
setUpperLimit( 10 );
setDefault( 2 );
}
x++;
aFPArray[x] = new FunctionParameter( "fLineType1",
FunctionParameter.STRING);
with( aFPArray[x] ) {
setName( " Line Type" );
addOption( "Solid" );
addOption( "Dot" );
addOption( "Dash" );
addOption( "DashDot" );
addOption( "DashDotDot" );
setDefault( "Solid" );
}
x++;
aFPArray[x] = new FunctionParameter( "fColor2",
FunctionParameter.COLOR);
with( aFPArray[x] ) {
setName( "Short Volume Level Color" );
setDefault( Color.red );
}
x++;
aFPArray[x] = new FunctionParameter( "fThick2",
FunctionParameter.NUMBER);
with( aFPArray[x] ) {
setName( " Thickness" );
setLowerLimit( 1 );
setUpperLimit( 10 );
setDefault( 2 );
}
x++;
aFPArray[x] = new FunctionParameter( "fLineType2",
FunctionParameter.STRING);
with( aFPArray[x] ) {
setName( " Line Type" );
addOption( "Solid" );
addOption( "Dot" );
addOption( "Dash" );
addOption( "DashDot" );
addOption( "DashDotDot" );
setDefault( "Solid" );
}
x++;
aFPArray[x] = new FunctionParameter( "fHideBroken",
FunctionParameter.BOOLEAN);
with( aFPArray[x] ) {
setName( "Show Price on Unbroken Lines Only?" );
setDefault( false );
}
x++;
aFPArray[x] = new FunctionParameter( "fColor3",
FunctionParameter.COLOR);
with( aFPArray[x] ) {
setName( "Price Text Color" );
setDefault( Color.navy );
}
x++;
aFPArray[x] = new FunctionParameter( "fFontSize",
FunctionParameter.NUMBER);
with( aFPArray[x] ) {
setName( " Font Size (8-55)" );
setLowerLimit( 8 );
setUpperLimit( 55 );
setDefault( 10 );
}
x++;
aFPArray[x] = new FunctionParameter( "fDecimals",
FunctionParameter.NUMBER);
with( aFPArray[x] ) {
setName( " Decimals (0-6)" );
setLowerLimit( 0 );
setUpperLimit( 6 );
setDefault( 2 );
}

//== Main processing function


function main( fLookback, fDays,
fColor1, fThick1, fLineType1,
fColor2, fThick2, fLineType2,
fHideBroken,
fColor3, fFontSize, fDecimals ) {
var x;
var b, v;
var p, n, s;
var nDir;

//script is initializing
if ( getBarState() == BARSTATE_ALLBARS ) {
return null;
}

if ( bInitialized == false ) {

nLookback = Math.round( fLookback );

cTextColor = fColor3;
cFontSize = Math.round( fFontSize );
cDecimals = Math.round( fDecimals );

cLongColor = fColor1;
cLongThick = Math.round( fThick1 );
cLongType = eval( "PS_"+fLineType1.toUpperCase() );

cShortColor = fColor2;
cShortThick = Math.round( fThick2 );
cShortType = eval( "PS_"+fLineType2.toUpperCase() );

aLevels = new Array();

nBarCounter = 0;

bPrimed = false;

bInitialized = true;
}

//called on each new bar


if ( getBarState() == BARSTATE_NEWBAR ) {

//-- Step #1: logic to find new volume spikes and add
//-- them into the array

if ( nBarCounter>nLookback ) {

v = volume(-1);

b = isHigher( nLookback, v, volume() );

if ( b==true ) {
nDir = close(-1)>=open(-1) ? 1 : -1;
if ( nDir==1 ) {
oObj = new Object();
oObj.Price = high(-1);
oObj.Type = 1;
oObj.Offset = nBarCounter;
oObj.Broken = false;
oObj.Active = true;
aLevels.unshift(oObj);
oObj = null;
}
if ( nDir==-1 ) {
oObj = new Object();
oObj.Price = low(-1);
oObj.Type = -1;
oObj.Offset = nBarCounter;
oObj.Broken = false;
oObj.Active = true;
aLevels.unshift(oObj);
oObj = null;
}
}

//-- Step #2: walk through the list of lines and


//-- check to see if previously unbroken levels
//-- are now broken and then draw the lines

x=0;
while( x<aLevels.length ) {
if ( aLevels[x] != null ) {
if ( aLevels[x].Active==true ) {
//-- this is a Long level
(drawn on a high)
if ( aLevels[x].Type==1
){
//-- if not yet
marked as broken, check to see if it
//-- is now
broken
if (
aLevels[x].Broken==false && high(-1)>aLevels[x].Price ) {

aLevels[x].Broken=true;
}
}
//-- this is a Short level
(drawn on a high)
if ( aLevels[x].Type==-1
){
//-- if not yet
marked as broken, check to see if it
//-- is now
broken
if (
aLevels[x].Broken==false && low(-1)<aLevels[x].Price ) {

aLevels[x].Broken=true;
}
}
}
}
x++;
}
}

//-- now draw the lines and text


if ( bPrimed==true ) {
drawUpdateLines( fDays/1, false,
fHideBroken==true );
}

nBarCounter++;

if ( isLastBarOnChart()==true ) {
if ( bPrimed==false ) {
bPrimed = true;
drawUpdateLines( fDays/1, true,
fHideBroken==true );
}
}

return( null );

}
/*************************************************
SUPPORT FUNCTIONS
**************************************************/
function drawUpdateLines( _days, _firstin, _hidebroken ) {
var x;
var p, n, s;

clearLines();
clearText();

x=0;
while( x<aLevels.length ) {
if ( aLevels[x] != null ) {

//-- first, check the day's back and make sure this
event
//-- occurred within the prescribed number of days
if ( aLevels[x].Active==true && (
getBarState()==BARSTATE_NEWBAR || _firstin==true ) ) {

n = (nBarCounter-aLevels[x].Offset)+1;
if ( checkDaysBack( n, _days )==true ) {
aLevels[x].Active = false;
}
}

//-- we only want to look at Active levels


if ( aLevels[x].Active==true ) {

//-- this is a Long level (drawn on a high)


if ( aLevels[x].Type==1 ) {
//-- redraw the line at that price
level
p = aLevels[x].Price;
n = (nBarCounter-
aLevels[x].Offset) + (_firstin==true ? 0 : 1 );
drawLineRelative( -n, p,
cExtend, p, cLongType, cLongThick, cLongColor, "L"+x );
//-- if level not yet broken then
draw the price
if ( aLevels[x].Broken==false ||
_hidebroken==false ) {
s=
p.toFixed(cDecimals);
drawTextRelative(
cExtend+1, p, s, cTextColor, null, Text.VCENTER, null, cFontSize, "LT"+x );
}
}
//-- this is a Short level (drawn on a low)
if ( aLevels[x].Type==-1 ) {
//-- redraw the line at that price
level
p = aLevels[x].Price;
n = (nBarCounter-
aLevels[x].Offset) + (_firstin==true ? 0 : 1 );
drawLineRelative( -n, p,
cExtend, p, cShortType, cShortThick, cShortColor, "S"+x );
//-- if level not yet broken then
draw the price
if ( aLevels[x].Broken==false ||
_hidebroken==false ) {
s=
p.toFixed(cDecimals);
drawTextRelative(
cExtend+1, p, s, cTextColor, null, Text.VCENTER, null, cFontSize, "ST"+x );
}
}
}
}
x++;
}
}

function checkDaysBack( _len, _max ) {


var x=1;
var days = 0;

while( x<_len+1 ) {
if ( getDay(-x)!=getDay(-(x+1)) ) {
days++;
}
if ( days>_max ) {
return(true);
}
x++;
}

return( false );
}

function isHigher( _len, _val, _src ) {


var x=2;
var y = getNumBars()-1;

if ( y<_len ) return( false );

while( x<_len+2 ) {
if ( _src.getValue(-x)>=_val ) {
return( false );
}
x++;
if ( x>=y ) {
return( false );
break;
}
}
return( true );

//== gID function assigns unique identifier to graphic/text routines


function gID() {
grID ++;
return( grID );
}

//==rnd will round to N digits.


function rnd(value, N) {
var n;
var mult=1;
for(n=0;n<N;n++) mult*=10;
value*=mult;
return Math.round( value,N)/mult;
}

//== Frac functions returns the fractional portion of a real number


function Frac( iVal ) {
var x = Math.floor( iVal );
return( iVal - x );
}

Step 7: Repeat steps 1 through 5 for the VSA Candlesticks


To do this, copy and paste the code below. Save it as VSA Candlesticks in the
folder name Other.
========================================================
=============
Project Description:

Dislaimer: For educational purposes only! Obviously, no guarantees


whatsoever and use at your own risk.
********************************************************************
**/

var STUDY_TITLE = "Hi Volume";

//External Variables
var grID = 0;
var nBarCounter = 0;
var aFPArray = new Array();
var bInitialized = false;
var nStatus = 0;
var nDir = 0;

var nP1 = 5;
var nP2 = 10;
var nP3 = 20;
var nP4 = 50;

//== PreMain function required by eSignal to set things up


function preMain() {
var x;

setPriceStudy(true);
setStudyTitle( STUDY_TITLE );
setShowTitleParameters( false );

setColorPriceBars( true );

//unrem this if you don't want the labels in cursor window


setShowCursorLabel(false);

//unrem this if you don't want the study to update on every tick
//setComputeOnClose();
grID = 0;

//initialize formula parameters


x=0;
aFPArray[x] = new FunctionParameter( "fPeriod1",
FunctionParameter.NUMBER);
with( aFPArray[x] ) {
setName( "Lookback #1" );
setLowerLimit( 1 );
setDefault( 5 );
}
x++;
aFPArray[x] = new FunctionParameter( "fPeriod2",
FunctionParameter.NUMBER);
with( aFPArray[x] ) {
setName( "Lookback #2" );
setLowerLimit( 1 );
setDefault( 10 );
}
x++;
aFPArray[x] = new FunctionParameter( "fPeriod3",
FunctionParameter.NUMBER);
with( aFPArray[x] ) {
setName( "Lookback #3" );
setLowerLimit( 1 );
setDefault( 20 );
}
x++;
aFPArray[x] = new FunctionParameter( "fPeriod4",
FunctionParameter.NUMBER);
with( aFPArray[x] ) {
setName( "Lookback #4" );
setLowerLimit( 1 );
setDefault( 50 );
}
x++;
aFPArray[x] = new FunctionParameter( "fUpPriceColor1",
FunctionParameter.COLOR);
with( aFPArray[x] ) {
setName( "Status 0 Up" );
setDefault( Color.RGB(179,255,179) );
}
x++;
aFPArray[x] = new FunctionParameter( "fDnPriceColor1",
FunctionParameter.COLOR);
with( aFPArray[x] ) {
setName( "Status 0 Dn" );
setDefault( Color.RGB(255,191,191) );
}
x++;
aFPArray[x] = new FunctionParameter( "fUpPriceColor2",
FunctionParameter.COLOR);
with( aFPArray[x] ) {
setName( "Status 1 Up" );
setDefault( Color.RGB(0,128,0) );
}
x++;
aFPArray[x] = new FunctionParameter( "fDnPriceColor2",
FunctionParameter.COLOR);
with( aFPArray[x] ) {
setName( "Status 1 Dn" );
setDefault( Color.RGB(255,0,0) );
}
x++;
aFPArray[x] = new FunctionParameter( "fUpPriceColor3",
FunctionParameter.COLOR);
with( aFPArray[x] ) {
setName( "Status 2 Up" );
setDefault( Color.RGB(0,102,51) );
}
x++;
aFPArray[x] = new FunctionParameter( "fDnPriceColor3",
FunctionParameter.COLOR);
with( aFPArray[x] ) {
setName( "Status 2 Dn" );
setDefault( Color.RGB(170,0,0) );
}
x++;
aFPArray[x] = new FunctionParameter( "fUpPriceColor4",
FunctionParameter.COLOR);
with( aFPArray[x] ) {
setName( "Status 3 Up" );
setDefault(Color.RGB(0,60,0) );
}
x++;
aFPArray[x] = new FunctionParameter( "fDnPriceColor4",
FunctionParameter.COLOR);
with( aFPArray[x] ) {
setName( "Status 3 Dn" );
setDefault( Color.RGB(119,0,0) );
}
x++;
aFPArray[x] = new FunctionParameter( "fUpPriceColor5",
FunctionParameter.COLOR);
with( aFPArray[x] ) {
setName( "Status 4 Up" );
setDefault( Color.black );
}
x++;
aFPArray[x] = new FunctionParameter( "fDnPriceColor5",
FunctionParameter.COLOR);
with( aFPArray[x] ) {
setName( "Status 4 Dn" );
setDefault( Color.black );
}
x++;
aFPArray[x] = new FunctionParameter( "fDefColor",
FunctionParameter.COLOR);
with( aFPArray[x] ) {
setName( "Default Price Bar Color" );
setDefault( Color.grey );
}
x++;
aFPArray[x] = new FunctionParameter( "fWickColor",
FunctionParameter.COLOR);
with( aFPArray[x] ) {
setName( "Candle Wick Color" );
setDefault( Color.black );
}
x++;
aFPArray[x] = new FunctionParameter( "fThinWicks",
FunctionParameter.BOOLEAN);
with( aFPArray[x] ) {
setName( "Thin Candle Wicks?" );
setDefault( false );
}
x++;
aFPArray[x] = new FunctionParameter( "fHollowCandle",
FunctionParameter.BOOLEAN);
with( aFPArray[x] ) {
setName( "Hollow Candles?" );
setDefault( false );
}

//== Main processing function


function main( fPeriod1, fPeriod2, fPeriod3, fPeriod4,
fUpPriceColor1, fDnPriceColor1,
fUpPriceColor2, fDnPriceColor2,
fUpPriceColor3, fDnPriceColor3,
fUpPriceColor4, fDnPriceColor4,
fUpPriceColor5, fDnPriceColor5,
fDefColor,
fWickColor,
fThinWicks,
fHollowCandle ) {
var x;
//script is initializing
if ( getBarState() == BARSTATE_ALLBARS ) {
return null;
}

if ( bInitialized == false ) {

setDefaultPriceBarColor( fDefColor );

nP1 = Math.round( fPeriod1 );


nP2 = Math.round( fPeriod2 );
nP3 = Math.round( fPeriod3 );
nP4 = Math.round( fPeriod4 );

bInitialized = true;
}

//called on each new bar


if ( getBarState() == BARSTATE_NEWBAR ) {

nBarCounter++;

nStatus = volScan( volume(0), nP1, nP2, nP3, nP4 );


nDir = close(0)>=open(0) ? 1 : -1;

if ( nStatus==0 ) {
if ( nDir==1 ) {
setPriceBarColor( fUpPriceColor1, fWickColor,
fThinWicks==true, fHollowCandle==true );
}
else {
setPriceBarColor( fDnPriceColor1, fWickColor,
fThinWicks==true, fHollowCandle==true );
}
}
if ( nStatus==1 ) {
if ( nDir==1 ) {
setPriceBarColor( fUpPriceColor2, fWickColor,
fThinWicks==true, fHollowCandle==true );
}
else {
setPriceBarColor( fDnPriceColor2, fWickColor,
fThinWicks==true, fHollowCandle==true );
}
}
if ( nStatus==2 ) {
if ( nDir==1 ) {
setPriceBarColor( fUpPriceColor3, fWickColor,
fThinWicks==true, fHollowCandle==true );
}
else {
setPriceBarColor( fDnPriceColor3, fWickColor,
fThinWicks==true, fHollowCandle==true );
}
}
if ( nStatus==3 ) {
if ( nDir==1 ) {
setPriceBarColor( fUpPriceColor4, fWickColor,
fThinWicks==true, fHollowCandle==true );
}
else {
setPriceBarColor( fDnPriceColor4, fWickColor,
fThinWicks==true, fHollowCandle==true );
}
}
if ( nStatus==4 ) {
if ( nDir==1 ) {
setPriceBarColor( fUpPriceColor5, fWickColor,
fThinWicks==true, fHollowCandle==true );
}
else {
setPriceBarColor( fDnPriceColor5, fWickColor,
fThinWicks==true, fHollowCandle==true );
}
}

return( null );

/*************************************************
SUPPORT FUNCTIONS
**************************************************/
function volScan( _vol, _p1, _p2, _p3, _p4 ) {
var x = 1;
var nState = 0;
var nMax1 = 0;
var nMax2 = 0;
var nMax3 = 0;
var nMax4 = 0;

while( x<=_p4 ) {

if ( x<=_p1 ) {
nMax1 = Math.max( nMax1, volume(-x) );
}
if ( x<=_p2 ) {
nMax2 = Math.max( nMax2, volume(-x) );
}
if ( x<=_p3 ) {
nMax3 = Math.max( nMax3, volume(-x) );
}
if ( x<=_p4 ) {
nMax4 = Math.max( nMax4, volume(-x) );
}
x++;
}

if ( _vol>nMax1 ) {
nState = 1;
}
if ( _vol>nMax2 ) {
nState = 2;
}
if ( _vol>nMax3 ) {
nState = 3;
}
if ( _vol>nMax4 ) {
nState = 4;
}

return( nState );

//== gID function assigns unique identifier to graphic/text routines


function gID() {
grID ++;
return( grID );
}

//==rnd will round to N digits.


function rnd(value, N) {
var n;
var mult=1;
for(n=0;n<N;n++) mult*=10;
value*=mult;
return Math.round( value,N)/mult;
}

//== Frac functions returns the fractional portion of a real number


function Frac( iVal ) {
var x = Math.floor( iVal );
return( iVal - x );
}

* If you are having a hard time copying this code from your Kindle tablet, I
strongly recommend you open the Kindle app on your desktop computer to
copy and paste the code.
15. ADJUSTING VSA SETTINGS ON ESIGNAL

VOLUME SPIKE INDICATOR


When adjusting the Volume Spike Indicator, you will notice a parameter
called Lookback. In the Volume Spike Indicator, you will be able to change
the color of the volume spike for 4 different parameters. Each of these
parameters must be given a value under the Lookbook property. For example
in the picture below, the first Lookback property is 5 with a highlight color of
Blue. This means that if the volume spike is larger than the past 5 volume
bars, the volume bar will be drawn on your chart in the color blue. Notice at
the bottom you can set the default color of your volume bars. Moving on to
Lookback #2, the value is 20 with a highlight color of Green. This means that
if the volume spike is larger than the past 20 volume bars, the volume bar
will be drawn on your chart in the color green, and so on.

VSA SPIKE LEVEL


Just like in the Volume Spike Indicator, you will need to set the parameters
for Lookback.
For the VSA Spike Level indicator, you will only have 1 Lookback period.
This is because if you have more than 1 Lookback period, you will have too
many different lines drawn on your chart and this will become confusing. If
you wish to have more than 1 Lookback period, simply add the indicator on
your chart again. In the picture below, the Lookback period is set at 200.

For example, if a trading period occurred in the past where the volume spike
was greater than the previous 200 volume bars, then a line will be drawn on
your chart. If the volume occurred on an up day, the line will be drawn at the
high of the day. If the volume occurred on a down day, the line will be drawn
at the low of the day. You can change the color of the volume line as well.

VSA CANDLESTICKS
The VSA Candlesticks are based on the Lookback parameter. For this
indicator, you have 4 Lookback periods. You will also need to select the
color for the standard candlesticks (usually red and green), as well as for the
custom candlesticks. The candlesticks will change colors based on the
volume of each period. According the settings in the image below, every time
a volume bar is greater than the past 200 periods, the price candlestick will
turn to the color pink.

The End
BONUS- SAMPLE FROM “EVERYTHING YOU NEED TO KNOW
ABOUT TRADING”

Chapter 21: Catalyst trading

Trading Strategies

- In school and books you may learn about riskless arbitrage


- Computers and technology have practically removed all market
inefficiencies that provide riskless profits
- There is no free lunch in the real trading world
- Even so called arbitrage can cause disastrous losses (research LTCM)
- All strategies have some form of risk
Catalyst Trading

- Catalyst is something that causes an important event to happen


- In trading, a catalyst is something that will move a stock in either direction

Using Catalysts for Trading Stocks

- Look for catalysts that are big enough to overcome the risks
- Macro based events are impossible to gain an edge over the market (Macro
event cannot be your catalyst)
- Look for catalysts that can be identified and quantified through
comprehensive research
- Make a short list of two to four critical factors per stock you trade or
follow
- The best traders combine catalyst trading with technical analysis

Finding Fundamental Catalysts for Trading

- Blogs (a select few)


- Company sponsored analyst meetings and calls
- Earnings releases
- The company’s annual pricing, volume, earnings guidance or projection
- Deadlines for new legislation, regulations or court case outcomes
- Prescheduled announcements by the company’s customers, competitors or
suppliers
- New product releases or significant product extensions
- Interim sales data for the company or sector

Catalyst Idea #1: Buy the Rumor, Sell the News

- Anticipation of a new exciting product can be seen in the stock chart price
increase weeks before the announcement
- As more and more investors hear about a potential game changing product,
option premiums and stock values tend to increase with the excitement
- A trader needs to be aware of all potential development that could cause
large price moves in a stock
- The trader will buy the stock when very few people are talking about the
announcement and sell before the news is announced: Buy the rumor, Sell
the news
Earning’s Surprise

- An earning’s surprise occurs when the earnings reported in a company's


quarterly report are above or below analysts' earnings estimates
- Large earning misses or beats by companies lead to large stock price
movements
- To determine how wide the beat or miss was, look at the analyst consensus
- The market tends to not fully digest the importance of the news right away

Catalyst Idea #2: Earning’s Surprise

- Studies show that earnings surprises accompanied by large volume lead


to persistent momentum in stock prices in the short term
- Takes advantage of the bias of Wall Street analysts (it takes time for them to
adjust their future forecasts)
- These are good trading candidates to ride the short term momentum
- Traders should buy high volume winners and short sell high volume
losers

Short Interest

- Short interest is the percentage of a stock outstanding that is borrowed for


short sales
- 10% short interest means that 10% of the outstanding shares are held short
- Short interest ratio is the Short Interest / Avg Daily Volume
- If there are too many short investors on a stock, this might constrain the
liquidity of the stock and you could get a short squeeze
- A short squeeze occurs when short investors scramble to cover their
position at the same time. - - This usually occurs after good earnings or a
good news development occurs on a heavily shorted stock
- If a stock rises a lot in one day, those with short positions may be forced to
cover their position by purchasing the stock. If enough short sellers buy back
the stock at the same time, the price will be pushed even higher

Catalyst Idea # 3: Short Squeeze

- A stock is heavily shorted because investors are skeptical of the valuation.


The short interest ratio is 15, meaning it would take 15 days of average
volume for the shorts to buy back the stock and close their position
- Unanticipated good news is released by the company early in the morning:
A new partnership (with Apple), a new contract (with Wal-Mart) ….
- The stock indication is that the stock will gap up a large amount and none
of the shorts have covered since the market hasn’t opened yet
- Buy this stock off the open to take advantage of the pain of the shorts that
will have to cover and buy back the shares that they are short on the opening
of the trading day

Notes on Short Selling

- Do not sell short anything just because its valuation appears silly (Valuation
is not a catalyst)
- Twice a silly valuation is not twice as silly. It is still just silly
- Best shorts are frauds. Look for fraud accusations
- Figure out what the market thinks
- Can the company be taken over?
- Use puts instead of shorting (less risky)

Other Factors to Find Catalyst Ideas

- Insider buying and selling with analyst coverage


- Stock ownership
- Float

Insider Buying and Selling

- When insiders sell their personal holdings of a particular company and


analysts issue downgrades, these stocks tend to lag the market over the next 4
quarters
- When insiders are quiet and analysts downgraded expectations, stocks did
even worse than when insiders sold concurrently with analyst downgraded
- When insiders sell stock at decreasing prices, it’s a sign that they think
company prospects have deteriorated
- As a group, insiders tend to be too early in their buying and selling. Also
important, their buying tends to be more telling than their selling

Institutional Ownership

- Institutional investors take very large positions


- Retail investors take much smaller positions
- Less than 30% institutional ownership is questionable
- Ideally you want a minimum of 10 institutional owners
- Analyze the quality of ownership: Soros/Paulson/ Hedge Funds
- Identify the potential owner who will eventually bid the stock higher
- Stocks can become over owned
- Over 1000 institutional owners is too many
Float

- The real number of shares available for trading.


- The float is calculated by subtracting restricted shares (shares that cannot
be sold today) from the outstanding shares
- Smaller float stocks are more likely to have faster moves than larger float
companies
- A 5 billion share float is hard to push while 50 million is easy, especially
for short squeezes
- Stocks with smaller floats tend to be more volatile than those with larger
floats

Idea Generation Tools

- www.googletrends.com
- www.stocktwits.com/
- www.stockpickr.com/
- www.marketminder.com
- www.frontlinethoughts.com
- www.j3sg.com
- www.inside-monitor.com
- www.carpenteranalytix.com
- www.btobonline.com/vertical
- http://www.greenwich.com/
- http://www.glgresearch.com/
To purchase:
http://www.amazon.com/Everything-Need-Know-About-Trading-
ebook/dp/B00G4QZPCM/ref=sr_1_1?s=digital-
text&ie=UTF8&qid=1395277338&sr=1-
1&keywords=everything+you+need+to+know+about+trading

You might also like