Author: (c) 2009, Vladimir Gomonov
Price Data Components
Series array that contains open time of each bar
0 Views
0 Downloads
0 Favorites
fineclock
//+------------------------------------------------------------------+
//|                                                    FineClock.mq5 |
//|                                 Copyright 2009, Vladimir Gomonov |
//|                                            MetaDriver@rambler.ru |
//+------------------------------------------------------------------+
#property copyright "(c) 2009, Vladimir Gomonov;   MetaDriver@rambler.ru"
#property link      "MetaDriver@rambler.ru"
#property version   "1.00"
#property description "Ñèìïàòè÷íûå ÷àñèêè"
#property description "-----------------------------------------------"
#property description "Îòîáðàæàþòñÿ ñðàçó íà âñåõ ãðàôèêàõ"
#property description "Ìîæíî âðó÷íóþ ïåðåìåùàòü, ìåíÿòü øðèôò è ðàçìåð"
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
enum eClockFormats
  {
   Seconds=0,       //  ÷÷:ìì:ññ
   Minutes=1        //  ÷÷:ìì 
  };
// Óãëû ïåðåïèñàë äëÿ ðóñèôèêàöèè 
enum åMyCorners
  {
   CLU = CORNER_LEFT_UPPER,   // Ëåâûé âåðõíèé
   CLL = CORNER_LEFT_LOWER,   // Ëåâûé íèæíèé
   CRU = CORNER_RIGHT_UPPER,  // Ïðàâûé âåðõíèé
   CRL = CORNER_RIGHT_LOWER,  // Ïðàâûé íèæíèé
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
enum eTimeType
  {
   TLocal,  // Ìåñòíîå âðåìÿ
   TServer, // Âðåìÿ òîðãîâîãî ñåðâåðà
   TGMT,    // Âðåìÿ ïî Ãðèíâè÷ó
  };
#include <\Enums\eIntNumbers.mqh>
#include <\Enums\eFloatNumbers.mqh>
//--- input parameters
input eTimeType     TimeType=TLocal;            // ×àñîâîé ïîÿñ
input eClockFormats Fmt=Seconds;                // Ôîðìàò îòîáðàæåíèÿ 
input åMyCorners    Corner=CRL;                 // Óãîë ïðèâÿçêè
input ePInt         X= 170;                     // Ñìåùåíèå ïî ãîðèçîíòàëè
input ePInt         Y = 38;                     // Ñìåùåíèå ïî âåðòèêàëè
input string        FontName="Magneto";         // Øðèôò
input ePInt         FontSize=16;                // Ðàçìåð øðèôòà
input color         FontColor=clrDarkSlateGray; // Öâåò øðèôòà
input color         ShadowColor=clrDarkSeaGreen;// Öâåò òåíè
input ePInt         SS=1;                       // Ñìåùåíèå òåíè
input eFloat01      eSA=-12;                    // Ïîâîðîò òåíè
//--- vars
string Clock="Clock";
double SA;
bool First=true;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   SA=eFloatToDouble(eSA);
//---
   for(long i=ChartNext(0);i>0;i=ChartNext(i))
     {
      for(int j=0;j<2;j++)
        {
         if(bool(ObjectFind(i,Clock+(string)j)+1)) // ;-)
            ObjectDelete(i,Clock+(string)j);
         ObjectCreate(i,Clock+(string)j,OBJ_LABEL,0,0,0);
         ObjectSetInteger(i,Clock+(string)j,OBJPROP_CORNER,Corner);
         ObjectSetInteger(i,Clock+(string)j,OBJPROP_XDISTANCE,X-Fmt*X/3+j*SS);
         ObjectSetInteger(i,Clock+(string)j,OBJPROP_YDISTANCE,Y+j*SS);
         ObjectSetInteger(i,Clock+(string)j,OBJPROP_COLOR,FontColor);
         ObjectSetInteger(i,Clock+(string)j,OBJPROP_FONTSIZE,FontSize);
         ObjectSetInteger(i,Clock+(string)j,OBJPROP_SELECTABLE,j);
         ObjectSetInteger(i,Clock+(string)j,OBJPROP_ANCHOR,ANCHOR_LEFT);
         ObjectSetInteger(i,Clock+(string)j,OBJPROP_BACK,true);
         ObjectSetString(i,Clock+(string)j,OBJPROP_FONT,FontName);
         ObjectSetString(i,Clock+(string)j,OBJPROP_TEXT,
                         " "+TimeToString(Time(),Fmt ? TIME_MINUTES : TIME_SECONDS)+" ");
         //ObjectSetInteger(i, Clock+j, OBJPROP_SELECTED, j); // ìîæíî äîáàâèòü - ïî âêóñó
        }
      ObjectSetInteger(i,Clock+"0",OBJPROP_COLOR,ShadowColor);
      ObjectSetDouble(i,Clock+"0",OBJPROP_ANGLE,SA);
      ChartRedraw(i);
     }
   if(Fmt==Seconds) { EventSetTimer(1); First=false; }
   else EventSetTimer((int)60-int(TimeLocal()%60));
//---
   return(0);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   EventKillTimer();
   for(long i=ChartNext(0);i>0;i=ChartNext(i))
      for(int j=0;j<2;j++)
         ObjectDelete(i,Clock+(string)j);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTimer()
  {
   if(First) { EventSetTimer(60); First=false; }
   string T=" "+TimeToString(Time(),Fmt ? TIME_MINUTES : TIME_SECONDS)+" ";
   for(long i=ChartNext(0);i>0;i=ChartNext(i))
      //   Ïåðåðèñîâûâàåì òîëüêî åñëè âèäèìî. Ýêîíîìèÿ, ìäà.
      if(ChartGetInteger(i,CHART_WINDOW_IS_VISIBLE))
        {
         for(int j=1;j>=0;j--)
           {
            ObjectSetString(i,Clock+(string)j,OBJPROP_TEXT,T);
           }
         // Ïðèâîäèì òåíü â ñîîòâåòñòâèå... Íà ñëó÷àé ðó÷íîãî èçìåíåíèÿ àòðèáóòîâ.
         ObjectSetInteger(i,Clock+"0",OBJPROP_XDISTANCE,
                          ObjectGetInteger(i,Clock+"1",OBJPROP_XDISTANCE)-SS);
         ObjectSetInteger(i,Clock+"0",OBJPROP_YDISTANCE,
                          ObjectGetInteger(i,Clock+"1",OBJPROP_YDISTANCE)-SS);
         ObjectSetString(i,Clock+"0",OBJPROP_FONT,
                         ObjectGetString(i,Clock+"1",OBJPROP_FONT));
         ObjectSetInteger(i,Clock+"0",OBJPROP_FONTSIZE,
                          ObjectGetInteger(i,Clock+"1",OBJPROP_FONTSIZE));

         ChartRedraw(i);
        }
  }
//+------------------------------------------------------------------+

datetime Time()
  {
   switch(TimeType)
     {
      case TLocal:  return TimeLocal();
      case TServer: return TimeTradeServer();
      case TGMT:    return TimeGMT();
      default:  return TimeLocal();
     }
  }
//+------------------------------------------------------------------+

Comments