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); } //+------------------------------------------------------------------+
Файлы:
forexample.mq4
2 kb
Так вот подскажите, почему если при подключенном индикаторе вызывать его свойства и изменить свойство indicator_color1
цвет не линии ema не меняется.
Даже если блок
if(varAsProperty) { future_color = indicator_color1; }
встроить в функцию start(), оно подхватывает значение из исходника.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Доброго вечера.
Помогите, товарищи, пожалуйста.
Задача: в индикаторе
нужно
Пытаюсь реализовать как показал в init(), не пашет. Подскажите.