//+------------------------------------------------------------------+ //| Srev.mq4 | //| Copyright © 2008 Stajer59 | //| | //+------------------------------------------------------------------+ #property copyright "Copyright © 2007, http://www.stajer59.ucoz.ru" #property link " Srev " #property indicator_chart_window #property indicator_buffers 2 #property indicator_color1 Lime #property indicator_color2 Red #define SH_BUY 1 #define SH_SELL -1 //---- Âõîäíûå ïàðàìåòðû extern int AllBars=0;//Äëÿ ñêîëüêè áàðîâ ñ÷èòàòü. 0 - äëÿ âñåõ. extern int Otstup=30;//Îòñòóï. extern double Per=34;//Ïåðèîä. int SH,NB,i,UD; double R,SHMax,SHMin; double BufD[]; double BufU[]; //+------------------------------------------------------------------+ //| Ôóíêöèÿ èíèöèàëèçàöèè | //+------------------------------------------------------------------+ int init() { // NB çàïèñûâàåì êîëè÷åñòâî áàðîâ, äëÿ êîòîðûõ ñ÷èòàåì èíäèêàòîð if (Bars<AllBars+Per || AllBars==0) NB=Bars-Per; else NB=AllBars; IndicatorBuffers(2); IndicatorShortName("Srev"); SetIndexStyle(0,DRAW_ARROW,0,3); SetIndexStyle(1,DRAW_ARROW,0,3); SetIndexArrow(0,159); SetIndexArrow(1,159); SetIndexBuffer(0,BufU); SetIndexBuffer(1,BufD); SetIndexDrawBegin(0,Bars-NB);//Èíäèêàòîð áóäåò îòîáðàæàòüñÿ òîëüêî äëÿ NB áàðîâ SetIndexDrawBegin(1,Bars-NB); ArrayInitialize(BufD,0.0);//Çàáü¸ì îáà áóôåðà íîëèêàìè. Èíà÷å áóäåò ìóñîð ïðè ñìåíå òàéìôðåéìà. ArrayInitialize(BufU,0.0); Print("NB:", NB); return(0); } //+------------------------------------------------------------------+ //| Ôóíêöèÿ äåèíèöèàëèçàöèè | //+------------------------------------------------------------------+ int deinit() { return(0); } //+------------------------------------------------------------------+ //| Ñîáñòâåííî èíäèêàòîð | //+------------------------------------------------------------------+ int start() { int CB=IndicatorCounted(); /* Îïòèìèçàöèîííàÿ ôèøêà.  ÿçûê ââåäåíà ôóíêöèÿ, êîòîðàÿ âîçâðàùàåò êîëè÷åñòâî ïðîñ÷èòàííûõ áàðîâ. Ïðè ïåðâîì âûçîâå èíäèêàòîðà ýòî 0, åù¸ íè÷åãî íå ñ÷èòàëîñü, à çàòåì êîëè÷åñòâî îáñ÷èòàííûõ áàðîâ ìèíóñ îäèí. Ò.å. åñëè âñåãî áàðîâ 100, òî ôóíêöèÿ âåðí¸ò 99. Ïðè ïåðâîì âûçîâå NB îñòà¸òñÿ ïðåæíåé, à ïðè ïîñëåäóþùèõ óìåíüøàåòñÿ äî ïîñëåäíåãî áàðà, ò.å. 1 èëè 2 */ if(CB<0) return(-1); else if(NB>Bars-CB) NB=Bars-CB; for (SH=1;SH<NB;SH++)//Ïðîñ÷èòûâàåì ãðàôèê îò 1 äî NB { for (R=0,i=SH;i<SH+10;i++) {R+=(10+SH-i)*(High[i]-Low[i]);} R/=55; SHMax = High[Highest(NULL,0,MODE_HIGH,Per,SH)]; SHMin = Low[Lowest(NULL,0,MODE_LOW,Per,SH)]; if (Close[SH]<SHMin+(SHMax-SHMin)*Otstup/100 && UD!=SH_SELL) { BufU[SH]=Low[SH]-R*0.5; UD=SH_SELL; } if (Close[SH]>SHMax-(SHMax-SHMin)*Otstup/100 && UD!=SH_BUY) { BufD[SH]=High[SH]+R*0.5; UD=SH_BUY; } } return(0); }
Sample
Analysis
Market Information Used:
Series array that contains the highest prices of each bar
Series array that contains the lowest prices of each bar
Series array that contains close prices for each bar
Indicator Curves created:
Implements a curve of type DRAW_ARROW
Indicators Used:
Custom Indicators Used:
Order Management characteristics:
Other Features: