//+------------------------------------------------------------------+ //| Ticks.mq4 | //| MetaQuotes | //| http://www.alpari-idc.ru/ru/experts/articles/ | //+------------------------------------------------------------------+ #property copyright "Rosh" #property link "http://www.alpari-idc.ru/ru/experts/articles/" #property indicator_separate_window #property indicator_buffers 1 #property indicator_color1 Navy //---- buffers extern int MaxDrawTicks=500; double ExtMapBuffer1[]; int myBars; int tickCounter; int delimeterCounter; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators SetIndexStyle(0,DRAW_LINE); SetIndexBuffer(0, ExtMapBuffer1); SetIndexEmptyValue(0,0.0); Print("Îáíóëÿåì òèêè"); for (int i=Bars-1;i>=0;i--) ExtMapBuffer1[i]=0.0; //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| ñäâèíåì ìàññèâ | //+------------------------------------------------------------------+ void SetDelimeter() { //---- string delimeterDate=TimeToStr(Time[0]); if (myBars!=0) { Print("Ñòàâèì ðàçäåëèòåëü"); int handle=WindowFind("Ticks-2"); if(!ObjectCreate(delimeterDate,OBJ_VLINE,handle,Time[0],0)) { Alert("Íåäà÷íàÿ ïîïûòêà ñîçäàíèÿ ðàçäåëèòåëÿ â îêíå ", handle," ïî âðåìåíè ",TimeToStr(CurTime())); Print("Îøèáêà ¹",GetLastError(),", èìÿ ðàçäåëèòåëÿ ",delimeterDate); } else { ObjectSet(delimeterDate,OBJPROP_COLOR,DarkGreen); ObjectSet(delimeterDate,OBJPROP_STYLE,STYLE_DASHDOT); ObjectsRedraw(); } } //---- return(0); } //+------------------------------------------------------------------+ //| ñäâèíåì ìàññèâ | //+------------------------------------------------------------------+ void ShiftArray() { //---- int V_lines; string delimeterName; datetime firstTime; int BarFirstTime; if (tickCounter>2*MaxDrawTicks) { for (int i=tickCounter;i>=MaxDrawTicks;i--) ExtMapBuffer1[i]=0.0; tickCounter=MaxDrawTicks; } for(int cnt=tickCounter;cnt>0;cnt--) { ExtMapBuffer1[cnt]=ExtMapBuffer1[cnt-1]; } V_lines=ObjectsTotal(); for (int z=0;z<V_lines;z++) { delimeterName=ObjectName(z); if (ObjectFind(delimeterName)!=-1) { if (ObjectType(delimeterName)==OBJ_VLINE) { firstTime=ObjectGet(delimeterName,OBJPROP_TIME1); BarFirstTime=iBarShift(NULL,0,firstTime); if (BarFirstTime>MaxDrawTicks) ObjectDelete(delimeterName);// ðàçäåëèòåëü óøåë äàëüøå else // ÷åì MaxDrawTicks { // åñëè óäàëÿòü íå íóæíî - äâèãàåì firstTime=Time[BarFirstTime+1]; ObjectSet(delimeterName,OBJPROP_TIME1,firstTime); } } } } //---- return(0); } //+------------------------------------------------------------------+ //| ïðèçíàê íîâîãî áàðà | //+------------------------------------------------------------------+ bool isNewBar() { //---- bool res=false; if (myBars!=Bars) { res=true; myBars=Bars; } //---- return(res); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int counted_bars=IndicatorCounted(); //---- if (isNewBar()) { // óñòàíîâèòü ðàçäåëèòåëü tickCounter++; SetDelimeter(); ExtMapBuffer1[0]=Bid; } else { tickCounter++; ShiftArray(); ExtMapBuffer1[0]=Bid; int handleTicks=WindowFind("Ticks-2");// èùåì îêíî èíäèêàòîðà if (handleTicks!=-1) { if (ObjectFind("bidLINE")!=-1) // íàøëè ãîðèçîíòàëüíóþ ëèíèþ ñ èìåíåì bidLINE { if (ObjectType("bidLINE")==OBJ_HLINE) ObjectSet("bidLINE",OBJPROP_PRICE1,Bid); } else //íå íàøëè ãîðèçîíòàëüíóþ ëèíèþ ñ èìåíåì bidLINE , ñîçäàäèì e¸ { if(!ObjectCreate("bidLINE",OBJ_HLINE,handleTicks,0,Bid)) { Alert("Íåäà÷íàÿ ïîïûòêà ñîçäàíèÿ ëèíèè Bid â îêíå ", handleTicks," ïî öåíå ",Bid); Print("Îøèáêà ¹",GetLastError()); } else { ObjectSet("bidLINE",OBJPROP_COLOR,Gray); ObjectSet("bidLINE",OBJPROP_STYLE,STYLE_SOLID); ObjectsRedraw(); } } } } //---- 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_LINE
Indicators Used:
Custom Indicators Used:
Order Management characteristics:
Other Features:
It issuies visual alerts to the screen