- После переустановки винды не могу активировать продукт
- Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
- Передача значения переменной из одного терминала в другой.
Нужно отслеживать изменения свойств графика в OnChartEvent():
color g_clrOldColor; int OnInit() { g_clrOldColor = color(ChartGetInteger(0, CHART_COLOR_BACKGROUND)); return(INIT_SUCCEEDED); } void OnChartEvent(const int id, const long& lparam, const double& dparam, const string& sparam) { if (id == CHARTEVENT_CHART_CHANGE) { color clrNewColor = color(ChartGetInteger(0, CHART_COLOR_BACKGROUND)); if (clrNewColor != g_clrOldColor) { Print("Цвет фона изменился на ", ColorToString(clrNewColor)); g_clrOldColor = clrNewColor; } } }
Спасибо большое за ответ!!! Вы единственный кто чем то помог, но я может ли быть ошибка тут? я поставил ваш код ошибок нету, но ... даже принт не выводится когда я меняю цвет фона графика
и ответьте пожалуйста если у меня OBJ_BITMAP_LABEL создаётся в calculator таким образом:
if(ObjectFind(Chart_ID,"Menu")!=0) ButtonPicture(Chart_ID,"Menu",0,253 + X,8,"::kartinka1.bmp","::kartinka1.bmp",77,16,0,0,false,CORNER_LEFT_UPPER,ANCHOR_CENTER,clrBlack,STYLE_SOLID,1,false,false,true,1);
Как заставить чтобы в коде который сверху поменялась картинка на kartinka2
Простите
если я немного глупо объясняю, как правильно применить ваш код?
Спасибо
Спасибо большое за ответ!!! Вы единственный кто чем то помог, но я может ли быть ошибка тут? я поставил ваш код ошибок нету, но ... даже принт не выводится когда я меняю цвет фона графика
Нужно смотреть, как применяли. Может Вы этот код в скрипт поставили? Тогда точно работать не будет.
и ответьте пожалуйста если у меня OBJ_BITMAP_LABEL создаётся в calculator таким образом:
Что такое calculator?
Что такое calculator?
int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { ..... тут у меня создание кнопки } А дальше управление в OnChartEvent
Если я правильно понял задачу (рисунок на кнопке должен зависеть только от цвета фона), то в OnCalculate() не нужно отображать объект. Создаете его в OnInit(), а потом обновляете в OnChartEvent().
Если я правильно понял задачу (рисунок на кнопке должен зависеть только от цвета фона), то в OnCalculate() не нужно отображать объект. Создаете его в OnInit(), а потом обновляете в OnChartEvent().
Спасибо вам большое что отвечаете, пишите... Спасибо) больше не кто в подобных постах не отвечал
Подскажите пожалуйста
как обновлять в OnChartEvent(). ???
Сделал как вы "сказали" создание кнопки в OnInit() таким образом:
if(ObjectFind(Chart_ID,"Menu")!=0) ButtonPicture(Chart_ID,"Menu",0,253 + X,8,"::kartinka1.bmp","::kartinka1.bmp",77,16,0,0,false,CORNER_LEFT_UPPER,ANCHOR_CENTER,clrBlack,STYLE_SOLID,1,false,false,true,1);
Теперь как её обновить ??? пожалуйста ответьте
Пытаюсь так сделать:
if (id == CHARTEVENT_CHART_CHANGE) { color clrNewColor = color(ChartGetInteger(0, CHART_COLOR_BACKGROUND)); if (clrNewColor != g_clrOldColor) { ObjectSetString(ChartID(),"Menu",OBJPROP_BMPFILE,0,"::kartinka2.bmp"); ObjectSetString(ChartID(),"Menu",OBJPROP_BMPFILE,1,"::kartinka2.bmp"); Print("Цвет фона изменился на ", ColorToString(clrNewColor)); g_clrOldColor = clrNewColor; } }
но меняю фон и ничего не происходит, пожалуйста помогите
P.S иии как я понял ваш код работает так:Меняем фон графика и меняется картинка, но могли бы вы его чутка подправить и сделать так, что если поменяли фон на черный тогда kartinka1 , в остальных во всех случаях kartinka2
Вот чего я смог добиться(с помощью вашей помощи разумеется, спасибо вам большое)
Меняется при смене фона, но 1 нажатие левой
кнопкой мыши на экран и тут же возвращается первая картинка иже только меняю фон и картинка сменится и обратно тут же
или же если просто меняю ТФ
2) пожалуйста измените чутка код и сделайте чтобы была возможность смены картинки только в 2-х
случаях
2.1) Любой цвет
фона кроме черного - Картинка 1
2.2) Только черный - Картинка 2
if (id == CHARTEVENT_CHART_CHANGE) { color clrNewColor = color(ChartGetInteger(0, CHART_COLOR_BACKGROUND)); if (clrNewColor != g_clrOldColor) { ObjectSetString(ChartID(),"Menu",OBJPROP_BMPFILE,0,"::kartinka2.bmp"); ObjectSetString(ChartID(),"Menu",OBJPROP_BMPFILE,1,"::kartinka2.bmp"); Print("Цвет фона изменился на ", ColorToString(clrNewColor)); g_clrOldColor = clrNewColor; } else { ObjectSetString(ChartID(),"Menu",OBJPROP_BMPFILE,0,"::kartinka1.bmp"); ObjectSetString(ChartID(),"Menu",OBJPROP_BMPFILE,1,"::kartinka1.bmp"); g_clrOldColor = clrNewColor; } }
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования