Hi Tuzo, Thanks for those explanation. I kind of missed your reply with all the messages on the board, but it really helps me to understand how it works. I think I now understand that this is a loop and that each value of [i] is simply the bar and that it goes up and that each time the program looks to see if the conditions are met.
I will try to experiment further with this code. Thanks! Louis 2008/2/23, tuzo_wilson <[EMAIL PROTECTED]>: > > --- In amibroker@yahoogroups.com, "Louis Pr�fontaine" <[EMAIL PROTECTED]> > wrote: > > > Wouldn't it be possible to simply write > > > > if( Buy[ i ] ) > > { > > priceatbuy = BuyPrice[ i ]; > > } > > > > instead of > > > > > > if( priceatbuy == 0 AND Buy[ i ] ) > > { > > priceatbuy = BuyPrice[ i ]; > > } > > The Buy array may have multiple buy signals (i.e. non zero entries) so you > can't just use the Buy array. > > > if the priceatbuy value was already set to zero before the "for" > command? I > > mean: we already know that the only possible value of priceatbuy at this > > point was zero, so why add the if (priceatbuy == 0... ? and not simply > if > > That's not true. priceatbuy is set within the for loop. As its name > indicates priceatbuy is used to hold the price when the buy signal was > issued. Plus it is also being used to let you know if you are not in a > trade (priceatbuy == 0) so from a logical point of view it is holding more > than just the buy price information. > > You could rewrite it differently: > > isInTrade = False; > priceatbuy = 0; > highsincebuy = 0; > exit = 0; > > for ( i = 0; i < BarCount; i++ ) > { > // if we are not in a trade and we have a buy signal then set the buy > price > if ( NOT isInTrade AND Buy[ i ] ) > { > // now we are in a trade so set the buy price > isInTrade = True; > priceatbuy = BuyPrice[ i ]; > } > > // if we are in a trade then check to see if we hit the profit target > if ( isInTrade ) > { > highsincebuy = Max( High[ i ], highsincebuy ); > if( exit == 0 AND > High[ i ] >= ( 1 + FirstProfitTarget * 0.01 ) * > priceatbuy) > > // reset isInTrade = False; > } > } > > > The logic is is the same but maybe expressing it that way makes more sense > to you? > > > Tuzo > > >