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 <[EMAIL PROTECTED]> 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 [email protected], "Mike" <[EMAIL PROTECTED]> 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 [email protected], "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 > > > >
