0
я узнавал на форуме, нет такой возможности: www.mql5.com/ru/forum/300554
avatar

AM2

  • 22 января 2019, 20:04
0
если переделаю в советник устроит?
avatar

AM2

  • 22 января 2019, 17:05
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

AM2

  • 22 января 2019, 16:59
0
стопы есть
avatar

AM2

  • 22 января 2019, 16:46
0
пока напрашивается один вариант делать в виде советника или скрипта
avatar

AM2

  • 22 января 2019, 16:44
0
вот моя ветка: www.mql5.com/ru/forum/300554

скиньте ссылку на вашу?
avatar

AM2

  • 22 января 2019, 16:42
0
надо на мкл узнавать. уже 2 заказа подобных. сейчас задам вопрос
avatar

AM2

  • 22 января 2019, 15:01
0
у меня больше полугода
avatar

AM2

  • 22 января 2019, 08:30
0
Здравствуйте! Скажите, что означают в настройках функции:
= 0.7; // плюс
= 1; // минус


процент от сделки при получении прибыли убытка
avatar

AM2

  • 22 января 2019, 08:28
0
без новостей возьмусь
avatar

AM2

  • 21 января 2019, 21:25
0
сейчас в советнике есть:

1. Открытие на новой свече
2. В указанный день недели
3. Закрытие при положительном профите



www.opentraders.ru/downloads/2217/
avatar

AM2

  • 21 января 2019, 21:25
0
на 31-е
avatar

AM2

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


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


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

AM2

  • 20 января 2019, 22:25
0
avatar

AM2

  • 20 января 2019, 21:36
0
дорабатываю понемногу. делайте новый топик
avatar

AM2

  • 20 января 2019, 21:20
0
по виртуальным стопам есть в базе. закрытие по проценту там же :) 
avatar

AM2

  • 18 января 2019, 22:48
0
будет 9. добавите любой символ
avatar

AM2

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

AM2

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