Как получить цвет из массива ? INDICATOR_COLOR_INDEX

 

Как получить цвет из массива  ? INDICATOR_COLOR_INDEX

Собственно вопрос как получить эти цвета 

#property indicator_color1  clrBlue, clrRed

Не индексы а именно цвета, что бы использовать в графических обьектах ?

 
Vladimir Pastushak:

Как получить цвет из массива  ? INDICATOR_COLOR_INDEX

Собственно вопрос как получить эти цвета 

#property indicator_color1  clrBlue, clrRed

Не индексы а именно цвета, что бы использовать в графических обьектах ?

Если это в одном индикаторе, то это не составляет никакого труда. В документации есть пример иного задания цвета. С созданием своего массива цветов.

Документация по MQL5: Пользовательские индикаторы / PlotIndexGetInteger
Документация по MQL5: Пользовательские индикаторы / PlotIndexGetInteger
  • www.mql5.com
//| Custom indicator initialization function                         | //| Custom indicator iteration function                              |
 

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Как в индикаторе узнать текущий цвет индикаторной линии?

fxsaber, 2016.08.31 23:35

#property strict

#property indicator_chart_window
#property indicator_buffers 2

#define PATH "MQL4\\indicators\\"

string GetIndicatorName( void )
{
  const string StrName = ::MQLInfoString(MQL_PROGRAM_PATH);
  const int Pos = ::StringFind(StrName, PATH) + ::StringLen(PATH);
  
  return(::StringSubstr(StrName, Pos, ::StringLen(StrName) - Pos - 4));
}

void SeekToString( const int handle, const string Str )
{
  while (!::FileIsEnding(handle))
    if (::FileReadString(handle) == Str)
      break;
  
  return;
}  

struct BUFFER_STRUCT
{
  int Shift;
  int Type;
  color Color;
  ENUM_LINE_STYLE Style;
  int Width;
};

#define STRUCT_DEFINE(A,B)  struct A##2 { B Data[sizeof(A) / sizeof(B)]; }

const BUFFER_STRUCT GetBufferProperties( const uint Num = 0, const bool FlagSave = true )
{
  STRUCT_DEFINE(BUFFER_STRUCT, int) Res = {0};
  
  const string FileName = ::WindowExpertName() + ".tpl";

  if (FlagSave ? ::ChartSaveTemplate(0, "..\\MQL4\\Files\\" + FileName) : true)
  {
    const int handle = ::FileOpen(FileName, ::FILE_READ|::FILE_CSV);

    if (handle > 0)
    {
      ::SeekToString(handle, "name=" + ::GetIndicatorName());
      
      if (Num == 0)
        ::SeekToString(handle, "</expert>");
      else
      {
        const string TmpStr = "weight_" + (string)(Num - 1);
        
        while (!::FileIsEnding(handle))
          if (::StringFind(::FileReadString(handle), TmpStr) == 0)
            break;
      }
            
      if (!::FileIsEnding(handle))
      {
        static const string Property[] = {"shift", "draw", "color", "style", "weight"};
        const string StrNum = "_" + (string)Num + "=";
              
        for (int i = 0; i < ::ArraySize(Property); i++)
          Res.Data[i] = (int)::StringToInteger(::StringSubstr(::FileReadString(handle), ::StringLen(Property[i] + StrNum)));
      }
      
      ::FileClose(handle);
    }
  }
  
  return((BUFFER_STRUCT)Res);
}  

void OnInit()
{  
  string Str = "Colors:";
  
  for (int i = 0; i < indicator_buffers; i++)
    Str += " " + (string)i + "-" + (string)::GetBufferProperties(i).Color;
    
  Alert(Str);
}

void start()
{
}
 
Alexey Viktorov:

Если это в одном индикаторе, то это не составляет никакого труда. В документации есть пример иного задания цвета. С созданием своего массива цветов.

Благодарю, получилось ... 

 
Alexey Viktorov:

Если это в одном индикаторе, то это не составляет никакого труда. В документации есть пример иного задания цвета. С созданием своего массива цветов.

Есть новая проблема, при смене таймфрейма цвета индикатора устанавливаются из настроек....

То есть по умолчанию стоят Крассный и Синий меняем на любые другие цвета применяем все отлично, но как только меняем период графика цвета слетают на те что по умолчанию...

Скорее всего это баг...
 
Vladimir Pastushak:

Есть новая проблема, при смене таймфрейма цвета индикатора устанавливаются из настроек....

То есть по умолчанию стоят Крассный и Синий меняем на любые другие цвета применяем все отлично, но как только меняем период графика цвета слетают на те что по умолчанию...

Скорее всего это баг...

Откуда эти красный синий? Давайте полный код для понимания.

 
Alexey Viktorov:

Откуда эти красный синий? Давайте полный код для понимания.

Вот тема с описание бага и с кодом из справки https://www.mql5.com/ru/forum/278253

Для СервисДеска Баг с цветовой настройкой в индикаторах
Для СервисДеска Баг с цветовой настройкой в индикаторах
  • 2018.09.09
  • www.mql5.com
Код из справки, какой бы мы цвет не установили при запуске индикатора при смене периода графика цвет индикатора слетает на по умолчанию...
 
Vladimir Pastushak:

Вот тема с описание бага и с кодом из справки https://www.mql5.com/ru/forum/278253

У меня почему-то нет желания, да и возможности сейчас скомпилировать указанный код и экспериментировать.

Давайте на словах с картинками...

Причина обращения: