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

Re: [amibroker] Re: MIN function not working



PureBytes Links

Trading Reference Links

Phhst,

There is a sample code of profit target stop included 
in release notes document and 'whats new' section of the guide.

It can be easily adopted to your  needs (:


/* a sample low-level implementation of Profit-target stop in AFL: */
Short = your rule here


trailstop =0;

for( i = 1; i < BarCount; i++ )
{

   if( trailstop == 0 && Short[ i ] )  trailstop = High[ i ];

  if( trailstop > 0 AND High[ i ] > trailstop )
  {
   Cover[ i ] = True;
   CoverPrice[ i ] = trailstop;
   trailstop= 0;
  } 
  else Cover[ i ] = 0;

 if( trailstop > 0 )
 {
    trailstop = Min( High[ i - 1 ], trailstop ); 
 }

}




Best regards,
Tomasz Janeczko
amibroker.com
----- Original Message ----- 
From: "Phsst" <phsst@xxxxxxxxx>
To: <amibroker@xxxxxxxxxxxxxxx>
Sent: Thursday, August 07, 2003 10:21 PM
Subject: [amibroker] Re: MIN function not working


> Tomasz,
> 
> I'll go thru the tutorial again.
> 
> I'd like to implement your iterative solution (which works fine for
> the explore I presented), but in a backtesting Short/Cover situation I
> will need to do the iteration from the point at which each Short
> signal is generated. 
> 
> This means that I'll need to iterate from the bar(num) of the current
> Short signal rather than from the beginning of the array (i = 1).  
> 
> ie...    for (i = ShortBar; i < BarCount; i++);
> 
> I know it is probably documented somewhere, but I cannot find how to
> start a 'for loop' at the current bar where a signal is generated.
> 
> A HINT pleeeazeee... (I'm about worn out on this one) <g>
> 
> Thanks for your help.
> 
> Phsst
> 
> 
> 
> --- In amibroker@xxxxxxxxxxxxxxx, "Tomasz Janeczko" <amibroker@xxxx>
> wrote:
> > Hello,
> > 
> > Min function works OK. It is just your formula that assumes things that
> > do not happen. Specificaly:
> > 
> > x = Min( Ref(H,-1) , Ref(CoverPrice, -1) );
> > CoverPrice = x;
> > 
> > This statement is performed only ONCE
> > So your CoverPrice = x
> > does NOT affect evaluation of first line.
> > 
> > Your code makes assumption that it would be iterated but it won't.
> > x array will be filled ONCE with minimum value.
> > Since CoverPrice array is initialized to 9999 it will just
> > give you Ref( H, -1 ).
> > 
> > Read the Tutorial: Understanding how AFL works.
> > ===============================
> > ===============================
> > ===============================
> > ===============================
> > 
> > If you want iteration (as in TS) you need to WRITE it explicitely:
> > 
> > CoverPrice[ 0 ] = High[ 0 ];
> > 
> > for( i = 1; i < BarCount; i++ ) 
> > {
> >     CoverPrice[ i ] = Min( High[ i - 1 ], CoverPrice[ i - 1 ] );        
> >  }
> > 
> > Best regards,
> > Tomasz Janeczko
> > amibroker.com
> > ----- Original Message ----- 
> > From: "Phsst" <phsst@xxxx>
> > To: <amibroker@xxxxxxxxxxxxxxx>
> > Sent: Thursday, August 07, 2003 8:18 PM
> > Subject: [amibroker] MIN function not working
> > 
> > 
> > > In a SHORT backtest I want to make my own assignments to the
> > > CoverPrice array... then use the CoverPrice as the 'trailing buy stop'
> > > price that I use to stop out a position. 
> > > 
> > > I NEVER want the CoverPrice to INCREASE.
> > > 
> > > I ALWAYS want the CoverPrice to either REMAIN UNCHANGED OR DECREASE
> > > with each new bar.
> > > 
> > > I've tried many gyrations of AFL code to accomplish this and have
> > > spent more hours on it than I care to admit to, but I have narrowed my
> > > problem down to the failure of the MIN function to return the lowest
> > > value.
> > > 
> > > Here is an extremely simple exploration to demonstrate the problem:
> > > ------------------------------------------
> > > 
> > > // Explore and Debug Trailing Stop logic
> > >  
> > > for( i = 1; i < BarCount; i++ ) // Pad CoverPrice array with HIGH
> VALUES
> > > {
> > > CoverPrice[i] = 99999;        
> > > }
> > > 
> > > // I verified that entire CoverPrice array now padded with 99999's
> > > 
> > > x = Min( Ref(H,-1) , Ref(CoverPrice, -1) );
> > > CoverPrice = x;
> > > 
> > > Filter = 1;
> > > 
> > > AddColumn(x,"x = Min(Ref(H,-1),Ref(CoverPrice, -1))",6.3);
> > > AddColumn(Ref(H, -1),"Ref(H, -1)",6.3);
> > > AddColumn(Ref(CoverPrice, -1),"Ref(CoverPrice,-1)",6.3);
> > > AddColumn(CoverPrice,"CoverPrice",6.3);
> > > AddColumn(H,"H",6.3);
> > > 
> > > ----------------------------------------
> > > 
> > > Run the above exploration against any current issue (I'm testing with
> > > SPY) in AB and you will see that in the statement: 
> > > 
> > >     x = Min( Ref(H,-1) , Ref(CoverPrice, -1) );
> > > 
> > > variable x is ALWAYS being assigned the value of Ref(H, -1) instead of
> > > the lowest value of the two values. 
> > > 
> > > Am I missing something or is this an AB issue that I need to refer to
> > > Tomasz?
> > > 
> > > Regards,
> > > 
> > > Phsst
> > > 
> > > 
> > > 
> > > 
> > > Send BUG REPORTS to bugs@xxxx
> > > Send SUGGESTIONS to suggest@xxxx
> > > -----------------------------------------
> > > Post AmiQuote-related messages ONLY to: amiquote@xxxxxxxxxxxxxxx 
> > > (Web page: http://groups.yahoo.com/group/amiquote/messages/)
> > > --------------------------------------------
> > > Check group FAQ at:
> http://groups.yahoo.com/group/amibroker/files/groupfaq.html 
> > > 
> > > Your use of Yahoo! Groups is subject to
> http://docs.yahoo.com/info/terms/ 
> > > 
> > > 
> > >
> 
> 
> 
> Send BUG REPORTS to bugs@xxxxxxxxxxxxx
> Send SUGGESTIONS to suggest@xxxxxxxxxxxxx
> -----------------------------------------
> Post AmiQuote-related messages ONLY to: amiquote@xxxxxxxxxxxxxxx 
> (Web page: http://groups.yahoo.com/group/amiquote/messages/)
> --------------------------------------------
> Check group FAQ at: http://groups.yahoo.com/group/amibroker/files/groupfaq.html 
> 
> Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/ 
> 
> 
>

------------------------ Yahoo! Groups Sponsor ---------------------~-->
Buy Ink Cartridges or Refill Kits for Your HP, Epson, Canon or Lexmark
Printer at Myinks.com. Free s/h on orders $50 or more to the US & Canada. http://www.c1tracking.com/l.asp?cid=5511
http://us.click.yahoo.com/l.m7sD/LIdGAA/qnsNAA/GHeqlB/TM
---------------------------------------------------------------------~->

Send BUG REPORTS to bugs@xxxxxxxxxxxxx
Send SUGGESTIONS to suggest@xxxxxxxxxxxxx
-----------------------------------------
Post AmiQuote-related messages ONLY to: amiquote@xxxxxxxxxxxxxxx 
(Web page: http://groups.yahoo.com/group/amiquote/messages/)
--------------------------------------------
Check group FAQ at: http://groups.yahoo.com/group/amibroker/files/groupfaq.html 

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