//+------------------------------------------------------------------+ //| SixMA_Allignment.mq4 | //| Copyright © 2007, numbercruncher. | //+------------------------------------------------------------------+ #property copyright "Copyright © 2007, numbercruncher" //---- indicator settings #property indicator_separate_window #property indicator_buffers 3 #property indicator_color1 Red #property indicator_color2 LawnGreen #property indicator_color3 Yellow #property indicator_width1 4 #property indicator_width2 4 //---- indicator variables double SMA5; double SMA50; double SMA150; double SMA300; double SMA600; double SMA2400; //---- indicator buffers double SixMABuff1[]; double SixMABuff2[]; double SixMABuff3[]; double alertTag; double prev; extern double comment= false; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- drawing settings SetIndexStyle(0,DRAW_HISTOGRAM); SetIndexStyle(1,DRAW_HISTOGRAM); SetIndexStyle(2,DRAW_LINE,STYLE_SOLID,3,Black); SetIndexDrawBegin(1,SixMABuff1); SetIndexDrawBegin(1,SixMABuff2); SetIndexDrawBegin(1,SixMABuff3); IndicatorDigits(Digits+1); //---- indicator buffers mapping SetIndexBuffer(0,SixMABuff1); SetIndexBuffer(1,SixMABuff2); SetIndexBuffer(2,SixMABuff3); //---- name for DataWindow and indicator subwindow label IndicatorShortName("SixMA"); SetIndexLabel(0,NULL); SetIndexLabel(1,NULL); SetIndexLabel(2,"SixMA"); //---- initialization done return(0); } //+------------------------------------------------------------------+ //| SixMA_Allignment | //+------------------------------------------------------------------+ int start() { int counted_bars=IndicatorCounted(); if(counted_bars<0) return(-1); //---- check for possible errors if(counted_bars>0) counted_bars--; //---- last counted bar will be recounted int limit; limit=Bars-counted_bars; //---- for(int i=0; i<limit; i++) { SixMABuff1[i] = 0.0; SixMABuff2[i] = 0.0; SMA5 = iMA(NULL,0,5,0,MODE_SMA,PRICE_CLOSE,i); SMA50 = iMA(NULL,0,50,0,MODE_SMA,PRICE_CLOSE,i); SMA150 = iMA(NULL,0,150,0,MODE_SMA,PRICE_CLOSE,i); SMA300 = iMA(NULL,0,300,0,MODE_SMA,PRICE_CLOSE,i); SMA600 = iMA(NULL,0,600,0,MODE_SMA,PRICE_CLOSE,i); SMA2400 = iMA(NULL,0,2400,0,MODE_SMA,PRICE_CLOSE,i); //---- measure strength of up move if (SMA600 > SMA2400) SixMABuff2[i] = 10; if (SMA300 > SMA600) { SixMABuff2[i] = SixMABuff2[i] + 10;} else if (SMA300 > SMA2400) { SixMABuff2[i] = SixMABuff2[i] + 5;} if (SMA150 > SMA300) { SixMABuff2[i] = SixMABuff2[i] + 10;} else if (SMA150 > SMA600) { SixMABuff2[i] = SixMABuff2[i] + 6.6;} else if (SMA150 > SMA2400) { SixMABuff2[i] = SixMABuff2[i] + 3.3;} if (SMA50 > SMA150) { SixMABuff2[i] = SixMABuff2[i] + 10;} else if (SMA50 > SMA300) { SixMABuff2[i] = SixMABuff2[i] + 7.5;} else if (SMA50 > SMA600) { SixMABuff2[i] = SixMABuff2[i] + 5;} else if (SMA50 > SMA2400) { SixMABuff2[i] = SixMABuff2[i] + 2.5;} if (SMA5 > SMA50) { SixMABuff2[i] = SixMABuff2[i] + 10;} else if (SMA5 > SMA150) { SixMABuff2[i] = SixMABuff2[i] + 8;} else if (SMA5 > SMA300) { SixMABuff2[i] = SixMABuff2[i] + 6;} else if (SMA5 > SMA600) { SixMABuff2[i] = SixMABuff2[i] + 4;} else if (SMA5 > SMA2400) { SixMABuff2[i] = SixMABuff2[i] + 2;} //---- measure strength of down move if (SMA600 < SMA2400) SixMABuff1[i] = -10; if (SMA300 < SMA600) { SixMABuff1[i] = SixMABuff1[i] - 10;} else if (SMA300 < SMA2400) { SixMABuff1[i] = SixMABuff1[i] - 5;} if (SMA150 < SMA300) { SixMABuff1[i] = SixMABuff1[i] - 10;} else if (SMA150 < SMA600) { SixMABuff1[i] = SixMABuff1[i] - 6.6;} else if(SMA150 < SMA2400) { SixMABuff1[i] = SixMABuff1[i] - 3.3;} if (SMA50 < SMA150) { SixMABuff1[i] = SixMABuff1[i] - 10;} else if (SMA50 < SMA300) { SixMABuff1[i] = SixMABuff1[i] - 7.5;} else if (SMA50 < SMA600) { SixMABuff1[i] = SixMABuff1[i] - 5;} else if (SMA50 < SMA2400) { SixMABuff1[i] = SixMABuff1[i] - 2.5;} if (SMA5 < SMA50) { SixMABuff1[i] = SixMABuff1[i] - 10;} else if (SMA5 < SMA150) { SixMABuff1[i] = SixMABuff1[i] - 8;} else if (SMA5 < SMA300) { SixMABuff1[i] = SixMABuff1[i] - 6;} else if (SMA5 < SMA600) { SixMABuff1[i] = SixMABuff1[i] - 4;} else if (SMA5 < SMA2400) { SixMABuff1[i] = SixMABuff1[i] - 2;} //---- Add the 2 together SixMABuff3[i] = SixMABuff1[i] + SixMABuff2[i]; if(comment == true) Comment("SixMABuff3= ",SixMABuff3[i]); if(prev==0) prev =SixMABuff3[i]; if(prev < SixMABuff3[i] && SixMABuff3[i] < 0 && SixMABuff3[i] > -2 && alertTag!=Time[0]) {Alert("6SMA Get ready to trend Down on "," buffer3= ",SixMABuff3[i]," ",Symbol()," Period ",Period());alertTag = Time[0];prev = SixMABuff3[i];} if(prev > SixMABuff3[i] && SixMABuff3[i] > 0 && SixMABuff3[i] < 2 && alertTag!=Time[0]) {Alert("6SMA Get ready to trend Up on "," buffer3= ",SixMABuff3[i]," ",Symbol()," Period ",Period());alertTag = Time[0];prev = SixMABuff3[i];} } //---- done return(0); } //+------------------------------------------------------------------+
Sample
Analysis
Market Information Used:
Series array that contains open time of each bar
Indicator Curves created:
Implements a curve of type DRAW_HISTOGRAM
Implements a curve of type DRAW_LINE
Indicators Used:
Moving average indicator
Custom Indicators Used:
Order Management characteristics:
Other Features:
It issuies visual alerts to the screen