//+------------------------------------------------------------------+ //| SMA_Angle.mq4 | //| jpkfox | //| | //| You can use this indicator to measure when the SMA angle is | //| "near zero". AngleTreshold determines when the angle for the | //| SMA is "about zero": This is when the value is between | //| [-AngleTreshold, AngleTreshold] (or when the histogram is red). | //| SMAPeriod: SMA period | //| AngleTreshold: The angle value is "about zero" when it is | //| between the values [-AngleTreshold, AngleTreshold]. | //| StartSMAShift: The starting point to calculate the | //| angle. This is a shift value to the left from the | //| observation point. Should be StartSMAShift > EndSMAShift. | //| StartSMAShift: The ending point to calculate the | //| angle. This is a shift value to the left from the | //| observation point. Should be StartSMAShift > EndSMAShift. | //| | //| Modified by MrPip | //| Red for down | //| Yellow for near zero | //| Green for up | //| 10/15/05 MrPip | //| Corrected problem with USDJPY and optimized code | //| 10/23/05 Added other JPY crosses | //| 01/02/07 tradeIgel: changed for "5Min Intraday System" by | //| Phillip Nel http://www.forexfactory.com/forexforum/showthread.php?t=11854&page=1&pp=15 | //| | //+------------------------------------------------------------------+ #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 Yellow #property indicator_color3 FireBrick //---- indicator parameters extern int SMAPeriod=34; extern double AngleTreshold=0.2; extern int StartSMAShift=6; extern int EndSMAShift=0; //---- 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,2); SetIndexStyle(1,DRAW_HISTOGRAM,STYLE_SOLID,2); SetIndexStyle(2,DRAW_HISTOGRAM,STYLE_SOLID,2); IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)+2); //---- 3 indicator buffers mapping if(!SetIndexBuffer(0,UpBuffer) && !SetIndexBuffer(1,DownBuffer) && !SetIndexBuffer(2,ZeroBuffer)) Print("cannot set indicator buffers!"); //---- name for DataWindow and indicator subwindow label IndicatorShortName("SMA_Angle("+SMAPeriod+","+AngleTreshold+","+StartSMAShift+","+EndSMAShift+")"); //---- initialization done return(0); } //+------------------------------------------------------------------+ //| The angle for SMA | //+------------------------------------------------------------------+ int start() { double fEndMA, fStartMA; double fAngle, mFactor, dFactor; int nLimit, i; int nCountedBars; double angle; int ShiftDif; string Sym; if(EndSMAShift >= StartSMAShift) { Print("Error: EndSMAShift >= StartSMAShift"); StartSMAShift = 6; EndSMAShift = 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 = StartSMAShift-EndSMAShift; mFactor /= ShiftDif; //---- main loop for(i=0; i<nLimit; i++) { fEndMA=iMA(NULL,0,SMAPeriod,0,MODE_SMA,PRICE_MEDIAN,i+EndSMAShift); fStartMA=iMA(NULL,0,SMAPeriod,0,MODE_SMA,PRICE_MEDIAN,i+StartSMAShift); // 10000.0 : Multiply by 10000 so that the fAngle is not too small // for the indicator Window. fAngle = mFactor * (fEndMA - fStartMA)/2.0; // fAngle = MathArctan(fAngle)/dFactor; DownBuffer[i] = 0.0; UpBuffer[i] = 0.0; ZeroBuffer[i] = 0.0; if(MathAbs(fAngle) >= 0.349 && MathAbs(fAngle) <= 0.524) { UpBuffer[i] = fAngle; } else { ZeroBuffer[i] = fAngle; } } return(0); } //+------------------------------------------------------------------+
Sample
Analysis
Market Information Used:
Indicator Curves created:
Implements a curve of type DRAW_HISTOGRAM
Indicators Used:
Moving average indicator
Custom Indicators Used:
Order Management characteristics:
Other Features: