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

[EquisMetaStock Group] Re: Trend Strength Indicator



PureBytes Links

Trading Reference Links

Super,

You are correct about the article...problems were losses and 
drawdowns. Going back and reviewing the entry/exit rules I see some 
big system flaws. 

First, entry was when the indicator reached 100. Second, the exit was 
when the indicator feel below zero. Finally, this was a long only 
system.

Looking at the drawdown chart, you can see that the huge drawdowns 
started in 2000. Weren't we in a bear market?

My opinion, the system has some serious design flaws but by making a 
few changes and using this for the tool that it is, I believe it can 
be turned into a profitable system.

A couple more points to be made here. 

First, the market does not trend all the time. I've heard counts of 
only 20%. That may be true but not all stocks trend at the same time. 
Which opens the door for the final observation which is selection 
screening. You mentioned some great prescreening indexes. There are 
others as well. What we have to remember is that indexes have losers 
too so just jumping in and selecting from these indexes will not 
guarantee success. Using the advance/decline to further screen out 
the deadwood will certainly improve your odds of success. The 
relative strength will also help in this regard. 

Thanks for your observations gentleman!

BTW: I'm a retiree wanabee!


Preston

 

--- In equismetastock@xxxxxxxxxxxxxxx, superfragalist <no_reply@xxxx> 
wrote:
> First MG, you definitely have my endorsement on your retirement, the
> trend strength indicator is another issue.
> 
> I've never gotten much out of Active Trader Magazine, and while this
> particular system is better than a lot of the junk they test, it's 
got
> too many issues for me to feel comfortable with it. 
> 
> It's very similar to Guppy's multiple moving average system. I like
> Guppy's as a visual aid in identifying trends, and the use of 
mulitple
> moving averages reduces whipsaws to some extent. 
> 
> Both systems work better on futures than on stocks. The two big
> problems with this system and other systems based on similar
> principles are the huge drawdowns and the long periods of many loses
> in a row. The average trader is never going to stick to a system 
with
> those kinds of problems. 
> 
> I like the quote in the magazine that says the system recovers from
> it's 20% drawdowns pretty quickly. This is an example of how looking
> at a graph is far different than looking at your wallet. The pretty
> picture says "ah, my pretty litle red chart, you look so good."
> Looking in your wallet says "I feel like I need to throw up, you 
got a
> bag I could use."
> 
> Part of the issue can be avoided by staying out of the market when
> it's in a downtrend. That can be seen by applying the same indicator
> to the indexes and then adding in an advancing/declining issues
> indicator. The two of them together pretty much define the trend. 
> 
> However, even if a trader does that, they would be out of the market
> for long periods of time. 
> 
> The counter to this is "Well, you should simply short when the 
market
> is going down." Okay, short away. 
> 
> The code is fun to play with but it's a bit of overkill. Many
> indicators, especially smoothed indicators like the Inverse Fisher
> Transform or the Laguerre Filter perform just as well or better. The
> drawdowns are smaller and the periods out of the market are shorter.
> 
> A lot of the really technical indicators that are smoothed can be
> simulated to within a small fraction of the more complex. For 
example,  
> this simple Laguerre Transform 
> 
> g:=Input("Alpha",0.1,0.9,0.8);
> L0:=((1-g)*MP()) + (g*PREV);
> L1:=(-g*L0) + Ref(L0,-1) + (g*PREV);
> L2:=(-g*L1) + Ref(L1,-1) + (g*PREV);
> L3:=(-g*L2) + Ref(L2,-1) + (g*PREV);
> (L0 + (2*L1) + (2*L2) + L3)/6
> 
> can be approximated very closely by 
> 
> Mov(Mov(C,Period1,E),Period2,S)
> 
> To trade this you pick the two periods for a buy with the closing
> price of the stock crossing over the function and for the exit you
> pick another set of periods for the close to cross as a sell. Longer
> periods for Period1 and shorter periods for Period2 will probably 
work
> the best.
> 
> If you want to see a function like this really perform, rather than
> trying to trade it on the entire market, use it on the ETFs only or
> even better apply it to a list of prescreened stocks like the those
> from Value Line, IBD, or the Stock Scouter. 
> 
> You can optimize it against those lists if you can find a few older
> lists to work with. You'll need to use a date filter so you can load
> enough bars into the tester for the function to work properly and
> still allow you to limit the date range of the entry signals. 
> 
> The combination of those two things will outperform the results in
> Active Trader by a wide margin, without the huge drawdowns. 
> 
> I can endorse that method and it will make you rich. Well, it will
> make some people rich! But please feel free to retire anyway. 
> 
> 
> 
> 
> --- In equismetastock@xxxxxxxxxxxxxxx, mgf_za_1999 <no_reply@xxxx> 
wrote:
> > Wow, I was catching up a bit during the weekend, stumbled on 
wabbit's
> > initial modifications, and, after having thought you could speed 
up
> > the original, posted my own variation.  Then I noted the replies 
to it
> > and now I feel as if I've walked straight into a trap!  Anyhow, 
see my
> > post as an illustration of how one could extend the system and 
modify
> > the code when taking it outside of MSFL to speed it up in 
preparation
> > for use with say an optimiser or Monte Carlo simulator.
> > 
> > Anyhow, I am glad to hear that magazine found it works well.  Note
> > that there are many combinations, such as if the 10 day MA is 
above
> > the 20 day MA, the 30 day MA and so on.  Then if the 20 day MA is
> > above the 30 day MA, the 40 day MA and so on.  What we do with one
> > neural net, is to calculate something like the following inputs
> > 
> > Input 1 = C / 10 day MA - 1
> > Input 2 = C / 20 day MA - 1
> > Input 3 = 10 day / 20 day MA - 1
> > 
> > etc.
> > 
> > In the end, the close is compared to all moving averages and all
> > moving averages are compared to one another.  We feed this to the 
net
> > that then tries to extract any historical patterns and voila! you 
have
> > a trading model!  I have no idea how this would perform on its 
own, as
> > it forms part of a larger model, but it is encouraging if this 
type of
> > indicator was found useful by others.
> > 
> > Regards
> > MG Ferreira
> > TsaTsa EOD Programmer and trading model builder
> > http://www.ferra4models.com
> > http://fun.ferra4models.com 
> > 
> > --- In equismetastock@xxxxxxxxxxxxxxx, mgf_za_1999 <no_reply@xxxx>
> wrote:
> > > Now, if you want to build a model using this indicator, you 
don't want
> > > to calculate all those moving averages, as it will make any
> > > optimisation process very slow.  MSFL is slow by default, so 
you want
> > > to speed up things anyhow, even if you are not optimising.  So 
you
> > > calculate just one indicator, the cumulative sum of the closes, 
and
> > > use only that.
> > > 
> > > You also want to test how many of these steps you should 
perform. 
> > > Should you use 5, 10, 15 or whatever.  Also, you rebase the 
indicator
> > > to somewhere between -1 and +1, so that it remains the same for 
all
> > > combinations.  You also rewrite it a bit so that divisions, 
which take
> > > longer to do, become multiplications, and the new 'thing' 
becomes
> > > 
> > > ----8<------------------
> > > 
> > > {Trend Strength Indicator}
> > > {for metastock, coded by P Umrysh}
> > > {from the August 2005 issue of Active Trader Magazine}
> > > {modified by wabbit 08Jul05}
> > > {modified by MG Ferreira 09 Jul 05}
> > > 
> > > PRD   := INPUT("Enter periods",1,100,10);
> > > STEP  := INPUT("Enter step size",1,50,10);
> > > NSTEP := INPUT("Enter number of steps",1,20,10);
> > > 
> > > XX    := Cum(C);
> > > 
> > > SS    :=
> > > (C*PRD           > (XX-Ref(XX,-PRD        )))              +
> > > (C*(PRD+   STEP) > (XX-Ref(XX,-PRD-   STEP))) * (NSTEP> 1) +
> > > (C*(PRD+ 2*STEP) > (XX-Ref(XX,-PRD- 2*STEP))) * (NSTEP> 2) +
> > > (C*(PRD+ 3*STEP) > (XX-Ref(XX,-PRD- 3*STEP))) * (NSTEP> 3) +
> > > (C*(PRD+ 4*STEP) > (XX-Ref(XX,-PRD- 4*STEP))) * (NSTEP> 4) +
> > > (C*(PRD+ 5*STEP) > (XX-Ref(XX,-PRD- 5*STEP))) * (NSTEP> 5) +
> > > (C*(PRD+ 6*STEP) > (XX-Ref(XX,-PRD- 6*STEP))) * (NSTEP> 6) +
> > > (C*(PRD+ 7*STEP) > (XX-Ref(XX,-PRD- 7*STEP))) * (NSTEP> 7) +
> > > (C*(PRD+ 8*STEP) > (XX-Ref(XX,-PRD- 8*STEP))) * (NSTEP> 8) +
> > > (C*(PRD+ 9*STEP) > (XX-Ref(XX,-PRD- 9*STEP))) * (NSTEP> 9) +
> > > (C*(PRD+10*STEP) > (XX-Ref(XX,-PRD-10*STEP))) * (NSTEP>10) +
> > > (C*(PRD+11*STEP) > (XX-Ref(XX,-PRD-11*STEP))) * (NSTEP>11) +
> > > (C*(PRD+12*STEP) > (XX-Ref(XX,-PRD-12*STEP))) * (NSTEP>12) +
> > > (C*(PRD+13*STEP) > (XX-Ref(XX,-PRD-13*STEP))) * (NSTEP>13) +
> > > (C*(PRD+14*STEP) > (XX-Ref(XX,-PRD-14*STEP))) * (NSTEP>14) +
> > > (C*(PRD+15*STEP) > (XX-Ref(XX,-PRD-15*STEP))) * (NSTEP>15) +
> > > (C*(PRD+16*STEP) > (XX-Ref(XX,-PRD-16*STEP))) * (NSTEP>16) +
> > > (C*(PRD+17*STEP) > (XX-Ref(XX,-PRD-17*STEP))) * (NSTEP>17) +
> > > (C*(PRD+18*STEP) > (XX-Ref(XX,-PRD-18*STEP))) * (NSTEP>18) +
> > > (C*(PRD+19*STEP) > (XX-Ref(XX,-PRD-19*STEP))) * (NSTEP>19);
> > > 
> > > ( 2*SS - NSTEP ) / NSTEP
> > > 
> > > ----8<------------------
> > > 
> > > 
> > > Now, this looks bad but is easily done using any programming 
language
> > > where loops are allowed.  All those lines that form part of the 
sum SS
> > > are done inside this loop as a fairly simple addition.  The 
loop ends
> > > at the right spot, so that the multipliation with NSTEP > xx 
falls
> away.
> > > 
> > > I also am not sure about MSFL, but this function is supposed to 
be
> > > very fast.  In a normal programming language, at each step, you 
just
> > > update xx as XX = XX + C.  XX starts at 0.  MSFL does not allow 
this,
> > > so the one difference between this function and the original is 
that
> > > it starts one observation later than the original.  Again, in a 
real
> > > programming language, this would not be the case.
> > > 
> > > Now, if only super can endorse the trading qualities of this new
> > > indicator I can sell it to the world and retire early.....
> > > 
> > > Regards
> > > MG Ferreira
> > > TsaTsa EOD Programmer and trading model builder
> > > http://www.ferra4models.com
> > > http://fun.ferra4models.com 
> > > 
> > > 
> > > 
> > > 
> > > --- In equismetastock@xxxxxxxxxxxxxxx, "bellamy_29m"
> > > <bellamy_29m@xxxx> wrote:
> > > > Similar results (0-10) instead of -100 to 100 with simpler 
code:
> > > > 
> > > > {Trend Strength Indicator}
> > > > {for metastock, coded by P Umrysh}
> > > > {from the August 2005 issue of Active Trader Magazine}
> > > > {modified by wabbit 08Jul05}
> > > > 
> > > > PRD:= Input("ENTER PERIODS FOR SMA",1,100,10);
> > > > STEP:= Input("ENTER SMA STEPS",1,50,10);
> > > > 
> > > > (C>Mov(C,PRD+(STEP*0),S))+
> > > > (C>Mov(C,PRD+(STEP*1),S))+
> > > > (C>Mov(C,PRD+(STEP*2),S))+
> > > > (C>Mov(C,PRD+(STEP*3),S))+
> > > > (C>Mov(C,PRD+(STEP*4),S))+
> > > > (C>Mov(C,PRD+(STEP*5),S))+
> > > > (C>Mov(C,PRD+(STEP*6),S))+
> > > > (C>Mov(C,PRD+(STEP*7),S))+
> > > > (C>Mov(C,PRD+(STEP*8),S))+
> > > > (C>Mov(C,PRD+(STEP*9),S))
> > > > 
> > > > Hpe this helps.
> > > > 
> > > > wabbit :D
> > > > 
> > > > <snip>




------------------------ Yahoo! Groups Sponsor --------------------~--> 
Try Online Currency Trading with GFT. Free 50K Demo. Trade 
24 Hours. Commission-Free. 
http://us.click.yahoo.com/DldnlA/9M2KAA/U1CZAA/BefplB/TM
--------------------------------------------------------------------~-> 

 
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/equismetastock/

<*> To unsubscribe from this group, send an email to:
    equismetastock-unsubscribe@xxxxxxxxxxxxxxx

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/