PureBytes Links
Trading Reference Links
|
Herman,
One thing: You don't need to worry about adding
such complex coding all the time.
Instead you should use FUNCTIONS that make life
easier.
If you want "unique static" (per indicator) you can
easily have them using these two functions:
procedure UnqStaticVarSet( name, value
)
{
StaticVarSet( name + GetChartID(),
value );
}
function UnqStaticVarGet( name )
{
return StaticVarGet( name + GetChartID()
);
}
then use UnqStaticVarSet, UnqStaticVarGet in your
code
Best regards,Tomasz
Janeczkoamibroker.com
<BLOCKQUOTE dir=ltr
>
----- Original Message -----
<DIV
>From:
Herman van den
Bergen
To: <A title=amibroker@xxxxxxxxxxxxxxx
href="">amibroker@xxxxxxxxxxxxxxx
Sent: Monday, August 09, 2004 3:28
AM
Subject: RE: [amibroker] Static
Variables
<FONT face=Arial color=#0000ff
size=2>Ara,
<FONT face=Arial color=#0000ff
size=2>
You
have to be careful scoping the Static Variables,
<FONT face=Arial color=#0000ff
size=2>
1)
If you use same name static variables in different indicators then their
values can change from various sources. This is the case if you assign program
derived values, for example counters ,not in the case of param() see
next...
<FONT face=Arial color=#0000ff
size=2>
2)
If the Static variables are initialized inside the code with a Param() in EACH
of the Indicators then in essence you have disabled the Global nature of
the Static Variable: this is so because the Static variable is
reinitialized in each Indicator separately each time the code is executed
(on Refresh). This makes it immune to whatever other code
does.
<FONT face=Arial color=#0000ff
size=2>
3)
Static variables are truly Global, in contrast to afl variables declared
Global in afl, these are Global 'per' indicator. Static variables are Global
per AmiBroker Instance.
<FONT face=Arial color=#0000ff
size=2>
4)
If you want to restrict the scope of Static variables to the current
Indicator, to prevnt conflicing conditions, then you have to add a unique
identifier to each code, I use something like this:
ChartID = <FONT color=#0000ff
size=2>NumToStr(<FONT color=#0000ff
size=2>GetChartID(),<FONT color=#ff00ff
size=2>1.0,False); Reset =
Param(<FONT
color=#ff00ff size=2>"Reset Static variables",<FONT
color=#ff00ff size=2>0,<FONT color=#ff00ff
size=2>0,1<FONT
size=2>,1<FONT
size=2>);StaticScope = Param(<FONT
color=#ff00ff>"Scope (0:Local,1:Global) for Chart#"+ChartID,<FONT
color=#ff00ff>1,0,<FONT
color=#ff00ff>1,1);<FONT
color=#800000>if( StaticScope ) Scope = <FONT
color=#ff00ff>""; else<FONT
size=2> Scope = ChartID;<SPAN
class=343574700-09082004>.<SPAN
class=343574700-09082004>..<FONT
color=#800000>if<FONT color=#000000
size=2>( IsEmpty<FONT color=#000000
size=2>( StaticVarGet<FONT
color=#000000 size=2>(<FONT color=#ff00ff
size=2>"TickCounter"<FONT
color=#000000>+Scope)) OR Reset)<FONT color=#0000ff
size=2>StaticVarSet(<FONT color=#ff00ff
size=2>"TickCounter"+Scope,<FONT color=#ff00ff
size=2>0);TickCount = <FONT
color=#0000ff size=2>StaticVarGet(<FONT
color=#ff00ff size=2>"TickCounter"<FONT
size=2>+Scope);<FONT
color=#800000>
<SPAN
class=343574700-09082004><SPAN
class=343574700-09082004>here a tickcounter is
made Local to the indicator containing the code to prevent interference with
duplicate code in other indicators. This means i can count ticks from
fifferent stocks while using the SAME indicator.
Hope
this helps,
<SPAN
class=343574700-09082004>herman.
<FONT face=Arial
color=#0000ff>
<SPAN
class=343574700-09082004> <FONT face=Tahoma
size=2>-----Original Message-----From: Ara Kaloustian
[mailto:ara1@xxxxxxxxxx]Sent: Sunday, August 08, 2004 8:46
PMTo: AB-MainSubject: [amibroker] Static
Variables
I am having a hard time using static
variables....
Sometimes they work as expected ... sometimes
they don't ... so my expectation must obviously be
questionable.
I am assuming Static variables can be used
anywhere that normal Number and String variables can be used!
- in assignments:
StaticVarSet("Var",Value);
- in If Statements: if (StaticVarGet("Var") ==
Value) ....
- in iif Statement: Test =
iif(StaticVarGet("Var") ==Value,True,False);
Is my assumption correct?
Thanks
AraCheck AmiBroker web
page at:<A
href="">http://www.amibroker.com/Check
group FAQ at: <A
href="">http://groups.yahoo.com/group/amibroker/files/groupfaq.html
Check AmiBroker web page at:<A
href="">http://www.amibroker.com/Check
group FAQ at: <A
href="">http://groups.yahoo.com/group/amibroker/files/groupfaq.html
Check AmiBroker web page at:
http://www.amibroker.com/
Check group FAQ at: http://groups.yahoo.com/group/amibroker/files/groupfaq.html
Yahoo! Groups Sponsor
ADVERTISEMENT
Yahoo! Groups Links
To visit your group on the web, go to:http://groups.yahoo.com/group/amibroker/
To unsubscribe from this group, send an email to:amibroker-unsubscribe@xxxxxxxxxxxxxxx
Your use of Yahoo! Groups is subject to the Yahoo! Terms of Service.
|