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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Vladimir Pastushak
90679
Vladimir Pastushak  

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

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

#property indicator_color1  clrBlue, clrRed

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

Alexey Viktorov
25867
Alexey Viktorov  
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
16755
fxsaber  

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

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

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()
{
}
Vladimir Pastushak
90679
Vladimir Pastushak  
Alexey Viktorov:

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

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

Vladimir Pastushak
90679
Vladimir Pastushak  
Alexey Viktorov:

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

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

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

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

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

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

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

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

Vladimir Pastushak
90679
Vladimir Pastushak  
Alexey Viktorov:

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

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

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

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

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

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

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