//+------------------------------------------------------------------+ //| Acceleration & Speed.mq4 | //| Copyright © 2005, MetaQuotes Software Corp. | //| http://www.metaquotes.net/ | //+------------------------------------------------------------------+ #property copyright "Copyright © 2007, Kharko" //---- indicator settings #property indicator_separate_window #property indicator_buffers 4 #property indicator_color1 Red #property indicator_color2 Green #property indicator_color3 Yellow #property indicator_color4 Aqua //---- indicator parameters extern int Bar = 24; // Ïåðèîä extern int Cena = 0; // Öåíà: 1 - îòêðûòèÿ; 2 - çàêðûòèÿ; 3 - ìàêñèìóì; 4 - ìèíèìóì; // 5 - (H + L)/2; 6 - (H+L+C)/3; 7 - (H+L+C+O)/4; // 0 - (H+L+C+O)/4 extern bool Sp_vis = true; // ïîêàçàòü/ñïðÿòàòü ãðàôèê ñêîðîñòè extern bool Ac_vis = true; // ïîêàçàòü/ñïðÿòàòü ãðàôèê óñêîðåíèÿ extern bool SpOf_vis = true; // ïîêàçàòü/ñïðÿòàòü ãðàôèê ñêîðîñòè ñî ñäâèãîì âíóòðü èñòîðèè extern bool AcOf_vis = true; // ïîêàçàòü/ñïðÿòàòü ãðàôèê óñêîðåíèÿ ñî ñäâèãîì âíóòðü èñòîðèè //---- indicator buffers double ExtBuffer0[]; double ExtBuffer1[]; double ExtBuffer2[]; double ExtBuffer3[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- drawing settings SetIndexStyle(0,DRAW_LINE); SetIndexStyle(1,DRAW_LINE); SetIndexStyle(2,DRAW_LINE); SetIndexStyle(3,DRAW_LINE); //---- 4 indicator buffers mapping SetIndexBuffer(0,ExtBuffer0); SetIndexBuffer(1,ExtBuffer1); SetIndexBuffer(2,ExtBuffer2); SetIndexBuffer(3,ExtBuffer3); //---- name for DataWindow and indicator subwindow label IndicatorShortName("A&S"); SetIndexLabel(0,"Speed"); SetIndexLabel(1,"Acceleration"); SetIndexLabel(2,"Speed+Offset"); SetIndexLabel(3,"Acceleration+Offset"); //---- initialization done return(0); } //+------------------------------------------------------------------+ //| Accelerator/Decelerator Oscillator | //+------------------------------------------------------------------+ int start() { int limit,Error; //---- last counted bar will be recounted int counted_bars=IndicatorCounted(); if(counted_bars>0) counted_bars--; limit=Bars-counted_bars-Bar; if(limit<1)limit=1; //---- if(ExtBuffer0[0]!=0)ExtBuffer0[0]=0; if(ExtBuffer1[0]!=0)ExtBuffer1[0]=0; if(ExtBuffer2[Bar]!=0)ExtBuffer2[Bar]=0; if(ExtBuffer3[Bar]!=0)ExtBuffer3[Bar]=0; for(int i=0; i<limit; i++) { ExtBuffer0[i]=(value(i)-value(i+Bar))/Point; ExtBuffer2[i+Bar]=ExtBuffer0[i]; } for(i=0; i<limit; i++) { ExtBuffer1[i]=ExtBuffer0[i]-ExtBuffer0[i+Bar]; ExtBuffer3[i+Bar]=ExtBuffer1[i]; } if(Sp_vis==false)ArrayInitialize(ExtBuffer0,0.0); if(SpOf_vis==false)ArrayInitialize(ExtBuffer2,0.0); if(Ac_vis==false)ArrayInitialize(ExtBuffer1,0.0); if(AcOf_vis==false)ArrayInitialize(ExtBuffer3,0.0); Error=GetLastError(); if(Error!=0 && Error!=1) {Print("Error START : ",Error);RefreshRates();} return(0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ double value(int i) { switch(Cena) { case 1: return(Open[i]); case 2: return(Close[i]); case 3: return(High[i]); case 4: return(Low[i]); case 5: return((High[i]+Low[i])/2); case 6: return((High[i]+Low[i]+Close[i])/3); case 7: return((High[i]+Low[i]+Close[i]+Open[i])/4); default: return((High[i]+Low[i]+Close[i]+Open[i])/4); } }
Sample
Analysis
Market Information Used:
Series array that contains open prices of each bar
Series array that contains close prices for each bar
Series array that contains the highest prices of each bar
Series array that contains the lowest prices of each bar
Indicator Curves created:
Implements a curve of type DRAW_LINE
Indicators Used:
Custom Indicators Used:
Order Management characteristics:
Other Features: