Скачать MetaTrader 5

функция "Бегущая строка"

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Sergey Guliaev
2301
Sergey Guliaev  

Утилитка по выводу строк.

Строки перемещаются снизу вверх, удобно использовать при отладке. Скорость перемещения задаётся переменной TimeShowInfo;


//+-------
//+------------------------------------------------------------------+
//| вывод строки информации 
//+------------------------------------------------------------------+
#define AUTOR "valenok2003"
int CntStr = 0;
string TxtStr[100] = {"",,""};

void output_string_info(string _Txt, color _Color_Txt)
{  string _Name;
   int _TimeShowInfo = 2,
       _Dist = 15,
       ShiftPoz = 15;
   
//-------------
   if(!REPORT)return;
   if(_Txt != "NULL")
   {  TxtStr[CntStr] = _Txt;
      string _Name_Obj = NAME_EXPERT + "_" + CntStr;
      int PozStr = _Dist*CntStr;
      ObjectCreate (_Name_Obj, OBJ_LABEL, 0, 0, 0);
      ObjectSet    (_Name_Obj, OBJPROP_CORNER, 0);
      ObjectSet    (_Name_Obj, OBJPROP_XDISTANCE, 5);
      ObjectSet    (_Name_Obj, OBJPROP_YDISTANCE, PozStr+ShiftPoz);
      ObjectSetText(_Name_Obj, _Txt, 10, "Arial", _Color_Txt);
      CntStr++;
   }
   if(TimeCurrent() >  StartTimerInf + _TimeShowInfo)
   {  StartTimerInf = TimeCurrent();
      if(CntStr > 0)
      {  for(i = 0; i <= CntStr; i++) 
         {  int _n = i+1;
            _Color_Txt = ObjectGet(NAME_EXPERT + "_" + _n, OBJPROP_COLOR);
            if(i == CntStr-1)
               TxtStr[i] = "";
            else  
               TxtStr[i] = TxtStr[_n];
            PozStr = _Dist*i;
            _Name_Obj = NAME_EXPERT + "_" + i;
            ObjectCreate (_Name_Obj, OBJ_LABEL, 0, 0, 0);
            ObjectSet    (_Name_Obj, OBJPROP_CORNER, 0);
            ObjectSet    (_Name_Obj, OBJPROP_XDISTANCE, 5);
            ObjectSet    (_Name_Obj, OBJPROP_YDISTANCE, PozStr+ShiftPoz);
            ObjectSetText(_Name_Obj, TxtStr[i], 10, "Arial", _Color_Txt);
         }
         CntStr--;
      }
   }
   return;
}
//+-------------------------------------------------------------------
//+-------
Кстати, продолжение развития моего конструктора BlueDream здесь, да простят меня модераторы. Все коды открытые.
Sergey Guliaev
2301
Sergey Guliaev  

Да, чуть не забыл, чтобы строки двигались, в функцию start() необходимо вставить код, который должен выполняться на каждом тике.

output_string_info("NULL", Black);
Sergey Guliaev
2301
Sergey Guliaev  

Малость доработал, теперь если строка точно такая же (повторяется) - новая строка не создаётся.

//+-------
//+------------------------------------------------------------------+
//| вывод строки информации
//+------------------------------------------------------------------+
int CntStr = 0;
string TxtStr[100] = {"",,""};

void output_string_info(string _Txt, color _Color_Txt)
{  string _Name;
   int _TimeShowInfo = 2,
       _Dist = 15,
       ShiftPoz = 15;
   
//-------------
   if(!REPORT)return;
   if(_Txt != "NULL")
   {  if(TxtStr[CntStr-1] == _Txt) CntStr--;
      TxtStr[CntStr] = _Txt;
      string _Name_Obj = NAME_EXPERT + "_" + CntStr;
      int PozStr = _Dist*CntStr;
      ObjectCreate (_Name_Obj, OBJ_LABEL, 0, 0, 0);
      ObjectSet    (_Name_Obj, OBJPROP_CORNER, 0);
      ObjectSet    (_Name_Obj, OBJPROP_XDISTANCE, 5);
      ObjectSet    (_Name_Obj, OBJPROP_YDISTANCE, PozStr+ShiftPoz);
      ObjectSetText(_Name_Obj, _Txt, 10, "Arial", _Color_Txt);
      CntStr++;
   }
   if(TimeCurrent() >  StartTimerInf + _TimeShowInfo)
   {  StartTimerInf = TimeCurrent();
      if(CntStr > 0)
      {  for(i = 0; i <= CntStr; i++) 
         {  int _n = i+1;
            _Color_Txt = ObjectGet(NAME_EXPERT + "_" + _n, OBJPROP_COLOR);
            if(i == CntStr-1)
               TxtStr[i] = "";
            else
               ObjectDelete(NAME_EXPERT + "_" + i);
               TxtStr[i] = TxtStr[_n];
            PozStr = _Dist*i;
            _Name_Obj = NAME_EXPERT + "_" + i;
            ObjectCreate (_Name_Obj, OBJ_LABEL, 0, 0, 0);
            ObjectSet    (_Name_Obj, OBJPROP_CORNER, 0);
            ObjectSet    (_Name_Obj, OBJPROP_XDISTANCE, 5);
            ObjectSet    (_Name_Obj, OBJPROP_YDISTANCE, PozStr+ShiftPoz);
            ObjectSetText(_Name_Obj, TxtStr[i], 10, "Arial", _Color_Txt);
         }
         CntStr--;
      }
   }
   return;
}
//+-------------------------------------------------------------------
//+-------
Виктор
Модератор
6559
Виктор  
valenok2003:
Кстати, продолжение развития моего конструктора BlueDream здесь, да простят меня модераторы. Все коды открытые.
Не простят. Уберите ссылку на сайт и дайте ссылку на профиль, как положено.
Vladimir Gomonov
8305
Vladimir Gomonov  
granit77:
Не простят. Уберите ссылку на сайт и дайте ссылку на профиль, как положено.

:)

А в профиль положите ссылку на сайт. А то теперь ни здесь ни там нету ссыли.

Ну интересно же. Я вапче конструкторы лублу.

Sergey Guliaev
2301
Sergey Guliaev  
MetaDriver:

:)

А в профиль положите ссылку на сайт. А то теперь ни здесь ни там нету ссыли.

Ну интересно же. Я вапче конструкторы лублу.


Положил :-)))
Sergey Guliaev
2301
Sergey Guliaev  

Пример работы бегущей строки и её улучшенный код можно посмотреть в этом советнике.

Victor Nikolaev
Модератор
15104
Victor Nikolaev  
valenok2003:

Пример работы бегущей строки и её улучшенный код можно посмотреть в этом советнике.


Ссылку поправил, _my надо убирать
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий