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

Dunnigan Short Trend Method



PureBytes Links

Trading Reference Links

These formula's simply plot a 1 if market is up or -1 if down.
I really didn't  code this to be used as an indicator, but to be
used as a subroutine or possibly in an "Expert Advisor".

  Best wishes,
      Adam Hefner.
VonHef@xxxxxxxxxxxxx

---------------------------------------

name: Dunn-Type1

 {Market swing is defined as:
 Up = higher highs and higher lows,
 Down = lower highs and lower lows.}
TD1:=If(BarsSince(H>Ref(H,-1) AND L>Ref(L,-1)) <
       BarsSince(L<Ref(L,-1) AND H<Ref(H,-1)),
    {then}1,
    {else}-1);
TD1
----------------------------
name: Dunn-Type2

 {Market swing is defined as:
  Up = 2 higher highs and 2 higher lows,
 Down = 2 lower highs and 2 lower lows.}
TD1:=If(BarsSince((H>Ref(H,-1) AND L>Ref(L,-1))
            AND (Ref(H,-1)>Ref(H,-2)
            AND  Ref(L,-1)>Ref(L,-2))) <
       BarsSince((L<Ref(L,-1) AND H<Ref(H,-1))
            AND (Ref(L,-1)<Ref(L,-2)
            AND  Ref(H,-1)<Ref(H,-2))),
    {then}1,
    {else}-1);
TD1
--------------------------------
name:Dunnigan Trend

 {Ask to use 1 day or 2 day Swing type}
St:=Input("Short Term Swing Type, 1 or 2 ?",
          1,2,2);
 {Call Swing Type Formula}
Sd:=If(Round(St)=1,
    {then} FmlVar("Dunn-Type1","TD1"),
    {else} FmlVar("Dunn-Type2","TD1"));
 {Number Of Periods Since Swing Started Up}
Hc:=BarsSince(SD=-1);
 {Number Of Periods Since Swing Started Down}
Lc:=BarsSince(SD=1);
 {Find Highest Value Of Up Swing}
Hv:=If(Hc>Lc AND H>Ref(H,-1),
    {then}HighestSince(1,Hc=1,H),
    {else}0);
 {Find Lowest Value Of Down Swing}
Lv:=If(Hc<Lc AND L<Ref(L,-1),
    {then}LowestSince(1,Lc=1,L),
    {else}0);
 {Find The Low Of The Highest High}
Hlv:=ValueWhen(1,H=Hv,L);
 {Find The High Of The Lowest Low}
Lhv:=ValueWhen(1,L=Lv,H);
 {Calculate And Plot Trend Direction,
  Note: 1= Uptrend,
       -1= Downtrend}
TD2:=If(Sd=1 AND H>Lhv,
     {then}1,
     {else}If(Sd=-1 AND L<Hlv,
           {then}-1,
           {else}0));
TD3:=ValueWhen(1,TD2<>0,TD2);
TD3
-----------------------