//+------------------------------------------------------------------+ //| MA_In_Color.mq4 | //| Copyright © 2004, MetaQuotes Software Corp. | //| Modified from LSMA_In_Color to use any MA by Robert Hill | //+------------------------------------------------------------------+ //mod #property copyright "Copyright © 2006, FX Sniper and Robert Hill" #property link "http://www.metaquotes.net/" //---- indicator settings #property indicator_chart_window #property indicator_buffers 5 #property indicator_color1 Yellow #property indicator_color2 Green #property indicator_color3 Red #property indicator_color4 DodgerBlue #property indicator_color5 OrangeRed extern int MAPeriod=5; extern int MAType=1; extern bool dots =1; extern string MA_Method_Price = "SMA0 EMA1 SMMA2 LWMA3 LSMA4||0O,1C 2H3L,4Md 5Tp 6WghC: Md(HL/2)4,Tp(HLC/3)5,Wgh(HLCC/4)6"; //---- buffers double ExtMapBuffer1[]; double ExtMapBuffer2[]; double ExtMapBuffer3[]; double ExtMapBuffer4[]; double ExtMapBuffer5[]; //---- variables int MAMode; string strMAType; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { IndicatorBuffers(5); //---- drawing settings SetIndexBuffer(0,ExtMapBuffer1); SetIndexBuffer(1,ExtMapBuffer2); SetIndexBuffer(2,ExtMapBuffer3); SetIndexStyle(0,DRAW_LINE); SetIndexStyle(1,DRAW_LINE); SetIndexStyle(2,DRAW_LINE); if (dots) { SetIndexStyle (3,DRAW_ARROW); SetIndexStyle (4,DRAW_ARROW); SetIndexArrow (3,159); SetIndexArrow (4,159); SetIndexEmptyValue(3,EMPTY_VALUE); SetIndexEmptyValue(4,EMPTY_VALUE); SetIndexBuffer (3,ExtMapBuffer4); SetIndexBuffer (4,ExtMapBuffer5); } switch (MAType) { case 1: strMAType="EMA"; MAMode=MODE_EMA; break; case 2: strMAType="SMMA"; MAMode=MODE_SMMA; break; case 3: strMAType="LWMA"; MAMode=MODE_LWMA; break; case 4: strMAType="LSMA"; break; default: strMAType="SMA"; MAMode=MODE_SMA; break; } IndicatorShortName( strMAType+ " (" +MAPeriod + ") "); //---- initialization done return(0); } double LSMA(int Rperiod, int shift) { int i; double sum; int length; double lengthvar; double tmp; double wt; length = Rperiod; sum = 0; for(i = length; i >= 1 ; i--) { lengthvar = length + 10; lengthvar /= 6; tmp = 0; tmp = ( i - lengthvar)*Close[length-i+shift]; sum+=tmp; } wt = sum*6/(length*(length+1)); return(wt); } int start() { double MA_Cur, MA_Prev; int limit; int counted_bars = IndicatorCounted(); if (counted_bars<0) return(-1); if (counted_bars>0) counted_bars--; limit = Bars - counted_bars; for(int i=limit; i>=0; i--) { if (MAType == 4) { MA_Cur = LSMA(MAPeriod,i); MA_Prev = LSMA(MAPeriod,i+1); } else { MA_Cur = iMA(NULL,0,MAPeriod,0,MAMode,PRICE_CLOSE,i); MA_Prev = iMA(NULL,0,MAPeriod,0,MAMode,PRICE_CLOSE,i+1); } //========== COLOR CODING =========================================== ExtMapBuffer1[i] = MA_Cur; ExtMapBuffer2[i] = EMPTY_VALUE; ExtMapBuffer3[i] = EMPTY_VALUE; ExtMapBuffer4[i] = EMPTY_VALUE; ExtMapBuffer5[i] = EMPTY_VALUE; if (MA_Cur > MA_Prev ) { ExtMapBuffer2[i] = MA_Cur; ExtMapBuffer4[i]= MA_Cur; } else if (MA_Cur < MA_Prev ) { ExtMapBuffer3[i] = MA_Cur; ExtMapBuffer5[i]= MA_Cur; } } return(0); } //+------------------------------------------------------------------+
Sample
Analysis
Market Information Used:
Series array that contains close prices for each bar
Indicator Curves created:
Implements a curve of type DRAW_LINE
Indicators Used:
Moving average indicator
Custom Indicators Used:
Order Management characteristics:
Other Features: