Thanks a lot. It works! ;-) Louis
2008/2/26, Graham <[EMAIL PROTECTED]>: > > When using looping to calculate things bar by bar do not include array > processing functions within the loop > Create a variable before the loop and use this variable inside the loop > > exit = 0; > LL = LLV(C,10); > > for(i=1;i<BarCount;i++) > { > if(exit==0 AND C[i]<LL[i-1]) > { > > or if you absolutely need to start the array at 0 instead of 1 > > LL = Ref(LLV(C,10),-1); > > for(i=0;i<BarCount;i++) > { > if(exit==0 AND C[i]<LL[i]) > { > > > > > > -- > Cheers > Graham Kav > AFL Writing Service > http://www.aflwriting.com > > > > On 27/02/2008, Louis Préfontaine <[EMAIL PROTECTED]> wrote: > > > > I am having a hard time with that. > > > > ( exit == 1 AND Close[i] < Ref (LLV(Close[i],10), -1) ) > > > > For some reason I just can't make that work. I tried this also > > > > ( exit == 1 AND Close[i] < Ref (LLV(Close[i],10), [i-1]) > > ) > > > > but it didn't work either... I wonder what is wrong with that code. > > > > Louis > > > > > > 2008/2/26, Louis Préfontaine <[EMAIL PROTECTED]>: > > > > > > Hi Tuzo, > > > > > > Thanks again for your reply. > > > > > > I tried to add a selling condition but just didn't know where to put > > > it exactly. I tried after > > > > > > if( exit == 0 AND > > > High[ i ] >= ( 1 + FirstProfitTarget * 0.01 ) * > > > priceatbuy) > > > > > > to add something like AND close>100 (just to try) and even tried > > > close[i]>100 and it didn't work... What did I do wrong? > > > > > > I think you are right when you say I need to catch up on programming. > > > I hope Howard's book will help me for that but I am really better to learn > > > by myself than by getting a huge 1000 pages C++ book. But if you think it > > > might be worth it, I don't reject that idea... > > > > > > I will try to do as Brian said to me and try to keep my eyes open and > > > see where the gold is. So far you helped me a lot and that's also gold to > > > me. Thanks! > > > > > > Louis > > > > > > > > > 2008/2/26, tuzo_wilson <[EMAIL PROTECTED]>: > > > > > > > > --- In amibroker@yahoogroups.com, "Louis Pr�fontaine" > > > > <[EMAIL PROTECTED]> wrote: > > > > > > > > If you are using the boolean value (IsInTrade) then you need to > > > > reset it when you exit the trade. See near the end of the formula. > > > > Although if you now understand the buyatprice == 0 then you could > > > > revert to > > > > the canned example. > > > > > > > > > Moreover, I don't know how to add other selling rules to that > > > > (where to put those rules in the code) and I don't understand > > > > > > > > To add different sell logic, you can modify the "AND" portion of the > > > > if statements after if( exit == ... > > > > > > > > > the meaning of this part Sell[ i ] = exit + 1; // mark appropriate > > > > exit code > > > > > > > > This sets the type of sell signal. It (exit + 1) will be either 3 > > > > or 4 which corresponds to hitting a profit target or hitting a trailing > > > > stop > > > > (IIRC). > > > > > > > > > > > > I don't know how other people feel but IMO, you may want to take a > > > > look at some simple intro programming tutorials separate from AB. > > > > Between > > > > general programming, array processing, and the specifics of AFL there > > > > is a > > > > lot to take in. Of course your mileage may vary. > > > > > > > > > > > > Tuzo > > > > > > > > > > > > Buy = RSI (14)<30; > > > > > > > > > > > > > > > > Sell = 0; > > > > // the system will exit > > > > // 50% of position if FIRST PROFIT TARGET stop is hit > > > > // 50% of position is SECOND PROFIT TARGET stop is hit > > > > // 100% of position if TRAILING STOP is hit > > > > FirstProfitTarget = 10; // profit > > > > SecondProfitTarget = 25; // in percent > > > > TrailingStop = 15; // also in percent > > > > > > > > isInTrade = False; > > > > priceatbuy=0; > > > > highsincebuy = 0; > > > > exit = 0; > > > > for( i = 0; i < BarCount; i++ ) > > > > { > > > > if ( NOT isInTrade AND Buy[ i ] ) > > > > > > > > { > > > > isInTrade = True; > > > > priceatbuy = BuyPrice[ i ]; > > > > } > > > > if( isInTrade ) > > > > { > > > > highsincebuy = Max( High[ i ], highsincebuy ); > > > > if( exit == 0 AND > > > > High[ i ] >= ( 1 + FirstProfitTarget * 0.01 ) * > > > > priceatbuy) > > > > > > > > { > > > > // first profit target hit - scale-out > > > > exit = 1; > > > > Buy[ i ] = sigScaleOut; > > > > } > > > > if( exit == 1 AND > > > > High[ i ] >= ( 1 + SecondProfitTarget * 0.01 ) * > > > > priceatbuy ) > > > > { > > > > // second profit target hit - exit > > > > exit = 2; > > > > SellPrice[ i ] = Max( Open[ i ], ( 1 + > > > > SecondProfitTarget * > > > > 0.01 ) * priceatbuy ); > > > > } > > > > if( Low[ i ] <= ( 1 - TrailingStop * 0.01 ) * > > > > highsincebuy ) > > > > { > > > > // trailing stop hit - exit > > > > > > > > > > > > exit = 3; > > > > SellPrice[ i ] = Min( Open[ i ], ( 1 - > > > > TrailingStop * 0.01) > > > > * highsincebuy ); > > > > } > > > > if( exit >= 2 ) > > > > { > > > > Buy[ i ] = 0; > > > > Sell[ i ] = exit + 1; // mark > > > > appropriate exit code > > > > exit = 0; > > > > priceatbuy = 0; // reset price > > > > highsincebuy = 0; > > > > isInTrade = False; // not in a trade any > > > > more > > > > } > > > > } > > > > } > > > > SetPositionSize( 50, spsPercentOfPosition * ( Buy == sigScaleOut )); > > > > // scale out 50% of position > > > > > > > > Short=0; > > > > Cover=0; > > > > /// > > > > /// > > > > /// > > > > /// > > > > /// > > > > > > > > > > > > > > > >