Группа "Стол заказов MQL"

Рейтинг 2146



РЕКОМЕНДУЮ




Лучшее от divelse



индикатор aтp Комментариев 20
2018-04-29 17:47:09Рейтинг 0

Вопрос программисту Комментариев 1
2018-05-04 12:01:38Рейтинг 0

Доработка заказа Комментариев 4
2019-04-29 20:44:58Рейтинг 0

Индикатор из полос Комментариев 5
2022-08-26 10:48:35Рейтинг 0

Прошу создать помойника Комментариев 3
2022-10-24 18:23:43Рейтинг 0

Пример с таймером

Добрый день, прошу создать ИНДИКАТОР:
1) который выводит: 1 кнопку ( button ) и 1 прямоугольную ЗЕЛЕНУЮ метку ( OBJ_RECTANGLE_LABEL ).
2) По нажатию на кнопку ( button ) ценовая метка должна поменять цвет на КРАСНЫЙ.
3) По истечении 3 секунд, ценовая метка должна опять вернуть себе зеленый цвет
Иными словами, жмяк на кнопку --> зеленая метка должна стать красной. После 3 секунд она должна опять стать зеленой
Спасибо Андрей
  • 0
  • Просмотров: 1004
  • 23 июня 2022, 16:09
  • divelse
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
Помогите сделать советника по стрелочнику
Следующая запись в группе  
Доработка советника
20 июня 2022
10 июля 2022

Брокер для ваших роботов, 15 лет на рынке

Комментарии (8)

+
0
посмотрю сегодня
avatar

  35  AM2 Сообщений: 16266 - Андрей

  • 23 июня 2022, 17:23
+
0
Спасибо буду ждать)
avatar

  7  divelse Автор Сообщений: 152

  • 23 июня 2022, 18:21
+
0
готово:


//+------------------------------------------------------------------+
//|                                                         Tmer.mq4 |
//|                                              Copyright 2022, AM2 |
//|                                     https://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, AM2"
#property link      "https://www.forexsystems.biz"
#property version   "1.00"
#property strict
#property indicator_chart_window

int i=0;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   PutRectLabel();
   PutButton("b",111,33,"BATON");

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutRectLabel()
  {
   ObjectCreate(0,"R",OBJ_RECTANGLE_LABEL,0,0,0);
//--- установим координаты метки
   ObjectSetInteger(0,"R",OBJPROP_XDISTANCE,111);
   ObjectSetInteger(0,"R",OBJPROP_YDISTANCE,66);
//--- установим размеры метки
   ObjectSetInteger(0,"R",OBJPROP_XSIZE,80);
   ObjectSetInteger(0,"R",OBJPROP_YSIZE,30);
//--- установим цвет фона
   ObjectSetInteger(0,"R",OBJPROP_BGCOLOR,Lime);
//--- установим тип границы
   ObjectSetInteger(0,"R",OBJPROP_BORDER_TYPE,BORDER_RAISED);
//--- установим угол графика, относительно которого будут определяться координаты точки
   ObjectSetInteger(0,"R",OBJPROP_CORNER,3);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutButton(string name,int x,int y,string text)
  {
   ObjectCreate(0,name,OBJ_BUTTON,0,0,0);
//--- установим координаты кнопки
   ObjectSetInteger(0,name,OBJPROP_XDISTANCE,x);
   ObjectSetInteger(0,name,OBJPROP_YDISTANCE,y);
//--- установим размер кнопки
   ObjectSetInteger(0,name,OBJPROP_XSIZE,80);
   ObjectSetInteger(0,name,OBJPROP_YSIZE,30);
//--- установим угол графика, относительно которого будут определяться координаты точки
   ObjectSetInteger(0,name,OBJPROP_CORNER,3);
//--- установим текст
   ObjectSetString(0,name,OBJPROP_TEXT,text);
//--- установим шрифт текста
   ObjectSetString(0,name,OBJPROP_FONT,"Arial");
//--- установим размер шрифта
   ObjectSetInteger(0,name,OBJPROP_FONTSIZE,12);
//--- установим цвет текста
   ObjectSetInteger(0,name,OBJPROP_COLOR,Red);
//--- установим цвет фона
   ObjectSetInteger(0,name,OBJPROP_BGCOLOR,White);
//--- установим цвет границы
   ObjectSetInteger(0,name,OBJPROP_BORDER_COLOR,Blue);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
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[])
  {
//---

   if(ObjectGetInteger(0,"b",OBJPROP_STATE)==1)
     {
      ObjectSetInteger(0,"R",OBJPROP_BGCOLOR,Red);
      ObjectSetInteger(0,"b",OBJPROP_STATE,false);
      i=0;
     }

   i++;

   if(i>11)
      ObjectSetInteger(0,"R",OBJPROP_BGCOLOR,Lime);

//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+

avatar

  35  AM2 Сообщений: 16266 - Андрей

  • 23 июня 2022, 19:00
+
0
Спасибо, работает, понимаю что этого не было в ТЗ, но могли бы вы исправить, чтобы при смене ТФ так же работало а не сбрасывалось
avatar

  7  divelse Автор Сообщений: 152

  • 23 июня 2022, 19:47
+
0
Андрей поясните почему вы не сделали через таймер? и где в примере 3 секунды? как я могу изменить на 4 или 5 секунд?
Почему то при нажатии на кнопку цвет не сразу меняется, а по истечении какого то времени
avatar

  7  divelse Автор Сообщений: 152

  • 24 июня 2022, 08:41
+
0
Андрей поясните почему вы не сделали через таймер?


а вы просили?

сделал на тиках. таймер меняется здесь:


   if(i>11)
      ObjectSetInteger(0,"R",OBJPROP_BGCOLOR,Lime);
avatar

  35  AM2 Сообщений: 16266 - Андрей

  • 24 июня 2022, 18:24
+
0
смотрите:




//+------------------------------------------------------------------+
//|                                                        Timer.mq4 |
//|                                              Copyright 2022, AM2 |
//|                                     https://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, AM2"
#property link      "https://www.forexsystems.biz"
#property version   "1.00"
#property strict
#property indicator_chart_window

input int sec=11;

int i=0;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   EventSetTimer(1);
   PutRectLabel("r");
   PutButton("b",111,33,"BATON");
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   Comment("");
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutRectLabel(string name)
  {
   ObjectCreate(0,name,OBJ_RECTANGLE_LABEL,0,0,0);
//--- установим координаты метки
   ObjectSetInteger(0,name,OBJPROP_XDISTANCE,111);
   ObjectSetInteger(0,name,OBJPROP_YDISTANCE,66);
//--- установим размеры метки
   ObjectSetInteger(0,name,OBJPROP_XSIZE,80);
   ObjectSetInteger(0,name,OBJPROP_YSIZE,30);
//--- установим цвет фона
   ObjectSetInteger(0,name,OBJPROP_BGCOLOR,Lime);
//--- установим тип границы
   ObjectSetInteger(0,name,OBJPROP_BORDER_TYPE,BORDER_RAISED);
//--- установим угол графика, относительно которого будут определяться координаты точки
   ObjectSetInteger(0,name,OBJPROP_CORNER,3);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutButton(string name,int x,int y,string text)
  {
   ObjectCreate(0,name,OBJ_BUTTON,0,0,0);
//--- установим координаты кнопки
   ObjectSetInteger(0,name,OBJPROP_XDISTANCE,x);
   ObjectSetInteger(0,name,OBJPROP_YDISTANCE,y);
//--- установим размер кнопки
   ObjectSetInteger(0,name,OBJPROP_XSIZE,80);
   ObjectSetInteger(0,name,OBJPROP_YSIZE,30);
//--- установим угол графика, относительно которого будут определяться координаты точки
   ObjectSetInteger(0,name,OBJPROP_CORNER,3);
//--- установим текст
   ObjectSetString(0,name,OBJPROP_TEXT,text);
//--- установим шрифт текста
   ObjectSetString(0,name,OBJPROP_FONT,"Arial");
//--- установим размер шрифта
   ObjectSetInteger(0,name,OBJPROP_FONTSIZE,12);
//--- установим цвет текста
   ObjectSetInteger(0,name,OBJPROP_COLOR,Red);
//--- установим цвет фона
   ObjectSetInteger(0,name,OBJPROP_BGCOLOR,White);
//--- установим цвет границы
   ObjectSetInteger(0,name,OBJPROP_BORDER_COLOR,Blue);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
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[])
  {
//---

//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer()
  {
   if(ObjectGetInteger(0,"b",OBJPROP_STATE)==1)
     {
      ObjectSetInteger(0,"r",OBJPROP_BGCOLOR,Red);
      ObjectSetInteger(0,"b",OBJPROP_STATE,false);
      i=0;
     }

   i++;

   if(i>sec)
      ObjectSetInteger(0,"r",OBJPROP_BGCOLOR,Lime);
  }
//+------------------------------------------------------------------+

avatar

  35  AM2 Сообщений: 16266 - Андрей

  • 24 июня 2022, 19:11
+
0
Ох, Андрей спасибо еще раз))) уже думал ждать следующего месяца, ибо не хотел наглеть)
Спасибо!!!
avatar

  7  divelse Автор Сообщений: 152

  • 25 июня 2022, 18:42

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