September 2000
Trading Tip: A-B-C Wave Forecast
by Howard Arrington
Ensign Windows has a wide variety of draw tools and technical studies.
This issue highlights the ABC wave forecast tool. To draw the
Elliott Wave ABC lines on a chart, click the Draw Tools button on
the main button bar, and then click on the Formations
button. The cursor will change to a pencil while in the draw mode.
Use ABCs to mark price and time movements from important highs, lows, and
corrections. They can also be used to indicate the possible turning point
of the current trend or correction.
Three points are necessary to draw ABCs on a chart. To draw the ABC
tool on a chart select the 1st point from an intermediate high or low by moving
the cursor to the point, then hold down the left mouse button and drag to the
2nd point (end of wave A). The 2nd point should be the high or low of the
subsequent correction. Release the mouse and then move to the 3rd point
(end of wave B). The 3rd point is generally the point where the
correction ended. Click the left mouse button to mark the 3rd
point. You have manually traced the A and B waves, and the tool
forecasts the C wave. The principle is that wave C will have the same
magnitude, duration, and slope as wave A.
The following illustration was cut from the middle of a customer's chart
which was sent to Ensign Software as an e-mail attachment.
It is always refreshing to see customers putting to good use the tools and
features built into Ensign Windows. Let's talk about some of the tools and
studies I see the customer is using in his analysis. The A and B waves of
the yellow ABC tool helped correctly forecast wave C. The A and B waves of
the following white ABC tool have helped forecast the slope and extent of its
wave C, which this customer traded short and nailed a great exit price. I
believe the customer actually sold the market short at the levels indicated, and
covered his short trades at the levels marked by 'Out'. So, he uses the
ABC wave forecast tool in his analysis and marked his trades using the Arrow
tool.
The chart shows a study, possibly some kind of averages of the bar highs, bar
lows, and bar closes. I do not know which study is on this chart, its
parameters, or its interpretation. The customer also uses three more
studies drawn in two study sub-panels below the chart (not shown). The
vertical lines of blue dots are from a cycle tool. The bars are drawn
using candlesticks, and painted with the Trends or Small Trends color bar
study. Well, you might ask, 'Why don't I know more details about what this
customer is doing?' I didn't ask, and he didn't volunteer any
details. Besides, all I am trying to show with this illustration is the
use of the ABC tool in real-time trading, which has been done skillfully.
I consider an actual undoctored example worth a lot more than my putting an ABC
tool on a chart with the benefit of hindsight. This illustration of the
ABC tool on an actual chart is an excellent example for this article. I
hope you have picked up an idea or two to use in your trading.
Article: Tick On Balance Volume
by Howard Arrington & Kimball Hansen
Customers recently requested the ability to accumulate up and down tick
volumes. A new statement was added to ESPL to support tapping into the
data feed so that this could be accomplished for a few symbols using ESPL.
The new statement is an AlertEvent that fires a call to ESPL each time a trade
tick is received for a symbol on the alert watch list. The following ESPL
script illustrates the AlertEvent statement and how volumes can be accumulated
and plotted.
// BidAsk.spt -- On Balance Volume (OBV) for Bid and Ask
trades
//
// Click Menu 8 to start the program.
// Click Menu 9 to stop the program.
//
// This program updates a User Defined Symbol for a stock's BidAsk tick volume.
// Tick volume for Ask Price trades is added to the running total (buy volume).
// Tick volume for Bid Price trades is subtracted from the total (sell volume).
// A custom symbol named symbol+'OBV' in the Cash market group has the
results.
//
// AlertEvent(eTrade) calls ESPL for each alert symbol trade.
procedure Start;
begin
Output(eClear); writeln('Process Started');
Alert('IBM',FindMarket('IBM'),0,0);
{Create Alert for IBM}
Alert('@ES0Z',FindMarket('@ES0Z'),0,0);
{Create Alert for @ES0Z}
{repeat the above statement to add others}
AlertEvent(eTrade,99);
{Setup AlertEvent}
end;
procedure Stop;
begin
writeln('Process Stopped'); AlertEvent(eClear); {Stop the
AlertEvents}
Alert('IBM',
FindMarket('IBM'),0,eNone); {Remove
the IBM Alert entry}
Alert('@ES0Z',
FindMarket('@ES0Z'),0,eNone); {Remove the @ES0Z
Alert entry}
{repeat the above statement to remove others}
end;
procedure ProcessTrade;
var
Market,IncVol,Vol: integer;
MidPrice: real;
begin
if Find(eCash,IT+'OBV') then
Vol :=
GetData(eLast,True) {Retrieve Cumulative Volume}
else
Vol := 0;
Market:=FindMarket(IT);
MidPrice:= (GetData(eAsk,True)+GetData(eBid,True))/2;
if GetData(eLast,True) >= MidPrice
then {Add the Ask Tick
Volume}
if Market=eFuture then IncVol:=GetData(eAskSize)
else IncVol:=GetData(eTickVolume)
else {Subtract the Bid Tick Volume}
if Market=eFuture then IncVol:=-GetData(eBidSize)
else IncVol:=-GetData(eTickVolume);
Update(IT+'OBV',Vol+IncVol,1,0,eCash); {Update
the Custom Quote Price}
end;
{****MAIN PROGRAM****}
begin
if who=8 then Start;
if who=9 then Stop;
if who=99 then ProcessTrade;
end;
Click the #8 menu to Start the monitoring of tick volumes for the
symbols set up in the Start procedure.
Click the #9 menu to Stop the processing of ticks.
Statements like this add a symbol to the Alert form, but do not set any price
alerts, although such could be done.
Alert('IBM',FindMarket('IBM'),0,0);
{Create generic Alert for IBM}
Each symbol needs to be in the Alert form because that alert list is used by
the AlertEvent function to fire a call to ESPL when a tick is received for
any symbol on the alert list. The following statement sets up the
trigger to call ESPL with a value of 99 loaded into the global Who variable.
AlertEvent(eTrade,99);
{Start AlertEvent}
Therefore, in the Main Program, Who is tested for a value of
99 to route execution to the ProcessTrade procedure. The symbol which
fired the AlertEvent call is passed in the global IT
variable. This variable is used to construct a custom symbol used to total
the On Balance Volume data. If the symbol is a Future, the incremental
volume will be either the AskSize or the BidSize. For stocks the
incremental volume is the trade volume. Results from the script are
illustrated using the @ES0Z symbol on the DTN data feed in this image.
This tick chart shows the On Balance Volume plotted as the host chart in
black, and the @ES0Z prices are overlaid in blue. Naturally there will be
perfect time sync between these two tick charts because each @ES0Z tick
created a corresponding on balance volume tick. Also, it seems logical
that in a rising market more trades will be at the ask price, and the on balance
volume plot should ascend. And, in a falling market more trades will
be at the bid price, and the on balance volume plot should descend.
Whether there is some advantage to be gained by having a plot of the On Balance
Volume for tick charts, as illustrated above, is yet to be determined. I
am unsure what customers are looking for, but by providing these additional
tools, research can be done. If there is something significant to be
found, one or more of our advanced users will discover it and hopefully share
with all of us.
Feature Tip: Printed Chart Message
by Howard Arrington
Four lines of text can be printed at the bottom of a printed chart.
This text might be used to display a message, market commentary, copyright
notice, disclaimer, or company address. The text to be printed will be
read from an ASCII text file named C:\Ensign\Message.txt. This simple ESPL
script illustrates how the contents of the Message.txt file can be created or
changed prior to printing a chart. This script is designed to execute by
clicking the #9 menu or the #9 button on the script editor form.
{----- MAIN PROGRAM -----}
begin
if Who = 9 then begin
Output(eClear);
{erase the output window}
writeln('Ensign
Software'); {write 3
lines of text}
writeln('113 Stillwater Drive');
writeln('Idaho Falls, ID 83404');
Output(eSave,'Message.txt');
{save to the Message file}
Chart('IBM.D');
mnuPrintWindow.click;
{print the chart}
mnuCloseWindow.click;
{close the chart}
Output(eClear);
{erase the output window}
writeln('First line of commentary'); {write a new
message}
writeln('Second line');
writeln('Third line');
writeln('Fourth line');
Output(eSave,'Message.txt');
{save to the Message file}
Chart('CSCO.D');
mnuPrintWindow.click;
{print the chart}
mnuCloseWindow.click;
{close the chart}
end;
end;
|