The iif() does not give the same result because ref(inlongpos, -1) == 0 except 
when the previous bar is a buy.  You can see exactly what is happening 
graphically with

buy = 
sell = 
inlongpos = iif(...
plot(c, "", iif(buy, colorred, iif(sell, coloryellow, colorpalegreen)), 
stylebar);
title = "inlongpos = " + inlongpos + "  ref(inlongpos..." + ref(inlongpos...) + 
"  buy = " + buy + "  sell =" + sell

If you want the iif() approach to hold either a buy or sell value for each bar 
additional code is needed to create this condition.

Bill


  ----- Original Message ----- 
  From: Ton Sieverding 
  To: [email protected] 
  Sent: Thursday, March 27, 2008 8:10 AM
  Subject: Re: [amibroker] Something is different. But what ?


  Sure. This of course if part of an AFL with Buy and Sell defined. Also an 
init for InLongPos
  being set to zero as a starter. Again the ForLoop works fine. I checked that 
with following statement : AddColumn(InLongPos,"Long",1); 
  My problem is that I do not understand why the first statement does not give 
me the correct answer where the second does ...

  Regards, Ton.

    ----- Original Message ----- 
    From: wavemechanic 
    To: [email protected] 
    Sent: Thursday, March 27, 2008 12:55 PM
    Subject: Re: [amibroker] Something is different. But what ?



    Is there more to the code?  Are you getting a syntax/initialization error?  
How are you handling the case when i == 1?

    Bill

    ----- Original Message ----- 
    From: "amsiev" <[EMAIL PROTECTED]>
    To: <[email protected]>
    Sent: Thursday, March 27, 2008 7:01 AM
    Subject: [amibroker] Something is different. But what ?


    > Why is following AFL statement :
    > 
    > InLongPos = IIf(Buy==1,1000,IIf(Sell==1,0,Ref(InLongPos,-1)));
    > 
    > giving me a different result as following ForLoop :
    > 
    > for ( i=1; i<BarCount; i++ )
    > {
    > if (Buy[i]==1)
    > InLongPos[i] = 1000;
    > else
    > {
    > if (Sell[i]==1)
    > InLongPos[i] = 0;
    > else
    > InLongPos[i] = InLongPos[i-1];
    > }
    > }
    > 
    > The result I am getting from the ForLoop is correct. The first
    > statement gives me a wrong answer. I want to get 1000 in InLongPos
    > after Buy and before Sell ... When testing the statement in Excel
    > it works fine with : =IF(A6=1;1000;IF(B6=1;0;C5)) ...
    > 
    > What's wrong ?
    > 
    > 
    > ------------------------------------
    > 
    > Please note that this group is for discussion between users only.
    > 
    > To get support from AmiBroker please send an e-mail directly to 
    > SUPPORT {at} amibroker.com
    > 
    > For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
    > http://www.amibroker.com/devlog/
    > 
    > For other support material please check also:
    > http://www.amibroker.com/support.html
    > Yahoo! Groups Links
    > 
    > 
    > 
    > 
    > 
    > -- 
    > No virus found in this incoming message.
    > Checked by AVG. 
    > Version: 7.5.519 / Virus Database: 269.22.0/1344 - Release Date: 
3/26/2008 8:52 AM
    > 
    > 

   


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


  No virus found in this incoming message.
  Checked by AVG. 
  Version: 7.5.519 / Virus Database: 269.22.0/1344 - Release Date: 3/26/2008 
8:52 AM

Reply via email to