Группа "Стол заказов 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 изменением. В данном индикаторе при смене ТФ не сохраняется положение кнопок
Прошу вас посмотреть пример и написать с 0 такой индикатор. Спасибо
MENYU.rar (44 Kb)
  • 0
  • Просмотров: 1763
  • 15 января 2019, 17:13
  • divelse
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

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

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

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

+
0
хотел бы попросить выполнить заказ:
zakaz.opentraders.ru/49088.html
если не получится тогда я попросил бы выполнить мой заказ
но я не могу залить, отпишитесь
avatar

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

  • 16 января 2019, 19:01
+
0
я попросил поправить архив. ждемс.
avatar

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

  • 16 января 2019, 22:20
+
0
Готово
avatar

  45  Bishop Сообщений: 5802 - АЛЬФАХАМЕЦ-Машковод

  • 18 января 2019, 22:38
+
0
30-го буду смотреть
avatar

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

  • 18 января 2019, 22:44
+
0
avatar

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

  • 20 января 2019, 21:36
+
0
при инициализации сбрасываются параметры:


bool SwMenu1=false;//Состояние переключателя меню 1
bool SwMenu2=false;//Состояние переключателя меню 2
bool SwMenu3=false;//Состояние переключателя меню 3


здесь надо на форуме мкл поспрашивать
avatar

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

  • 20 января 2019, 22:25
+
0
в индикаторах не решен этот вопрос см. ветку: www.mql5.com/ru/forum/300554

если перенести код в советник, все нормально:


//+------------------------------------------------------------------+
//|                                                         Menu.mq4 |
//|                                              Copyright 2018, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property strict

extern long X=10; //Смещение меню по Х
extern long Y=10; //Смещение меню по Y
string Prefix="Example-359_";//Префикс для объектов на чарте
long X1,X2,Y1,Y2; //Координаты меню
bool ShowMenu=false;//Есть или нет меню на чарте
int Widht=80;//Ширина элемента меню
int Height=20;//Высота элемента меню
string FontName="Arial";//Имя шрифта для меню
int FontSize=10;//Размер шрифта
color clrMain=clrSteelBlue;//Основной цвет для меню
color clrFont=clrWhite;//Цвет шрифта
bool SwMenu1=false;//Состояние переключателя меню 1
bool SwMenu2=false;//Состояние переключателя меню 2
bool SwMenu3=false;//Состояние переключателя меню 3
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   ChartSetInteger(0,CHART_EVENT_MOUSE_MOVE,1);//Устанавливаем отслеживание координат мышки на чарте
                                               //Создадим панельку на которую будем реагировать разворачиванием меню
   EditCreate(0,Prefix+"MM",0,X,Y,Widht,Height,CORNER_LEFT_UPPER,"Main menu",FontName,FontSize,ALIGN_LEFT,true,clrFont,clrMain,clrMain,false,false);
//Пересчитаем координаты для реагирования
   X1=X; Y1=Y; X2=X+Widht; Y2=Y+Height;
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   DeleteMenu();
   ObjectDelete(0,Prefix+"MM");
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---

  }
//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
//Если мышка в границах реагирования то реагируем
   if(id==CHARTEVENT_MOUSE_MOVE && lparam>=X1 && lparam<=X2 && dparam>=Y1 && dparam<=Y2)
     {
      if(!ShowMenu){CreateMenu();}//Если меню нет на чарте то создаём его
     }
//Если мышка вне границ реагирования то проверяем
   if(id==CHARTEVENT_MOUSE_MOVE && (lparam<X1 || lparam>X2 || dparam<Y1 || dparam>Y2))
     {
      if(ShowMenu){DeleteMenu();}//Если меню есть на чарте то удаляем
     }
//Реагируем на нажатие на объекты     
   if(id==CHARTEVENT_OBJECT_CLICK && sparam==Prefix+"M1")
     {
      ChangeMenu(sparam);
     }
   if(id==CHARTEVENT_OBJECT_CLICK && sparam==Prefix+"M2")
     {
      ChangeMenu(sparam);
     }
   if(id==CHARTEVENT_OBJECT_CLICK && sparam==Prefix+"M3")
     {
      ChangeMenu(sparam);
     }
  }
//+------------------------------------------------------------------+
//| Function create object text                                      |
//+------------------------------------------------------------------+
bool EditCreate(const long             chart_ID=0,
                const string           name="Edit",
                const int              sub_window=0,
                const long             x=0,
                const long             y=0,
                const int              width=50,
                const int              height=18,
                const ENUM_BASE_CORNER corner=CORNER_LEFT_UPPER,
                const string           text="Text",
                const string           font="Arial",
                const int              font_size=10,
                const ENUM_ALIGN_MODE  align=ALIGN_CENTER,
                const bool             read_only=false,
                const color            clr=clrWhite,
                const color            back_clr=clrWhite,
                const color            border_clr=clrSteelBlue,
                const bool             back=false,
                const bool             selection=false,
                const bool             hidden=true,
                const long             z_order=0)
  {

   ResetLastError();

   if(!ObjectCreate(chart_ID,name,OBJ_EDIT,sub_window,0,0))
     {
      Print(__FUNCTION__,
            "Code ERROR: ",GetLastError());
      return(false);
     }

   ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x);
   ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y);
   ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width);
   ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height);
   ObjectSetString(chart_ID,name,OBJPROP_TEXT,text);
   ObjectSetString(chart_ID,name,OBJPROP_FONT,font);
   ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,font_size);
   ObjectSetInteger(chart_ID,name,OBJPROP_ALIGN,align);
   ObjectSetInteger(chart_ID,name,OBJPROP_READONLY,read_only);
   ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner);
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
   ObjectSetInteger(chart_ID,name,OBJPROP_BGCOLOR,back_clr);
   ObjectSetInteger(chart_ID,name,OBJPROP_BORDER_COLOR,border_clr);
   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
   return(true);
  }
//+------------------------------------------------------------------+
//|Function create menu                                              |
//+------------------------------------------------------------------+
void DeleteMenu()
  {
   ObjectDelete(0,Prefix+"M1");
   ObjectDelete(0,Prefix+"M2");
   ObjectDelete(0,Prefix+"M3");
//Пересчитаем координаты реагирования
   Y2=Y+Height;
   ShowMenu=false;
  }
//+------------------------------------------------------------------+
//|Function delete menu                                              |
//+------------------------------------------------------------------+
void CreateMenu()
  {
   string tmpStr="";
   if(SwMenu1){tmpStr="ON 1";}else{tmpStr="OFF 1";}//Выставляем состояние переключателя 1
   EditCreate(0,Prefix+"M1",0,X,Y+21,Widht,Height,CORNER_LEFT_UPPER,tmpStr,FontName,FontSize,ALIGN_LEFT,true,clrFont,clrMain,clrMain,false,false);
   if(SwMenu2){tmpStr="ON 1";}else{tmpStr="OFF 1";}//Выставляем состояние переключателя 2
   EditCreate(0,Prefix+"M2",0,X,Y+42,Widht,Height,CORNER_LEFT_UPPER,tmpStr,FontName,FontSize,ALIGN_LEFT,true,clrFont,clrMain,clrMain,false,false);
   if(SwMenu3){tmpStr="ON 1";}else{tmpStr="OFF 1";}//Выставляем состояние переключателя 3
   EditCreate(0,Prefix+"M3",0,X,Y+63,Widht,Height,CORNER_LEFT_UPPER,tmpStr,FontName,FontSize,ALIGN_LEFT,true,clrFont,clrMain,clrMain,false,false);
//Пересчитаем координаты реагирования
   Y2=Y+63+Height;
   ShowMenu=true;
  }
//+------------------------------------------------------------------+
//|Change menu                                                       |
//+------------------------------------------------------------------+
void ChangeMenu(string PMenu)
  {
   if(PMenu==Prefix+"M1")
     {
      if(SwMenu1)
        {
         ObjectSetString(0,PMenu,OBJPROP_TEXT,"OFF 1");
         SwMenu1=false;
        }
      else
        {
         ObjectSetString(0,PMenu,OBJPROP_TEXT,"ON 1");
         SwMenu1=true;
        }
     }
   if(PMenu==Prefix+"M2")
     {
      if(SwMenu2)
        {
         ObjectSetString(0,PMenu,OBJPROP_TEXT,"OFF 1");
         SwMenu2=false;
        }
      else
        {
         ObjectSetString(0,PMenu,OBJPROP_TEXT,"ON 1");
         SwMenu2=true;
        }
     }
   if(PMenu==Prefix+"M3")
     {
      if(SwMenu3)
        {
         ObjectSetString(0,PMenu,OBJPROP_TEXT,"OFF 1");
         SwMenu3=false;
        }
      else
        {
         ObjectSetString(0,PMenu,OBJPROP_TEXT,"ON 1");
         SwMenu3=true;
        }
     }
  }
//+------------------------------------------------------------------+

avatar

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

  • 22 января 2019, 16:59
+
0
Спасибо что попытались решить проблему, но мне нужен индикатор, именно индикатор, на форуме написали что можно:
использовать глобальные терминала.

Могли бы вы попытаться еще раз что то сделать но в индикаторе
avatar

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

  • 26 января 2019, 16:43

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