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

[amibroker] Re: Newbie Array / Looping Question



PureBytes Links

Trading Reference Links

Thanks Steve,

Much appreciated.




--- In amibroker@xxxxxxxxxxxxxxx, "Steve Dugas" <sjdugas@xxx> wrote:
>
> Hi - There is a page in the users guide that lists which functions will 
> accept an array for the Periods arg, the rest expect a constant...
> 
> http://www.amibroker.com/guide/a_varperiods.html
> 
> Steve
> 
> ----- Original Message ----- 
> From: "brian_z111" <brian_z111@xxx>
> To: <amibroker@xxxxxxxxxxxxxxx>
> Sent: Friday, June 05, 2009 3:00 AM
> Subject: [amibroker] Re: Newbie Array / Looping Question
> 
> 
> > <snip>Median() wants a number as its second argument. (The manual is 
> > clear!)<snip>
> >
> > To help me understand next time ... how did you decide that 
> > Median)array,period) wants a number from what is written in the manual?
> >
> >
> > MA(array,periods); accepts an array and the only differential in the 
> > manual is plurality of the periods (do you think Tomasz intended the 
> > plurality to be significant?)
> >
> > MA(C,Cum(1));//this is OK?
> >
> > <snip> When are the "for" loops executed in the block of code? Knowing 
> > some more about the AFL execution order might be helpful.<snip>
> >
> > Sorry, don't know anything about execution.
> >
> > Recently Siddhartha said that learning the AFL execution was the best 
> > thing we can ever do ... I don't know where to find it though.
> >
> >
> > You are not keen on my suggestion that calcs for the moments are 
> > arithmetic and so should fly in AFL without looping?
> > I am a lay programmer but my instinct is to start there - looping will 
> > slow you down in RT indicators???
> >
> >
> > Plan C - use the RMath Plugin ... advanced stats available there.
> >
> > --- In amibroker@xxxxxxxxxxxxxxx, i cs <ics4mer@> wrote:
> >>
> >> Hi Brian,
> >>
> >> Thanks for getting back to me.
> >>
> >> Unfortunately, Cum() returns array, Median() wants a number as its
> >> second argument. (The manual is clear!)
> >>
> >> I used median as an example because it's relatively easy to understand,
> >> and I will be using it, but I will also be plotting the growth factor in 
> >> the same
> >> way - as well as the other moments of distribution - just one step at a 
> >> time.
> >>
> >> Its possible to derive a lot of the moments of distribution from other 
> >> the
> >> parts, but it comes back to the same problem - I'd have to write 
> >> functions
> >> to derive kurtosis, mode etc.
> >>
> >> Some of the historic emails in the group included the following 
> >> solutions:
> >>   - code the functions myself - which I'm trying to avoid.
> >>   - create a dynamic set of variables using VarSet - this seems a bit 
> >> brutish
> >>      especially if you are playing with a number of "profile attributes".
> >>
> >> When are the "for" loops executed in the block of code? Knowing some more
> >> about the AFL execution order might be helpful. Might go down that track 
> >> for
> >> a while....and check out the other 1500 references to "loop" in the email
> >> group.
> >>
> >> Thanks again...
> >> Robert Z
> >>
> >>
> >>
> >>
> >>
> >> ________________________________
> >> From: brian_z111 <brian_z111@>
> >> To: amibroker@xxxxxxxxxxxxxxx
> >> Sent: Friday, 5 June, 2009 2:57:43 PM
> >> Subject: [amibroker] Re: Newbie Array  / Looping Question
> >>
> >>
> >>
> >>
> >>
> >> I am not sure about this one now ... I think we need some help from the 
> >> code/maths experts.
> >>
> >> Median() doesn't appear to accept an array as input (the manual doesn't 
> >> say one way or another?) ... it might be demanding a constant (that 
> >> wouldn't surprize me since mean/mode/median are moments of a distribution 
> >> so massive calcs might be required to find them for skewed dists without 
> >> having the distriution at hand) ... AB doesn't do that distributions off 
> >> the shelf ... not AFAIK.
> >>
> >> I think you can calc Skewness from N, StDev, arithmetic mean etc ... once 
> >> you have S you can back calc the Median or the Mode from the Mean and the 
> >> StDev.
> >>
> >> Another brute method might be an algorithmic trial and error test for the 
> >> Mode (loops required)... I forget what it is called in programming but if 
> >> the value to the right of the mean has a higher frequency than the mean 
> >> value the mode is somewhere to the right .. by halving the range between 
> >> the freq test you will zero in on the mode and then you can calc the 
> >> median by using the mean and mode values..... AFAIK array processing will 
> >> always be more timely than looping though.
> >>
> >> --- In amibroker@xxxxxxxxx ps.com, "brian_z111" <brian_z111@ ...> wrote:
> >> >
> >> > Median(array, periods)
> >> >
> >> > I assume you are measuring, say ROC(C,1) or similar for % price change.
> >> > I guess you just need to get a progressive count, of the number of ROC 
> >> > datapoints, to make the function work.
> >> >
> >> > Things to look out for (if the AB function is going to work for you):
> >> >
> >> > - every element in the array you are measuring needs a value (nulls or 
> >> > zeros might trip up the math e.g. STDev, mean) ... I guess if you are 
> >> > interested in daily bars you will first create a daily ROC(C,1) or ROC 
> >> > of some other point of interest from within the bar HL range
> >> > - the number of periods, in your array count, is range dependent i.e. 
> >> > in AB it can vary with mode ... QuickAFL can be used to change the 
> >> > range (in AA) and QickAFL will autoset the range in charts (or might 
> >> > ... I am not the full bottle on QuickAFL but there is an article by 
> >> > Tomasz in the AB KnowledgeBase)
> >> > - BarsSince type functions might count one less period than you expect 
> >> > ... depending if the function is a zerobased count and how you want to 
> >> > use the count.... sometimes I have to add 1 to make the adjustment 
> >> > manually
> >> > - BarIndex() is the bar by bar count since the start of the range, 
> >> > where range == the range of the database ... AB gets a bit tricky with 
> >> > when and where it uses the complete database range as the default .... 
> >> > probably to do with fast array processing etc ...sometimes I prefer to 
> >> > use Cum(1) as my count ... I seem to get more visually stable 
> >> > indicators in the charts because it doesn't reference the chart range 
> >> > it references from the start of the database.
> >> >
> >> > - so, making a few assumptions, and if Median works for you as 
> >> > required, Median(ROC(C, 1),Cum(1) ); // because Cum(1) is progressive 
> >> > and counts bars from the beginning
> >> >
> >> > - mathematically I find ROC is not as stable as GrowthFactor where ROC 
> >> > == 3% is expressed as 1.03
> >> >
> >> > Haven't done it though.
> >> >
> >> > If that doesn't work maybe someone else in the forum knows more.
> >> >
> >> > In case of emergency RVince book two has the maths for median, mode, 
> >> > mean interelationships (possibly for advanced, or custom use, you could 
> >> > calculate the median from other values).... mean == median == mode for 
> >> > normal distributions (you should be so lucky!)
> >> >
> >> >
> >> >
> >> >
> >> > --- In amibroker@xxxxxxxxx ps.com, "ics4mer" <ics4mer@> wrote:
> >> > >
> >> > > Hi all,
> >> > >
> >> > > I'm after a general form for doing a particular type of algorithm
> >> > > in AFL - and I'm happy to admit that I might be going about it
> >> > > the totally wrong way...
> >> > >
> >> > > I am attempting to extract an evolving "profile" of a stock over
> >> > > time.
> >> > >
> >> > > Using "median" as an example, lets say I want calculate the median
> >> > > percentage price change for the life of the stock. To give an
> >> > > example:
> >> > >
> >> > >     The 1st trading day - do nothing.
> >> > >     The 2nd trading day - calc median for 2 days
> >> > >     The 3rd trading day - calc median for 3 days
> >> > >     Last traded day     - calc median for n days.
> >> > >
> >> > > For simple functions, I have used a construct similar to;
> >> > >     for ( i=0; i < BarCount; i++ ){
> >> > >        myArray[ i ] = simpleFunc( i );
> >> > >        .....
> >> > >     }
> >> > >
> >> > > However, in this case, I would have to write a new median function,
> >> > > and this is irritating, since there is a perfectly good one
> >> > > taunting me from the users manual! That's why I suspect that I
> >> > > might be doing something in the wrong way.
> >> > >
> >> > > Any help or pointers would be much appreciated. A pointer to
> >> > > a message in the user group would be fine too! ( Yes I am still
> >> > > trawling through the email group as I write this....)
> >> > >
> >> > > TIA
> >> > >
> >> > > Robert Z
> >> > >
> >> >
> >>
> >>
> >>
> >>
> >>
> >>       Need a Holiday? Win a $10,000 Holiday of your choice. Enter 
> >> now.http://us.lrd.yahoo.com/_ylc=X3oDMTJxN2x2ZmNpBF9zAzIwMjM2MTY2MTMEdG1fZG1lY2gDVGV4dCBMaW5rBHRtX2xuawNVMTEwMzk3NwR0bV9uZXQDWWFob28hBHRtX3BvcwN0YWdsaW5lBHRtX3BwdHkDYXVueg--/SIG=14600t3ni/**http%3A//au.rd.yahoo.com/mail/tagline/creativeholidays/*http%3A//au.docs.yahoo.com/homepageset/%3Fp1=other%26p2=au%26p3=mailtagline
> >>
> >
> >
> >
> >
> > ------------------------------------
> >
> > **** IMPORTANT PLEASE READ ****
> > This group is for the discussion between users only.
> > This is *NOT* technical support channel.
> >
> > TO GET TECHNICAL SUPPORT send an e-mail directly to
> > SUPPORT {at} amibroker.com
> >
> > TO SUBMIT SUGGESTIONS please use FEEDBACK CENTER at
> > http://www.amibroker.com/feedback/
> > (submissions sent via other channels won't be considered)
> >
> > For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
> > http://www.amibroker.com/devlog/
> >
> > Yahoo! Groups Links
> >
> >
> >
> >
>




------------------------------------

**** IMPORTANT PLEASE READ ****
This group is for the discussion between users only.
This is *NOT* technical support channel.

TO GET TECHNICAL SUPPORT send an e-mail directly to 
SUPPORT {at} amibroker.com

TO SUBMIT SUGGESTIONS please use FEEDBACK CENTER at
http://www.amibroker.com/feedback/
(submissions sent via other channels won't be considered)

For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
http://www.amibroker.com/devlog/

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/