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

Re: [amibroker] Re: Dunnigan Trend


  • Date: Fri, 4 Dec 2009 04:05:11 +0800
  • From: "Tim" <timkthung@xxxxxxxxxxxx>
  • Subject: Re: [amibroker] Re: Dunnigan Trend

PureBytes Links

Trading Reference Links



Thanks Mike. You're right. There is an error especially on this line:
TD3 = IIf( Sd = 1 AND H > Lhv, 1, IIf( Sd = -1 AND L < Hlv, -1, 0 ) );
 
Would you please verify it with the original Metastock formula for me. Thanks so much for your help.
 
Tim
 
 
Dunn-Type1
==========
 
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
 

Dunn-Type2
==========
 
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
 
 
 
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

From: Mike
Sent: Friday, December 04, 2009 3:37 AM
Subject: [amibroker] Re: Dunnigan Trend

 

Hi,

Taking a quick skim of your code, looks like you've actually got several errors in there that need fixing first.

Specifically; "=" is assignment (as in store the value from the right side into the variable on the left side), whereas "==" is an equivalence test (as in a boolean test of whether the left side holds the same value as the right side).

So, all your IIf statements that are using "=" need to be converted to use "==". Same for all your BarsSince calls.

Then, to set your Buy/Sell logic, use the equivalence operator again.

e.g. assuming TD3 holds your signals:

Buy = (TD3 == 1);
Sell = (TD3 == -1);

Mike

--- In amibroker@xxxxxxxxxps.com, "Tim" <timkthung@x..> wrote:
>
> Dear All,
>
> I am new to AB. Would someone please show me how to add the code for a Buy or Sell signal based on the value of 1 or -1 in following formula.
>
> Thanks in advance.
>
> Tim
>
>
> //Dunn-Type1
> //==========
>
> TD1 = IIf( BarsSince( H > Ref( H, -1 ) AND L > Ref( L, -1 ) ) <
> BarsSince( L < Ref( L, -1 ) AND H < Ref( H, -1 ) ), 1, -1 );
>
> //Dunn-Type2
> //==========
>
> TD2 = IIf( 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 ) ) ), 1, -1 );
>
> // Ask to use 1 Day OR 2 Day Swing type}
> St = Param( "Short Term Swing Type, 1 or 2 ?", 2, 1, 2, 1 );
>
> //{Call Swing Type Formula}
> Sd = IIf( St == 1, TD1, TD2 );
>
> //{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 = IIf( Hc > Lc AND H > Ref( H, -1 ), HighestSince( Hc = 1, H, 1 ) , 0 );
>
> //{Find Lowest Value Of Down Swing}
> Lv = IIf( Hc < Lc AND L < Ref( L, -1 ), LowestSince( Lc = 1, L, 1 ) , 0 );
>
> //{Find The Low Of The Highest High}
> Hlv = ValueWhen( H = Hv, L, 1 ) ;
>
> //{Find The High Of The Lowest Low}
> Lhv = ValueWhen( L = Lv, H, 1 ) ;
>
> //{Calculate AND Plot Trend Direction,
> //Note: 1= Uptrend,
> //-1= Downtrend}
>
> TD3 = IIf( Sd = 1 AND H > Lhv, 1, IIf( Sd = -1 AND L < Hlv, -1, 0 ) );
> TD4 = ValueWhen( TD2 != 0, TD2, 1 );
>



__._,_.___


**** IMPORTANT PLEASE READ ****
This group is for the discussion between users only.
This is *NOT* technical support channel.

TO GET TECHNICAL SUPPORT send an e-mail directly to
SUPPORT {at} amibroker.com

TO SUBMIT SUGGESTIONS please use FEEDBACK CENTER at
http://www.amibroker.com/feedback/
(submissions sent via other channels won't be considered)

For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
http://www.amibroker.com/devlog/





Your email settings: Individual Email|Traditional
Change settings via the Web (Yahoo! ID required)
Change settings via email: Switch delivery to Daily Digest | Switch to Fully Featured
Visit Your Group | Yahoo! Groups Terms of Use | Unsubscribe

__,_._,___