PureBytes Links
Trading Reference Links
|
"Assuming that array values are
calculated left to right, there's no reason that his assignment could not
have worked, as the array gets filled to the right with values being
dependant on values just calculated on the left."
If you do that then the original array is screwed
up and the program gets heartburn.
Bill
----- Original Message -----
Sent: Friday, March 28, 2008 10:46
PM
Subject: [amibroker] Re: Something is different. But
what ?
>
--- In amibroker@xxxxxxxxxxxxxxx,
"wavemechanic" <timesarrow@xxx> > wrote: >> >>
Mike: >> >> ...Of course Buy (and Sell) is an array (who said
it wasn't) > > I thought that you did ;) > > "...ask
yourself if you did or did not generate Buy with a function > that
returns an array? If you conclude that Buy is an array then..." >
> It sounded as though you were suggesting that assigning a scaler to
> Buy could make it any less of an array, or that it was at all >
possible to conclude that Buy was not an array. > >> ...Hence,
as I said before to understand what is going on in answer >> to Ton's
"Why not" it is necessary to read up on arrays and to do >> what Ton
wants with IIF() additional code is needed to generate an >> array
that is 1000 between Buy and the bar before Sell and 0 >>
elsewhere. > > I must admit, I was surprised by his reporting. My
initial > expectation would have been that his IFF would have worked as
written. > > Assuming that array values are calculated left to
right, there's no > reason that his assignment could not have worked, as
the array gets > filled to the right with values being dependant on
values just > calculated on the left. > > However, I suspect
that self referencing assignments such as this are > implemented on the
fly in temporary arrays to avoid overwriting the > original left values
that might still be required to populate the new > right values. Or
perhaps the values are calculated en masse going top > to bottom rather
than left to right? > > Either way, it was not what I initially
expected. But in retrospect, > makes sense (assuming of course that this
is what is happening!) > >> I think we are on the same
wavelength but would agree that things >> can get muddled in these
types of messages where stuff is quickly >> knocked out (at least in
my case). I suppose all messages in this >> type of forum should
have the standard congressional caveat about >> reserving the right to
revise and extend remarks - including this >> message.
;-) > > Agreed. I was particularly amused by my code sample earlier
on this > thread where I redundantly removed redundant signals :) >
> Mike > >> >> Bill >>
>> ----- Original Message ----- >> From: "Mike"
<sfclimbers@xxx> >> To: <amibroker@xxxxxxxxxxxxxxx> >> Sent: Friday, March 28, 2008 5:16 PM >>
Subject: [amibroker] Re: Something is different. But what ? >>
>> >> > Bill, >> > >> > You're
comments appear to be off the mark. You already know that: >> >
>> > 1. Buy is a special array declared by AmiBroker. So it is
always > an >> > array. >> > 2. Tomasz advises
"If you're having trouble coding AFL I >> > suggest you generate
the arrays in the example in Excel for >> > yourself."
http://www.amibroker.com/guide/h_understandafl.html >> > >> > Following Ton's thread, I believe that he
is saying that given: >> > >> > Buy =
0,1,0,0,... >> > Sell= 0,0,0,1,... >> > >>
> In accordance with the User's Guide, he expects his IIF statement >
to >> > perform the following logic for his InLongPos
array: >> > >> > InLongPos[0] is null due to
Ref(InLongPos, -1) being undefined. >> > InLongPos[1] is 1000 due to
Buy[1] being 1. >> > InLongPos[2] is 1000 due to Ref(InLongPos, -1)
being 1000 as just >> > calculated above. >> >
InLongPos[3] is 0 due to Sell being 1. >> > ... >> >
>> > Ton, is this what you are trying to express? >> >
>> > Perhaps the reason you are not seeing the expected results is
> because >> > the new values for InLongPos are being
calculated in a temporary >> > array, then reassigned to the old
InLongPos variable as follows > (this >> > is just
speculation, I haven't tried it): >> > >> > InLongPos =
0,0,0,0 // After your first initialization to zero. >> >
>> > Temp[0] is null due to Ref(InLongPos, -1) being
undefined. >> > Temp[1] is 1000 due to Buy[1] being 1. >>
> Temp[2] is 0 due to Ref(InLongPos, -1) being 0. >> > Temp[3] is
0 due to Sell being 1. >> > >> > InLongPos =
Temp; >> > >> > Would that explain what you are
seeing? >> > >> > Mike >> > >>
> --- In amibroker@xxxxxxxxxxxxxxx,
"wavemechanic" <timesarrow@> >> > wrote: >>
>> >> >> So what if that's what you did with Excel. I
don't know how >> > Excel "thinks" but it makes no difference
because all that you > have >> > to worry about is
AFL. I assume that Buy (and consequently >> > inLongPos) is
an array that was generated by a function that > returns >>
> an array (e.g., Cross(), MA(), etc.) in which case no matter what >
you >> > do you will have to deal with that fact. If it is
not an array > why >> > did you use Ref() which operates on
arrays? Forget about what > you >> > did in Excel and
ask yourself if you did or did not generate Buy > with >> >
a function that returns an array? If you conclude that Buy is an
>> > array then deal with it as such because nothing else will
work, >> > including >> >> >>
>> Bill >> >> ----- Original Message
----- >> >> From: Ton Sieverding >>
>> To: amibroker@xxxxxxxxxxxxxxx
>> >> Sent: Friday, March 28, 2008 11:45
AM >> >> Subject: Re: [amibroker] Re: Something is
different. But what ? >> >> >> >> >>
>> Bill that's what I have done in Excel. And Ref(-1) show me
the >> > previous cell. So if the >> >>
previous cell shows 1.000 then the actual cell should also be >> >
1.000 if there is no Sell. Please look what the statement says : >>
>> >> >> 1. If Buy let the actual cell be
1.000 >> >> 2. If Sell let the actual cell be
0. >> >> 3. Otherwise Cell(-1) = Cell(0)
... >> >> >> >> Regards,
Ton. >> >> >> >> -----
Original Message ----- >> >> From:
wavemechanic >> >> To:
amibroker@xxxxxxxxxxxxxxx
>> >> Sent: Friday, March 28, 2008 2:57
PM >> >> Subject: Re: [amibroker] Re:
Something is different. But > what ? >> >> >>
>> >> >> >> >> To
understand "why not" take a look at the array discussion > in
>> > the Users Guide and think about what the inlongpos array looks
> like >> > at each bar and what ref(..., -1) is looking
at. >> >> >> >>
Bill >> >> ----- Original
Message ----- >> >> From:
Ton Sieverding >> >> To:
amibroker@xxxxxxxxxxxxxxx
>> >> Sent: Friday, March
28, 2008 5:52 AM >> >>
Subject: Re: [amibroker] Re: Something is different. But >> > what
? >> >> >> >> >>
>> Mike/Bill thanks for the answers.
Mike I am already using >> > Flip for LongPos and ShortPos. This
works fine for me ( LongPos = > Flip >> > (Buy,Sell) and
ShortPos=Flip(Short,Cover) ). So that's not my >> > problem. My
problem is that I still do not see the difference > between >>
> the two statements I have given and would like to know why there >
is a >> > difference. Bill in the first statement your should get
same > result >> > as with the For Loop. So LongPos will
become '1000' as soon as we >> > have a Buy and will switch to '0'
again with a 'Sell'. Assume T-1 > had >> > a Buy then
LongPos(T-1) = 1000. Therefore LongPos(T) will be set >> > to
'1000' also. But you're right. This is not what is happening. > And
>> > I still do not understand why not ... >> >>
>> >> Regards,
Ton. >> >> >>
>> ----- Original Message
----- >> >>
From: Mike >> >>
To: amibroker@xxxxxxxxxxxxxxx
>> >> Sent:
Friday, March 28, 2008 12:33 AM >>
>> Subject: [amibroker]
Re: Something is different. But > what ? >> >>
>> >> >>
>> Sorry, >>
>> >> >>
That should probably read Flip(ExRem(Buy, Sell), Sell) * >> >
1000; >> >> And
maybe not much easier after all ;) >> >> >>
>> Mike >>
>> >> >>
--- In amibroker@xxxxxxxxxxxxxxx,
"Mike" <sfclimbers@> >> > wrote: >>
>> > >>
>> > 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
amibroker@xxxxxxxxxxxxxxx,
"wavemechanic" >> > <timesarrow@> >>
>> > 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: amibroker@xxxxxxxxxxxxxxx
>> >> > >
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:
amibroker@xxxxxxxxxxxxxxx
>> >> > >
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" <ton.sieverding@> >>
>> > > To:
<amibroker@xxxxxxxxxxxxxxx> >> >>
> > 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 >>
>> > > >>
>> > >>
>> >> >> >> >> >> >>
>> >> >> >>
----------------------------------------------------------------- >
--- >> > ------ >> >> >> >>
>> >> 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 >>
>> >> > >> > >> > >> >
------------------------------------ >> > >> > 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 >> >
>> > >> > > > >
------------------------------------ > > 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 > > <*> To visit your group
on the web, go to: > http://groups.yahoo.com/group/amibroker/ > > <*> Your email settings: >
Individual Email | Traditional > > <*> To change settings
online go to: > http://groups.yahoo.com/group/amibroker/join > (Yahoo! ID required) > > <*> To
change settings via email: > mailto:amibroker-digest@xxxxxxxxxxxxxxx > mailto:amibroker-fullfeatured@xxxxxxxxxxxxxxx > > <*> To unsubscribe from this group, send an email
to: > amibroker-unsubscribe@xxxxxxxxxxxxxxx > > <*> Your use of Yahoo! Groups is subject
to: > http://docs.yahoo.com/info/terms/ > > > > -- > 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 >
>
__._,_.___
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
__,_._,___
|