September 1998
TRADERS' TIPS

Here is this month's selection of Traders' Tips, contributed by various developers of technical analysis software to help readers more easily implement some of the strategies presented in this issue.

You can copy these formulas and programs for easy use in your spreadsheet or analysis software. Simply "select" the desired text by highlighting as you would in any word processing program, then use your standard key command for copy or choose "copy" from the browser menu. The copied text can then be "pasted" into any open spreadsheet or other software by selecting an insertion point and executing a paste command. By toggling back and forth between an application window and the open Web page, data can be transferred with ease.

This month's tips include formulas and programs for:





 TRADESTATION / SUPERCHARTS
 METASTOCK
 SMARTRADER
 WAVEWI$E MARKET SPREADSHEET
 TECHNIFILTER PLUS
or return to September 1998 Contents

TRADESTATION / SUPERCHARTS

The focus of this month's Traders' Tips is the combination of a simple moving average with support and resistance, as presented by Dennis Tilley in his article "Moving averages with resistance and support." I have integrated this very interesting concept into both an indicator and a system for TradeStation or SuperCharts. Notice that the EasyLanguage codes for the indicator and the system are very similar.

We'll begin with the indicator, named "Mov avg--supp/res." The indicator has three inputs. "Price" and "length" are parameters for the basis of the moving average. "F" is the critical percentage, and should be entered as the percent value (8 = 8%). The plots for the indicator are as follows: the simple moving average line; points representing the support levels; and points representing the resistance levels. In order for the plots to appear correctly, the style for the indicator must be properly set (formatting information will follow the EasyLanguage code for the indicator).





Type: Indicator
Name: Mov Avg--Supp/Res




Inputs: Price(Close), Length(10), F(8);
Vars: AvgVal(0), S(0), R(0), SC(0), RC(0);

AvgVal = Average(Price, Length);
RC = RC + 1;
SC = SC + 1;

IF Close Crosses Below AvgVal AND Close > S* (1+(F/100)) AND R <> 0 Then Begin
        For value1 = RC-2 TO RC+2 Begin
                Plot2[value1](R, ÒRÓ);
        End;
        Alert = True;
        S = L;
        SC = 0;
End
Else Begin
        IF Close Crosses Below S AND R <> 0 Then Begin
                For value1 = RC-2 TO RC+2 Begin
                        Plot2[value1](R, ÒRÓ);
                End;
                Alert = True;
                S = L;
                SC = 0;
        End;
End;

IF Close Crosses Above AvgVal AND Close < R / (1+(F/100)) AND S <> 0 Then Begin
        For value1 = SC-2 TO SC+2 Begin
                Plot3[value1](S, "S");
        End;
        Alert = True;
        R = H;
        RC = 0;
End
Else Begin
        IF Close Crosses Above R AND S <> 0 Then Begin
                For value1 = SC-2 TO SC+2 Begin
                        Plot3[value1](S, "S");
                End;
                Alert = True;
                R = H;
                RC = 0;
        End;
End;

IF Close > AvgVal Then Begin
        IF High >= R Then Begin
                R = High;
                RC = 0;
        End;
End;

IF Close < AvgVal Then Begin
        IF Low <= S OR S = -1 Then Begin
                S = Low;
                SC = 0;
        End;
End;

Plot1(AvgVal, "SMA");

Style:
       Plot   Name   Type  Color  Weight
        Plot1   SMA     Line    Blue    thinnest
        Plot2   R       Point   Magenta medium
        Plot3   S       Point   Cyan    medium
Scaling: Same as Price Data
Properties: Enable Alert
The EasyLanguage for the moving average system is very similar to that for the indicator. The inputs "price," "length," and "F" have the same purpose.

Type: System
Name: Mov Avg--Supp/Res





Inputs: Price(Close), Length(10), F(8);
Vars: AvgVal(0), S(0), R(0), SC(0), RC(0);

AvgVal = Average(Price, Length);
RC = RC + 1;
SC = SC + 1;

IF CurrentBar > 1 Then Begin
IF Close Crosses Below AvgVal AND Close > S* (1+(F/100)) AND R <> 0 Then Begin
        Sell Next Bar at Market;
        S = Low;
        SC = 0;
End
Else Begin
        IF Close Crosses Below S AND R <> 0 Then Begin
                Sell Next Bar at Market;
                S = Low;
                SC = 0;
        End;
End;

IF Close Crosses Above AvgVal AND Close < R / (1+(F/100)) AND S <> 0 Then Begin
        Buy Next Bar at Market;
        R = High;
        RC = 0;
End
Else Begin
        IF Close Crosses Above R AND S <> 0 Then Begin
                Buy Next Bar at Market;
                R = High;
                RC = 0;
        End;
End;
IF Close > AvgVal Then Begin
        IF High >= R Then Begin
                R = High;
                RC = 0;
        End;
End;

IF Close < AvgVal Then Begin
        IF Low <= S OR S = -1 Then Begin
                S = Low;
                SC = 0;
        End;
End;
End;
This code is available at Omega Research's Web site. The file name is "MA_SR.ELA." Please note that all the Traders' Tips analysis techniques that are posted at the Omega Research Web site can be utilized by both TradeStation and SuperCharts. Whenever possible, the posted analysis techniques will include both Quick Editor and Power Editor formats.
--Gaston Sanchez, Omega Research

800 422-8587, 305 270-1095
Internet: https://www.OmegaResearch.com
GO BACK

METASTOCK

In this issue, Dennis Tilley uses support and resistance to confirm price and simple moving average (SMA) crossover signals in his article "Moving averages with resistance and support."

In MetaStock for Windows, you can easily recreate the SMARS indicators discussed in Tilley's article. First, choose Indicator Builder from the Tools menu in MetaStock 6.5. Next, choose New and enter the following formulas:

Resistance and Support
LookBack := Input("Look Back Periods",1,1000,10);
Resistance :=ValueWhen (1,Cross(Mov(C, LookBack, S),C),HHV(H, LookBack));
Support :=ValueWhen (1,Cross(C,Mov(C, LookBack, S)),LLV(L, LookBack));
Resistance;
Support;

Resistance and Support * F
PrCnt:=Input("Percentage",0,100,10);
LookBack:= Input("Look Back Periods",1,1000,10); Resistance:=ValueWhen(1,Cross(Mov(C,LookBack,S),C),HHV(H,LookBack)); Support:=ValueWhen(1,Cross(C,Mov(C,LookBack,S)),LLV(L,LookBack));
Resistance * ((100-prcnt)/100);
Support * ((prcnt/100)+1);

(Note that it's much easier to see the difference between the resistance and support * F lines and the actual resistance and support lines if you change the color and/or style of one of them.)

To display the indicators in MetaStock 6.5, drag the moving average indicator from the Indicator QuickList into the price window. Choose simple as the method, enter the time periods and then click OK.

Now, drag the resistance and support indicator from the QuickList into the price window. You will be prompted to enter the lookback periods. You should select the same time periods that you used for the moving average.

Finally, drag the "resistance and support * F" indicator into the price window. You will be prompted to enter the percentage and the lookback periods. If you would like the indicator to be a 10% difference from the resistance and support line, you would enter 10. Again, you should select the same time periods you used for the moving average.

--Allan J. McNichol, Equis International

800 882-3040, 801 265-8886
Internet: https://www.equis.com
GO BACK

SMARTRADER

Implementation of Dennis Tilley's SMARS indicators is simple in SmarTrader. (See the SmarTrader specsheet in Figure 1.) Begin by adding a coefficient in row 9, which is named "periods," to contain the number of weeks (10) for the simple moving average (SMA) and the lookback for support and resistance. Row 10 is a simple moving average of the close (row 6) using the coefficient periods. Row 11 determines the resistance level (R) using the function "highest" on close for periods. Row 12 determines the support level (S) using the function "lowest." Note that the SMA, R and S all use the coefficient periods. This makes for easy what-if testing by just changing the value held in periods.

Another coefficient, "percent" in row 13, was used to contain the value of the "critical percentage" as a fraction. Row 14, "Rwork," is a user row that calculates the level of the critical percent below R. Row 15, "Swork," similarly computes the critical percent above S. Rows 16 and 17 are user rows defining the conditions for buy and sell. Note in the next row, "trade," the short entry and exit are set to zero to prevent any short trades.

We tested this system using the S&P cash for data using only a 10-week SMA. We did try various values for percent and found that 2% worked best, since this data is trending steadily up. The result was strong equity gain with very few trades.

CompuTrac SNAP users can implement this system with no changes.

This specsheet file is available on Stratagem Software's Web site.

FIGURE 1: SMARTRADER. This SmarTrader specsheet implements Dennis Tilley's simple moving average system.

--Jim Ritter, Stratagem Software International

504 885-7353, E-mail: Stratagem1@aol.com
Internet: https://members.aol.com/stratagem1
GO BACK


WAVEWI$E MARKET SPREADSHEET

These Wave Wi$e formulas implement Dennis Tilley's simple moving average system.

A: DATE @TC2000(C:\TC2000\DATA,SP-500,STANDARD & POORS 500,DB)
B: HIGH
C: LOW
D: CLOSE
E: OPEN
F: VOL
G: convert @CONVERT(1) 'CONVERT DATA TO WEEKLY OR MONTHLY H: period 20 'CHANGE PERIOD AS DESIRED
I: avg @MAVG(CLOSE,PERIOD)
J: signals @SIGNAL(CLOSE,BUY, CLOSE>=AVG, CLOSE<AVG)
K:
L: color @IF(SIGNALS>0, GREEN,RED) 'COLOR BUY/SELL BARS
M:
==========End Formulas

--Peter Di Girolamo, Jerome Technology

908 369-7503, E-mail: jtiware@aol.com
Internet: https://members.aol.com/jtiware
GO BACK


TECHNIFILTER PLUS

Given here is a TechniFilter Plus strategy that implements Dennis Tilley's simple moving average system. The resistance and support levels are given in formulas 2 and 3. The resistance requires tracking the maximum high while the close is above the average in a recursive manner. The support is computed in an analogous manner. The buy signal checks to see if the close has broken the resistance level, or if it has broken the average away from the resistance level. The sell signal is similar. Note that the strategy requires the position limit to be set in order to avoid opening multiple positions.




SMARS Trading Strategy
NAME: SMARS
TEST TYPE: stock
DATE RANGE: all
POSITION LIMIT: 1




FORMULAS---------------------
[1] Date
[2] Resistance
     [1]: C>CA&1
     [2]: ([1]=[1]Y1) * [1] * (TY1%H) + ([1]<>[1]Y1) * [1] * H {r}
     [3]: ([2]Y1 * ([2]=0))U31
     [4]: [3]
[3] Support
     [1]: C<=CA&1
     [2]: ([1]=[1]Y1) * [1] * (TY1#L) + ([1]<>[1]Y1) * [1] * L {r}
     [3]: ([2]Y1 * ([2]=0))U31
     [4]: [3]
[4] Close
     C
[5] SMA(10)
     CA&1
[6] Cross
     (C>[5])U2-TY1




RULES---------------------
r1: Buy
     buy long 1 on Close
     at signal: Buy ([4] > [2]) ^ ( ( [6]=1) & ( [2]/[5]>1.08))
r2: Sell
     sell long 1 on Close
     at signal: Sell ([4] < [3]) ^ ( ( [6]=-1) & ( [5]/[3]>1.08))
This TechniFilter Plus strategy and the reports, strategies and formulas of earlier Traders' Tips can be downloaded from RTR's Web site.
--Clay Burch, Rtr Software

919 510-0608, E-mail: rtrsoft@aol.com
Internet: https://www.rtrsoftware.com
GO BACK

Return to September 1998 Contents