PureBytes Links
Trading Reference Links
|
Mike,
I agree, an example would be a useful addition, even though AB is
pretty impressively documented as it stands.
I think the confusion arises because some of us are used to using
loop-based programming languages. The paradigm shift isn't
necessarily a simple one, especially for people who I imagine are
trying to learn a new language in their spare time...
--- In amibroker@xxxxxxxxxxxxxxx, "Mike" <sfclimbers@xxx> wrote:
>
> Given that this same question gets asked over and over again, it
might
> be worth adding an example to that tutorial explicitly illustrating
> what would happen in a self referencing calculation.
>
> Yes, many people simply have not read the tutorial. But for those
that
> have, it would seem that a significant percentage of readers still
do
> not realize that a temporary array is being created in that
situation.
>
> Mike
>
> --- In amibroker@xxxxxxxxxxxxxxx, "Tomasz Janeczko" <groups@>
> wrote:
> >
> > It is easy to understand, if only you READ THE
> > tutorial section of the guide:
> >
> > http://www.amibroker.com/guide/h_understandafl.html
> >
> > All tutorial is must-read.
> > =================
> >
> > People are crying for help while in fact
> > everything you need to read is in the TUTORIAL section
> > of the guide.
> > This single short section of the tutorial
> > http://www.amibroker.com/guide/h_understandafl.html
> >
> > is absolute must-read and should be read and repeated.
> >
> > Best regards,
> > Tomasz Janeczko
> > amibroker.com
> > ----- Original Message -----
> > From: "ian_rosbif" <ian_rosbif@>
> > To: <amibroker@xxxxxxxxxxxxxxx>
> > Sent: Tuesday, November 18, 2008 6:52 PM
> > Subject: [amibroker] Re: What is wrong with these 3 lines of code?
> >
> >
> > > You're not dumb, it is rather difficult to understand! Using
your
> > > example and assuming 11 bars in each array:
> > > Before the 1st statement, auxCrossedIntermed = "00000000000",
> > > After the 1st statement, auxCrossedIntermed = "00000000010"
> > >
> > > Before the 2nd statement, CrossedIntermed = "00000000000",
> > > and Ref(CrossedIntermed, -1) = "0000000000"... Amibroker
> effectivley
> > > treats the Ref... part of the statement as if it was a
temporary
> copy
> > > of the CrossedIntermed statement taken before the 2nd statement
> began
> > > execution (note that there are only 10 elements in this copy
> array).
> > > Changes made to CrossIntermed during the 2nd statement by
moving
> > > values from AuxCrossedIntermed are not reflected in the copy
> array.
> > > therefore the Ref... clause always copies zero in this scenario.
> > >
> > > I hope this clarifies it, but as I said before, the same thing
got
> me
> > > when I first started out with AB...took me a couple of weeks to
> > > finally realise what was going on.
> > >
> > >
> > > --- In amibroker@xxxxxxxxxxxxxxx, "nunopires2001"
<nunopires2001@>
> > > wrote:
> > >>
> > >> Thanks for the answer.
> > >>
> > >> To be honest, i am feeling really dumb, since i didn't
understand
> > > the
> > >> explanation.
> > >>
> > >> Please suppose the following scenario:
> > >>
> > >> Low[9]=950
> > >> Intermed[9]=970
> > >> High[9]=1000
> > >>
> > >> auxCrossedIntermed=IIf(Low< Intermed AND High> Intermed,1,0);
> > >> CrossedIntermed=auxCrossedIntermed OR Ref(CrossedIntermed,-1);
> > >>
> > >> On the bar #10, how will Amibroker evaluate the second formula?
> > >> During the evaluation, what will be the values for
> > > auxCrossedIntermed
> > >> and Ref(CrossedIntermed,-1) ?
> > >>
> > >>
> > >> Best Regards!
> > >>
> > >>
> > >> --- In amibroker@xxxxxxxxxxxxxxx, "ian_rosbif" <ian_rosbif@>
> wrote:
> > >> >
> > >> > Hi,
> > >> > Are you trying use "...OR Ref(CrossedIntermed,-1);" to get
the
> > > cross
> > >> > to persist in CrossedIntermed? In other words, if the cross
> > > occurs at
> > >> > 11:45, the following 15 elements of Crossintermed should
be "1"
> > > until
> > >> > 12:01, when they should then all have "666" in them?
> > >> >
> > >> > In which case, the problem lies with the "circular" nature
of:
> > >> > >>CrossedIntermed=auxCrossedIntermed OR Ref(CrossedIntermed,-
> 1);
> > >> >
> > >> > auxCrossedIntermed will have a combination of 1s & 0s in it,
> but
> > >> > these aren't actually "moved" to Crossedintermed until the
> > > statement
> > >> > hase been fully evaluated. Therefore Ref(Crossedintermed, -
1)
> > > will
> > >> > always evaluate to 0 at the time it's executed, even though
the
> 1
> > >> > appears in the array element representing the cross event
after
> > > the
> > >> > statement has been executed.
> > >> >
> > >> > This is something that drove me mad before I cottoned onto
it.
> > >> > maybe this would work:
> > >> >
> > >> > // initialise final values
> > >> > CrossedIntermed=IIf(TimeNum()>120000, 666, 0);
> > >> > // set cross events
> > >> > auxCrossedIntermed=IIf(Low< Intermed AND High> Intermed, 1,
0);
> > >> > // cross persists for whole day after it occurs once
> > >> > auxCrossedIntermed = Flip(auxCrossedIntermed, True==False);
> > >> > // finalise values
> > >> > CrossedIntermed=IIf(TimeNum()>120000, 666,
auxCrossedIntermed);
> > >> >
> > >> > If you want the "1" to persist after midday, change the last
> > >> > statement to:
> > >> > CrossedIntermed=IIf(auxCrossedIntermed, auxCrossedIntermed,
> > >> > CrossedIntermed);
> > >> >
> > >> >
> > >> > --- In amibroker@xxxxxxxxxxxxxxx, "nunopires2001"
> > > <nunopires2001@>
> > >> > wrote:
> > >> > >
> > >> > > Hello,
> > >> > >
> > >> > > After a encouraging start with Amibroker, i am realizing
that
> > >> > writing
> > >> > > code on AFL is not all that simple...
> > >> > >
> > >> > > Anyone can explain me what is wrong with these lines of
code?
> > >> > >
> > >> > > CrossedIntermed=0;
> > >> > > auxCrossedIntermed=IIf(Low< Intermed AND High>
> > > Intermed,1,0);
> > >> > > CrossedIntermed=auxCrossedIntermed OR
> Ref(CrossedIntermed,-
> > > 1);
> > >> > >
> CrossedIntermed=IIf(TimeNum()>120000,666,CrossedIntermed);
> > >> > >
> > >> > > I am working with intraday, 1min data. The market opens at
> > > 110000
> > >> > and
> > >> > > closes at 193000.
> > >> > >
> > >> > > I just want to check the CrossedIntermed Value after
12.00h,
> > > and the
> > >> > > value returned should be:
> > >> > > -> 1: If the security crossed Intermed
> > >> > > -> 0: Otherwise
> > >> > > -> 666: If TimeNum()>120000
> > >> > >
> > >> > >
> > >> > > Thanks alot!
> > >> > >
> > >> >
> > >>
> > >
> > >
> > >
> > > ------------------------------------
> > >
> > > **** IMPORTANT ****
> > > This group is for the discussion between users only.
> > > This is *NOT* technical support channel.
> > >
> > > *********************
> > > TO GET TECHNICAL 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
> > >
> > >
> > >
> >
>
------------------------------------
**** IMPORTANT ****
This group is for the discussion between users only.
This is *NOT* technical support channel.
*********************
TO GET TECHNICAL 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/
|