#property copyright "jpkfox" #property link "http://www.strategybuilderfx.com/forums/showthread.php?t=15274&page=1&pp=8" //---- indicator settings #property indicator_separate_window #property indicator_buffers 3 #property indicator_color1 LimeGreen #property indicator_color2 Red #property indicator_color3 Yellow #property indicator_width1 2 #property indicator_width2 2 #property indicator_width3 2 #property indicator_minimum 0 #property indicator_maximum 1 //---- indicator parameters extern int MAMode = 1; extern int MAPeriod = 4; extern int Price = 4; extern double AngleTreshold = 1.2; extern int StartMAShift = 4; extern int EndMAShift = 0; extern double AngleTreshold_inv = -1.2; //---- indicator buffers double UpBuffer[]; double DownBuffer[]; double ZeroBuffer[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- 2 additional buffers are used for counting. IndicatorBuffers(3); //---- drawing settings SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,4); SetIndexStyle(1,DRAW_HISTOGRAM,STYLE_SOLID,4); SetIndexStyle(2,DRAW_HISTOGRAM,STYLE_SOLID,4); //---- 3 indicator buffers mapping SetIndexBuffer(0,UpBuffer); SetIndexBuffer(1,DownBuffer); SetIndexBuffer(2,ZeroBuffer); //---- name for DataWindow and indicator subwindow label //IndicatorShortName("MAAngle("+MAPeriod+","+AngleTreshold+","+StartMAShift+","+EndMAShift+")"); IndicatorShortName("MAAngle"); //---- initialization done return(0); } //+------------------------------------------------------------------+ //| The angle for EMA | //+------------------------------------------------------------------+ int start() { double fEndMA, fStartMA; double fAngle, mFactor, dFactor; int nLimit, i; int nCountedBars; int ShiftDif; string Sym; if (MAMode >= 4) MAMode = 0; if(EndMAShift >= StartMAShift) { Print("Error: EndMAShift >= StartMAShift"); StartMAShift = 6; EndMAShift = 0; } nCountedBars = IndicatorCounted(); //---- check for possible errors if(nCountedBars<0) return(-1); //---- last counted bar will be recounted if(nCountedBars>0) nCountedBars--; nLimit = Bars-nCountedBars; dFactor = 2*3.14159/180.0; mFactor = 10000.0; Sym = StringSubstr(Symbol(),3,3); if (Sym == "JPY") mFactor = 100.0; ShiftDif = StartMAShift-EndMAShift; mFactor /= ShiftDif; //---- main loop for(i=0; i AngleTreshold) { UpBuffer[i] =1; DownBuffer[i] = 0; ZeroBuffer[i] = 0; } else if (fAngle < AngleTreshold_inv) { UpBuffer[i] =0; DownBuffer[i] = 1; ZeroBuffer[i] = 0; } else ZeroBuffer[i] = 1; } return(0); } //+------------------------------------------------------------------+