[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [amibroker] Re: Something is different. But what ?



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 -----
From: "Mike" <sfclimbers@xxxxxxxxx>
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




Your email settings: Individual Email|Traditional
Change settings via the Web (Yahoo! ID required)
Change settings via email: Switch delivery to Daily Digest | Switch to Fully Featured
Visit Your Group | Yahoo! Groups Terms of Use | Unsubscribe

__,_._,___