//+-----------+ //| LSMA | //+-----------+ #property copyright "Copyright 2005 Ron Thompson" #property link "http://www.forexmt4.com/" // indicator settings #property indicator_chart_window // buffers extern int xbars = 100; extern int PeriodGo = 1; extern int PeriodStop = 200; // bar counting datetime bartime=0; // Objects int uniq=0; // LSMA int per; //+-----------+ //| Init | //+-----------+ int init() { // 233 up arrow // 234 down arrow // 158 little dot // 159 big dot // 168 open square // 120 box with X ObjectsDeleteAll(); Print("Init complete"); } //+-----------+ //| DE-Init | //+-----------+ int deinit() { ObjectsDeleteAll(); Print("DE-Init complete"); } //+-----------+ //| Each Tick | //+-----------+ int start() { int pos; double wt; //LSMA current value double wtp; //LSMA previous value // draw once at open of bar if(bartime==Time[0]) return(0); bartime=Time[0]; ObjectsDeleteAll(); uniq=0; for(per = PeriodGo; per <= PeriodStop; per++) { for(pos = xbars; pos >= 0; pos--) { wtp=wt; wt = LSMA(pos); //draw number on chart ObjectCreate ("myx"+DoubleToStr(pos,0)+"_"+DoubleToStr(uniq,0), OBJ_TEXT, 0, Time[pos], wt ); if(wtwtp) ObjectSetText("myx"+DoubleToStr(pos,0)+"_"+DoubleToStr(uniq,0), ".",24,"Arial",LimeGreen); uniq++; }//for pos }//for per }//start double LSMA(int mybar) { int i; double sum=0; double lengthvar = ( per + 1.0 ) / 3.0; for(i = per; i >= 1 ; i--) { sum += ( i - lengthvar)*Open[per - i + mybar]; } return(sum * 6 / (per*(per + 1)) ); }