----- Original Message -----
Sent: Tuesday, January 31, 2006 9:40
AM
Subject: Re: [amibroker] Re: Initializing
Variables once at the start of the program
Hello,
Abandon this way of thinking. You should forget how TS works
and start thinking array-wise.
It is possible to "maintain" value using static variables
but it is simpy wrong way of approaching
the coding in AB (like using hammer to kill a
fly).
Once you forget TS and start thinking array-wise you will
soon discover advantages of it
including simplicity of code and MUCH faster execution and
new possibilities NEVER possible in TS
(like portfolio backtesting which would be extremely memory
and time inefficient if implemented in TS-execution way).
Best regards,
Tomasz Janeczko
amibroker.com
----- Original Message -----
Sent: Tuesday, January 31, 2006 3:04
PM
Subject: Re: [amibroker] Re:
Initializing Variables once at the start of the program
Hi Fred, thanks for this... that is helpful.
WHat happens when I am intraday trading. I think this will be processed
every TICK. Is that correct ?
I want to process my historical bars ONCE, then only process the bars I
haven't processed - the real time bars. SO, when I apply my indicator,
it will start from bar 0, go to current bar, and then ONLY process new bars
and new real time ticks from there - like Tradestation does.
I can't seem to set a variable that maintains it's value - I can't
initialize it to FALSE on the first bar, and then have it increment as I
process bars. Is there a way to do that ?
Thanks
-----amibroker@xxxxxxxxxxxxxxx
wrote: -----
To:
amibroker@xxxxxxxxxxxxxxx
From: "Fred"
<ftonetti@xxxxxxxxxxxxx>
Sent by:
amibroker@xxxxxxxxxxxxxxx
Date: 01/30/2006 11:49PM
Subject:
[amibroker] Re: Initializing Variables once at the start of the
program
TradeStation easy language is processed from to top to
bottom a bar
at a time ...
AmiBroker AFL is processed from top
to bottom with each statement
being executed ONCE and ONLY ONCE ...
NOT ONCE PER BAR ...
Unless you build your own Do / While / For
Loops and subscript the
ARRAYS then typically each statement works on
the entire ARRAY ...
For example ...
If I write the AFL
BS = Ref(H, -1) * 1.001;
SS = Ref(L, -1) * 0.999;
Buy
= C > BS;
Sell = C < SS;
Then each of the above
statements will be evaulated once ... not once
per bar ...
The
first statement will cause an array to be built with each value
along
the array being 1.001 * The previous bars high. Once this
statement is executed or evaluated once it will never be executed or
evaluated again.
The second statement will cause an array to
be built with each value
along the array being 0.999 * The previous
bars low.
The third and fourth statement evaluate whether buys and
sells take
place over the entire history of data that is being looked
at ...
again by being evaluated ONCE ... NOT ONCE PER BAR ...
I came from TS as well ... years and years of it ... it is at
first
difficult to visualize the concept of array arithmetic but in
time
you'll get used to it ...
--- In
amibroker@xxxxxxxxxxxxxxx, "clarusinnovation" <mfishburn@xxxx>
wrote:
>
> Hi,
>
> I want to initialize a
variable CurrentBar at the start of my
program
> once to 0 -
meaning I haven't processed this bar yet. (and a lot of
> other
variables I want too)
>
> I don't know how or where to put
the variables so they won't get
> initialized every time through
the program. I want to keep their
> values as I climb up through
the bars.
>
> each bar that counts up, I want to increment
this counter.
>
> I tried StaticVariables, but they don't
seem to work. How do I
> initialize them ONCE and then increment
them from there ?
>
> Please don't tell me to read the
manual, I have been up and down
it,
> reading Understanding
AFL, it is taking me days to do the simplest
> things...... and it
isn't working for me. I came from Tradestation
> and I could
understand bar flow, with Ami I don't.
>
> Please just tell
me what to do, and where to put the code.
>
> I tried
initalizing the variable in a #Include_ONCE file, that
didn't
>
work.
>
> Thanks a lot, it is very frustrating.
>
> Mark
>