Как сохранить #property в переменную

 

Доброго вечера.

Помогите, товарищи, пожалуйста.

Задача: в индикаторе

#property     indicator_color1       LimeGreen

extern int    varAsProperty        = true;
extern color  Mediana_future_color = Green;

нужно

if(varAsProperty)
{
     Mediana_future_color = indicator_color1;
}

// ну и дальше отрисовываем основной индюк с indicator_color1
// а второстепенный с Mediana_future_color, указав выше его цвет

Пытаюсь реализовать как показал в init(), не пашет. Подскажите.

 

Задайте не в #property indicator_color1 LimeGreen

а через глобальную переменную цвет LimeGreen

После параметров extern до блока init

например, _color="LimeGreen";

А потом

if(varAsProperty)
{
Mediana_future_color = _color;
}

Может получится.

Как-то делал и с проперти. Но сейчас не могу код найти.

 

так толку нет делать, если пользователь изменит #property indicator_color1, то это никак не заденет _color.

жаль.

 
vedroid >>:

так толку нет делать, если пользователь изменит #property indicator_color1, то это никак не заденет _color.

жаль.

void SetIndexStyle( int index, int type, int style=EMPTY, int width=EMPTY, color clr=CLR_NONE) 

Или так:

#define LINE1_COLOR LimeGreen

#property indicator_color LINE1_COLOR;

if(varAsProperty)
{
     Mediana_future_color = LINE1_COLOR;
}
 

Приношу извинения, и привожу пример реализации для поставленной задачи

(пытался пересоздать индикатор для примера)

Всем большое спасибо.

#property     indicator_chart_window
#property     indicator_buffers 1
#property     indicator_color1      LimeGreen

extern bool   varAsProperty         = true;
extern color  future_color          = Red;

double   MABuf[];
int      limit;
bool     firstTick = true;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
{
      SetIndexStyle (0, DRAW_LINE);
      SetIndexBuffer(0, MABuf);
      
      if(varAsProperty)
      {
           future_color = indicator_color1;
      }
      return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
{
      ObjectDelete("ema");
      return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
{
      int counted_bars   =  IndicatorCounted();

      if (counted_bars < 0) return(-1);
      limit = Bars - counted_bars;
      
      for(int i = 0; i < limit; i++)
      {
            MABuf[i] = iMA(NULL, 0, 55, 0, MODE_EMA, PRICE_CLOSE, i);      
      }
      if (firstTick)
      {
            ObjectCreate("ema", OBJ_TREND, 0, Time[0], MABuf[0], Time[0] + 10*60*Period(), MABuf[0]);
            Print("error = ", GetLastError());
            ObjectSet   ("ema", OBJPROP_COLOR, future_color);
            ObjectSet   ("ema", OBJPROP_STYLE, 0);
            ObjectSet   ("ema", OBJPROP_WIDTH, 2);
            firstTick = false;
      }
      return(0);
}
//+------------------------------------------------------------------+
Файлы:
 

Так вот подскажите, почему если при подключенном индикаторе вызывать его свойства и изменить свойство indicator_color1

цвет не линии ema не меняется.


Даже если блок

if(varAsProperty)
{
      future_color = indicator_color1;
}

встроить в функцию start(), оно подхватывает значение из исходника.

 
vedroid писал(а) >>

Так вот подскажите, почему если при подключенном индикаторе вызывать его свойства и изменить свойство indicator_color1

цвет не линии ema не меняется.

Свойство только для чтения.

 

to: Integer

Подскажите, более детально, пожалуйста.


 
vedroid писал(а) >>

to: Integer

Подскажите, более детально, пожалуйста.


Какие тут детали, как есть так и есть - когда в окне свойст меняем цвет это не влияет на значение свойства indicator_color.

Тоже пытался сделать такое - никак.

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