[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Alexander Elder's new "SafeZone Stop"



PureBytes Links

Trading Reference Links

John,

While I haven't finished the book yet, it seems as good as his first book
"Trading for a Living".  I would definitely recommend it.

There are several new items that appear very valuable, that include the
SafeZone Stop, a "Impulse Trading System" and a "Market Thermometer".

The "Impulse System" was designed to identify the inflection points where a
trend speeds up or slows down.  It works in all time frames and it uses the
Triple Screen thought process as follows:

1- Select timeframe to trade (ie daily ).  Multiple this time frame by 5 to
define long-term timeframe (ie. weekly ).
2- use slope of EMA, or slope of MACD histogram, or both applied to the
Long-term chart to determine Long or Short.   He suggests testing a 26 week
EMA on a weekly chart.
3- When the weekly trend is up, turn to the daily charts and wait for both
the EMA and MACD Histogram to turn up.  This suggests the momentum is in
tune with the inertia, and you have a strong buy signal.
4- He suggests exiting when the daily momentum buy signal disappears.
5- He suggest considering a 13 day EMA and a 12-26-9 MACD Histogram for a
starting point in testing.
6- Reverse procedure for shorts.


The Market Thermometer is a measure of volatility.  The formula and code is
in the next message.

The book is well balanced.  It covers the "Mind" aspect of trading as well
as thoughts on "Money Management".

Elder offers a workbook to go along with his text.   He was taking orders in
March and offering an autographed copy at the following discounted prices:
   Text - $ 35  (retail $ 50)
   Guide $ 24  (retail $ 24)
   If both ordered, deduct an add'l $4.  Shipping was $7 for both.    His
company's 800 # is  800-458-0939


Regards,

Barry Silberman




----- Original Message -----
From: "John Lynch" <kiwi_trader@xxxxxxxxxxxx>
To: "Barry Silberman" <barry@xxxxxxxxxxxxxxxxxxxxx>
Sent: Wednesday, May 01, 2002 4:19 AM
Subject: Re: Alexander Elder's new "SafeZone Stop"


> I'll have a go at the code.  How was the book?
>
>
> ----- Original Message -----
> From: "Barry Silberman" <barry@xxxxxxxxxxxxxxxxxxxxx>
> To: <omega-list@xxxxxxxxxx>
> Sent: Wednesday, May 01, 2002 1:49 PM
> Subject: Alexander Elder's new "SafeZone Stop"
>
>
> To List,
>
> Listed below is my code for implementing Alexander Elder's new "SafeZone
> Stop" that he presented in his new book "Come Into My Trading Room".
(pages
> 173-180).   In an uptrend, he defines noise as that part of each day's
range
> that protrudes below the previous day's low, and in a downtrend, he
defines
> noise as that part of each day's range that protrudes above the previous
> day's high.  The "SafeZone stop" measures market noise and places stops at
a
> multiple of noise levels away from the market.
>
> The code works as is for a 15 day lookback, but I'm sure someone could
> improve the code to
> A) make the "lookback" period a variable
> B) reduce the lines of code by using an array or loops.
>
> =========================================================================
> { Barry Silberman's version of Alexander Elder's "SafeZone Stop" from book
> "Come Into My Trading Room" page 173}
>
> inputs:
>  Price((H+L)/2 ), Length( 22), MULTIPLELONG(1), MULTIPLESHORT(1);
>
> variables:
>  MA(0),  Lday1(0), Lday2(0), Lday3(0), Lday4(0), Lday5(0), Lday6(0),
> Lday7(0), Lday8(0), Lday9(0), Lday10(0),
>  Lday11(0), Lday12(0), Lday13(0), Lday14(0), Lday15(0), Sday1(0),
Sday2(0),
> Sday3(0), Sday4(0), Sday5(0),
>  Sday6(0), Sday7(0), Sday8(0), Sday9(0), Sday10(0), Sday11(0), Sday12(0),
> Sday13(0), Sday14(0), Sday15(0),
>  LONGSUM(0),  SHORTSUM(0) , COUNTLONG(0), COUNTSHORT(0), AVGLOW(0),
> AVGHIGH(0), LONGSTOP(0), SHORTSTOP(0),
>  LSTOP(0), SSTOP(0);
>
> {determine trend by slope of EMA}
> MA = xaverage( Price, Length );
>
> CONDITION1 = MA > MA[3];
> CONDITION2 = MA < MA[3];
>
> {SafeZone for Longs}
>
> IF CONDITION1 THEN BEGIN
>    LDAY1 = IFF(L[1]>L, L[1] - L, 0);
>     LDAY2 = IFF(L[2]>L[1], L[2] - L[1], 0);
>     LDAY3 = IFF(L[3]>L[2], L[3] - L[2], 0);
>     LDAY4 = IFF(L[4]>L[3], L[4] - L[3], 0);
>     LDAY5 = IFF(L[5]>L[4], L[5] - L[4], 0);
>     LDAY6 = IFF(L[6]>L[5], L[6] - L[5], 0);
>     LDAY7 = IFF(L[7]>L[6], L[7] - L[6], 0);
>     LDAY8 = IFF(L[8]>L[7], L[8] - L[7], 0);
>     LDAY9 = IFF(L[9]>L[8], L[9] - L[8], 0);
>     LDAY10 = IFF(L[10]>L[9], L[10] - L[9], 0);
>     LDAY11 = IFF(L[11]>L[10], L[11] - L[10], 0);
>     LDAY12 = IFF(L[12]>L[11], L[12] - L[11], 0);
>     LDAY13 = IFF(L[13]>L[12], L[13] - L[12], 0);
>     LDAY14 = IFF(L[14]>L[13], L[14] - L[13], 0);
>     LDAY15 = IFF(L[15]>L[14], L[15] - L[14], 0);
> End;
>
>
> {TOTAL ALL VALUES OF LOWS BEING LOWER THAN PRIOR LOW}
>
> LONGSUM = LDAY1 + LDAY2 + LDAY3 + LDAY4 + LDAY5 + LDAY6 + LDAY7 + LDAY8 +
> LDAY9 + LDAY10 +
>        LDAY11 + LDAY12 + LDAY13 + LDAY14 + LDAY15;
>
>
> {COUNT NUMBER OF DAYS WITH LOWS BEING LOWER THAN PRIOR LOW}
>
> COUNTLONG = 0;
> IF LDAY1 > 0 THEN COUNTLONG = COUNTLONG + 1;
> IF LDAY2 > 0 THEN COUNTLONG = COUNTLONG + 1;
> IF LDAY3 > 0 THEN COUNTLONG = COUNTLONG + 1;
> IF LDAY4 > 0 THEN COUNTLONG = COUNTLONG + 1;
> IF LDAY5 > 0 THEN COUNTLONG = COUNTLONG + 1;
> IF LDAY6 > 0 THEN COUNTLONG = COUNTLONG + 1;
> IF LDAY7 > 0 THEN COUNTLONG = COUNTLONG + 1;
> IF LDAY8 > 0 THEN COUNTLONG = COUNTLONG + 1;
> IF LDAY9 > 0 THEN COUNTLONG = COUNTLONG + 1;
> IF LDAY10 > 0 THEN COUNTLONG = COUNTLONG + 1;
> IF LDAY11 > 0 THEN COUNTLONG = COUNTLONG + 1;
> IF LDAY12 > 0 THEN COUNTLONG = COUNTLONG + 1;
> IF LDAY13 > 0 THEN COUNTLONG = COUNTLONG + 1;
> IF LDAY14 > 0 THEN COUNTLONG = COUNTLONG + 1;
> IF LDAY15 > 0 THEN COUNTLONG = COUNTLONG + 1;
>
> {GET AVERAGE OF LOWS LOWER THAN PRIOR LOW}
>
> IF COUNTLONG <> 0 THEN
> AVGLOW = LONGSUM / COUNTLONG;
>
> {CALCULATE STOP AT "X" TIMES AVGLOW}
>
> LSTOP = LOW[1] - (MULTIPLELONG * AVGLOW[1]);
>
> {PREVENT STOP FROM BEING LOWERED}
> LONGSTOP = MAXLIST(LSTOP, LSTOP[1], LSTOP[2], LSTOP[3], LSTOP[4],
LSTOP[5]);
>
>
> {SET PLOT}
> IF CONDITION1 THEN
> PLOT1(LONGSTOP, "STOP");
>
>
> {SafeZone for SHORTS}
>
> IF CONDITION2 THEN BEGIN
>     SDAY1 = IFF(H[1]<H, H - H[1], 0);
>     SDAY2 = IFF(H[2]<H[1], H[1] - H[2], 0);
>     SDAY3 = IFF(H[3]<H[2], H[2] - H[3], 0);
>     SDAY4 = IFF(H[4]<H[3], H[3] - H[4], 0);
>     SDAY5 = IFF(H[5]<H[4], H[4] - H[5], 0);
>     SDAY6 = IFF(H[6]<H[5], H[5] - H[6], 0);
>     SDAY7 = IFF(H[7]<H[6], H[6] - H[7], 0);
>     SDAY8 = IFF(H[8]<H[7], H[7] - H[8], 0);
>     SDAY9 = IFF(H[9]<H[8], H[8] - H[9], 0);
>     SDAY10 = IFF(H[10]<H[9], H[9] - H[10], 0);
>     SDAY11 = IFF(H[11]<H[10], H[10] - H[11], 0);
>     SDAY12 = IFF(H[12]<H[11], H[11] - H[12], 0);
>     SDAY13 = IFF(H[13]<H[12], H[12] - H[13], 0);
>     SDAY14 = IFF(H[14]<H[13], H[13] - H[14], 0);
>     SDAY15 = IFF(H[15]<H[14], H[14] - H[15], 0);
> End;
>
>
> {TOTAL ALL VALUES OF HIGHS BEING HIGHER THAN PRIOR HIGH}
>
> SHORTSUM = SDAY1 + SDAY2 + SDAY3 + SDAY4 + SDAY5 + SDAY6 + SDAY7 + SDAY8 +
> SDAY9 + SDAY10 +
>        SDAY11 + SDAY12 + SDAY13 + SDAY14 + SDAY15;
>
>
> {COUNT NUMBER OF DAYS WITH HIGHS BEING HIGHER THAN PRIOR HIGH}
>
> COUNTSHORT = 0;
> IF SDAY1 > 0 THEN COUNTSHORT = COUNTSHORT + 1;
> IF SDAY2 > 0 THEN COUNTSHORT = COUNTSHORT + 1;
> IF SDAY3 > 0 THEN COUNTSHORT = COUNTSHORT + 1;
> IF SDAY4 > 0 THEN COUNTSHORT = COUNTSHORT + 1;
> IF SDAY5 > 0 THEN COUNTSHORT = COUNTSHORT + 1;
> IF SDAY6 > 0 THEN COUNTSHORT = COUNTSHORT + 1;
> IF SDAY7 > 0 THEN COUNTSHORT = COUNTSHORT + 1;
> IF SDAY8 > 0 THEN COUNTSHORT = COUNTSHORT + 1;
> IF SDAY9 > 0 THEN COUNTSHORT = COUNTSHORT + 1;
> IF SDAY10 > 0 THEN COUNTSHORT = COUNTSHORT + 1;
> IF SDAY11 > 0 THEN COUNTSHORT = COUNTSHORT + 1;
> IF SDAY12 > 0 THEN COUNTSHORT = COUNTSHORT + 1;
> IF SDAY13 > 0 THEN COUNTSHORT = COUNTSHORT + 1;
> IF SDAY14 > 0 THEN COUNTSHORT = COUNTSHORT + 1;
> IF SDAY15 > 0 THEN COUNTSHORT = COUNTSHORT + 1;
>
> {GET AVERAGE OF HIGHS HIGHER THAN PRIOR HIGH}
>
> IF COUNTSHORT <> 0 THEN
> AVGHIGH = SHORTSUM / COUNTSHORT;
>
> {CALCULATE STOP AT "X" TIMES AVGHIGH}
>
> SSTOP = HIGH[1] + (MULTIPLESHORT * AVGHIGH[1]);
>
> {PREVENT STOP FROM RISING}
> SHORTSTOP = MINLIST(SSTOP, SSTOP[1], SSTOP[2], SSTOP[3], SSTOP[4],
> SSTOP[5]);
>
> {SET PLOT}
> IF CONDITION2 THEN
> PLOT1(SHORTSTOP, "STOP");
>
>
>
>
>
>
>
>
>