I think you got it - Good luck. On Sat, May 2, 2009 at 7:48 PM, Pete <[email protected]> wrote:
> > > Ok, let me see if I understand what is happening at each statement of the > code. > > Sum50[i] = Sum50[i-1] + Close[i]; > For each bar add the current close to the previous accumulated value of > closes. > > if(i > 50) Sum50[i] = Sum50[i] - Close[i - 50]; > For each bar beyond the 50th bar subtract the close of the bar 50 places > backward from current bar. > > if(i >= 50) MA50[i] = SUM50[i] / 50; > For each bar greater than or equal to 50 take the accumulated total from > the contiguous 50 bars and divide it by 50 which calculates the average. > > Please correct me if I missed something. But I do believe I understand what > is happening at each iteration of the loop. > > Thank you Tony for providing that very simple example so I could get my > mind around the concept. > > Pete :-) > > --- In [email protected] <amibroker%40yahoogroups.com>, Tony > Grimes <tonez.em...@...> wrote: > > > > Here is a version that will match the 50 MA from Amibroker: > > Sum50 = 0; > > MA50 = Null; > > > > for(i = 1; i < BarCount; i++) > > { > > Sum50[i] = Sum50[i-1] + Close[i]; > > > > if(i > 50) Sum50[i] = Sum50[i] - Close[i - 50]; > > > > if(i >= 50) MA50[i] = SUM50[i] / 50; > > } > > > > > > Plot(MA50,"50 MA via Looping", colorRed, styleLine); > > Plot(MA(C,50),"50 MA via Built in Function", colorBlack, styleLine); > > > > > > On Sat, May 2, 2009 at 4:37 PM, Pete <dryhe...@...> wrote: > > > > > > > > > > > Ok, first off, I apparently don't have the first clue about how to > right > > > code that loops through an AB database. I am pretty fluent with looping > > > through MS Access databases using VBA but when it comes to AB I am > > > completely lost. > > > > > > So in my endeavor to educate myself on the ins and outs of looping in > AB I > > > decided to try creating a very simple 50 period moving average using a > for > > > loop. My results are below but it does not work. > > > > > > I am defeated and at my wits end. Despite all this time and effort I > have > > > gained absolutely nothing which helps understand what is happening at > each > > > bar during a loop beyond measuring a single value for a single bar. > What I > > > am trying to understand is how to accumulate values over a period of > bars > > > and output the accumulated value for each and plot it on a chart. > > > > > > Seems simple enough, add the closes of 50 consecutive bars, store the > > > result in a variable and divide that variable by 50. I can either do > this > > > for all bars or one bar but have not been able to figure out how to do > it > > > for EVERY bar. > > > > > > Thanks for taking the time to look at this. > > > > > > Pete :-) > > > //Code Begin@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ > > > Cnt[0] = 0; > > > SumOfClose[0] = 0; > > > for( i = 1; i < BarCount; i++ ) > > > { > > > if(Cnt[i] < 50)//check if counter is less than 50 > > > { > > > //if counter less than 50 add current bar's > > > //close to the previous running total > > > SumOfClose[i] = (SumOfClose[i-1] + C[i]); > > > //increment counter by + 1 each bar > > > Cnt = Cnt + 1; > > > } > > > if(Cnt[i] == 50)//check if counter is equal to 50 > > > { > > > //if counter = 50 than compute > > > //the 50 period MA > > > MAline[i] = SumOfClose[i]/50; > > > //reset counter to zero > > > Cnt = 0; > > > } > > > } > > > //plot the result > > > Plot(MAline, "MA 50", colorBlue, styleLine); > > > //Code End@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ > > > > > > > > > > > > > >
