//+------------------------------------------------------------------+ //| LSMA | //+------------------------------------------------------------------+ #property copyright "Copywrong 2005 RonT" #property link "http://www.lightpatch.com/forex/" //---- indicator settings #property indicator_chart_window #property indicator_buffers 7 #property indicator_color1 Yellow #property indicator_color2 Green #property indicator_color3 Red //---- buffers double ExtMapBuffer1[]; //Yellow double ExtMapBuffer2[]; //Green double ExtMapBuffer3[]; //Red extern int extRperiod = 57; extern int extDiff = 6; extern int extDraw4HowLong = 500; int bartime; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { SetIndexBuffer(0,ExtMapBuffer1); //Yellow SetIndexStyle(0, DRAW_LINE, STYLE_SOLID, 2); SetIndexBuffer(1,ExtMapBuffer2); //Green SetIndexStyle(1, DRAW_LINE, STYLE_SOLID, 2); SetIndexBuffer(2,ExtMapBuffer3); //Red SetIndexStyle(2, DRAW_LINE, STYLE_SOLID, 2); } //+------------------------------------------------------------------+ //| Custor indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { int i; for( i=0; i<Bars; i++ ) { ExtMapBuffer1[i]=0; ExtMapBuffer2[i]=0; ExtMapBuffer3[i]=0; } } int start() { int c; int i; int length; double lengthvar; int loopbegin; int pos; double sum; double tmp; double wtp; //previous value double wt; //current value int DiffADJ=extDiff; if(bartime==Time[0]) return(0); bartime=Time[0]; length = extRperiod; loopbegin = extDraw4HowLong - length - 1; for(pos = loopbegin; pos >= 0; pos--) { sum = 0; for(i = length; i >= 1 ; i--) { lengthvar = length + 1; lengthvar /= 3; tmp = 0; tmp = ( i - lengthvar)*NormalizeDouble(Open[length-i+pos],4); sum+=tmp; } wtp=wt; wt = sum*6/(length*(length+1)); ExtMapBuffer1[pos] = wt+(10*Point); //yellow ExtMapBuffer2[pos] = wt+(10*Point); //green ExtMapBuffer3[pos] = wt+(10*Point); //red if (wtp < wt+(DiffADJ*Point)) { ExtMapBuffer3[pos] = EMPTY_VALUE; //remove RED //DiffADJ=0; } if (wtp > wt-(DiffADJ*Point)) { ExtMapBuffer2[pos] = EMPTY_VALUE; //remove GREEN //DiffADJ=0; } if (wtp>wt+(DiffADJ*Point) && wtp<wt-(DiffADJ*Point)) { //DiffADJ=extDiff; } } }
Sample
Analysis
Market Information Used:
Series array that contains open time of each bar
Series array that contains open prices of each bar
Indicator Curves created:
Implements a curve of type DRAW_LINE
Indicators Used:
Custom Indicators Used:
Order Management characteristics:
Other Features: