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

Re: [amibroker] Re: functions/variable scope errors



PureBytes Links

Trading Reference Links

Define the functions first, but only use them within your limited areas of code
Even if you have to define different functions for each limited area
-- 
Cheers
Graham Kav
AFL Writing Service
http://www.aflwriting.com



On 09/01/2008, loveyourenemynow <loveyourenemynow@xxxxxxxx> wrote:
> Thanks Mike,
>
> but my code is written in such a way that functions play the roles of
> parameters(to avoid errors and facilitate debugging and changes),
> trying to mimic polymorphism of OO language.
> Problem is that i think functions cannot be changed at runtime during
> backtesting , but have to be declared one and stay the same.
> These functions return different prices (O/C) with different time
> delays so I could rewrite the code and use one functions taking 2
> paramters , one for delay and the other for O/P.
>
> This what it comes to my mind now, but I would like to know why is tht
> error produced.
> what if I declare empty functions (like virtual declaration in c++) at
> as an empty prototype at global scope and implement and give some
> parameter dependent implementations later. Again is all about mimic
> polymorphism.
>
> Thanks
> Ly
>
> --- In amibroker@xxxxxxxxxxxxxxx, "Mike" <sfclimbers@xxx> wrote:
> >
> > Read http://www.amibroker.com/guide/a_userfunctions.html
> >
> > Then try changing your function signature to just take a parameter
> > and move the declaration out of the if statement.
> >
> > e.g.
> > function P1f(sys) {
> >   if (sys == 1) {
> >     ...
> >   }
> >   ...
> > }
> >
> > Alternatively, you could create different functions for each scenario
> > and check a condition in your calling code to determine which one to
> > call.
> >
> > e.g.
> > ...
> > if (sys == 1) {
> >   P1f();
> > } else {
> >   OtherP1f();
> > }
> > ...
> > function P1f() {
> >   ...
> > }
> > function OtherP1f() {
> >   ...
> > }
> >
> > I don't understand your scope question. But you may find the
> > documentation for local/global helpful:
> >
> > http://www.amibroker.com/guide/keyword/local.html
> > http://www.amibroker.com/guide/keyword/global.html
> >
> > Mike
> >
> > --- In amibroker@xxxxxxxxxxxxxxx, "loveyourenemynow"
> > <loveyourenemynow@> wrote:
> > >
> > > I am trying to optimize over diffeent types of systems and I need to
> > > define function accordingly, but I get and error with this code
> > >
> > > if (sys==1){
> > > ///cc->co entry at close exit at day after open
> > > SetOption("ActivateStopsImmediately",True);
> > > SetTradeDelays(0,0,0,0);
> > > ShortPrice=C;
> > > BuyPrice=C;
> > > CoverPrice=O;
> > > SellPrice=O;
> > > function P1f() {return Ref(C,-1);}
> > > function P2f() {return Ref(C,0);}
> > > ApplyStop(stopTypeNBar,stopModeBars,1,1);
> > > dc=1;
> > > MaxPosPer=1;
> > > }
> > >
> > > while outside brackets it runs.
> > >
> > > In a similar way variable I noticed that arrays declared at
> > different
> > > scope levels are not accessible to the lower levels (i think scalr
> > > yes) unless they are defined at gloabal level,
> > > This is different from c++ scope conventions.
> > > So the only way to share among different scopes (I mean portions of
> > > code at differnt levels of {} nesting), seems to declare them
> > globally.
> > > Am I correct?
> > >
> > > Thanks
> > > Ly
> > >
> >
>
>
>
>
> 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
>
>
>
>


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/