Описательные свойства графика

Функции ChartSetString/ChartGetString позволяют читать и устанавливать следующие строковые свойства графиков.

Идентификатор

Описание

CHART_COMMENT

Текст комментария на графике

CHART_EXPERT_NAME

Имя эксперта, запущенного на графике (r/o)

CHART_SCRIPT_NAME

Имя скрипта, запущенного на графике (r/o)

В разделе Вывод сообщений в окно графика мы познакомились с функцией Comment для вывода текстового сообщения в верхний левый угол графика. Свойство CHART_COMMENT позволяет прочитать текущий комментарий графика: ChartGetString(0, CHART_COMMENT). Более того, мы можем узнать комментарий на других графиках, передав в функцию их идентификаторы. А с помощью ChartSetString можно менять комментарии на текущем и других графиках, зная их ID: ChartSetString(ID, CHART_COMMENT, "text").

Если на каком-либо графике запущен эксперт или/и скрипт, мы можем узнать их названия с помощью вызовов ChartGetString(ID, CHART_EXPERT_NAME) и ChartGetString(ID, CHART_SCRIPT_NAME).

Скрипт ChartList3.mq5, аналогичный ChartList2.mq5, дополняет список графиков информацией об экспертах и скриптах. Позднее мы добавим в него и информацию об индикаторах.

void ChartList()
{
   const long me = ChartID();
   long id = ChartFirst();
   int count = 0used = 0tempexperts = 0scripts = 0;
 
   Print("Chart List\nN, ID, Symbol, TF, *active");
   // продолжаем перебирать графики, пока их не останется
   while(id != -1)
   {
      temp = 0// признак MQL-программ на данном графике
      const string header = StringFormat("%d %lld %s %s %s",
         countidChartSymbol(id), PeriodToString(ChartPeriod(id)),
         (id == me ? " *" : ""));
      // поля: N, id, символ, таймфрейм, метка текущего графика
      Print(header);
      string expert = ChartGetString(idCHART_EXPERT_NAME);
      string script = ChartGetString(idCHART_SCRIPT_NAME);
      if(StringLen(expert) > 0expert = "[E] " + expert;
      if(StringLen(script) > 0script = "[S] " + script;
      if(expert != NULL || script != NULL)
      {
         Print(expert" "script);
         if(expert != NULLexperts++;
         if(script != NULLscripts++;
         temp++;
      }
      count++;
      if(temp > 0)
      {
         used++;
      }
      id = ChartNext(id);
   }
   Print("Total chart number: "count", with MQL-programs: "used);
   Print("Experts: "experts", Scripts: "scripts);
}

Вот пример вывода этого скрипта.

Chart List
N, ID, Symbol, TF, *active
0 132358585987782873 EURUSD M15 
1 132360375330772909 EURUSD H1  *
 [S] ChartList3
2 132544239145024745 XAUUSD H1 
3 132544239145024732 USDRUB D1 
4 132544239145024744 EURUSD H1 
Total chart number: 5, with MQL-programs: 1
Experts: 0, Scripts: 1

Здесь видно, что выполняется только один наш скрипт.