You could probably leverage the Flip function to make this easier on yourself.
e.g. Buy = ... Sell = ... InLongPos = Flip(ExRem(Buy, Sell)) * 1000; Mike --- In [email protected], "wavemechanic" <[EMAIL PROTECTED]> wrote: > > 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 >
