советник - разные вопросы - страница 6

 

Я пытаюсь сделать кнопку сброса лота, но мне нужно получить гораздолучший результат, чем этот, но я не могу.
( Мне не нравятся все мои ea и индикаторы Button objects, потому что все они очень уродливые, как этот. )

Мне нужно две вещи от вас, ребята, кто может помочь и дать мне хороший совет, пожалуйста, мне очень нужна ваша помощь.
Я потратил много времени и не могу понять, в чем проблема с моим кодом.

Заранее спасибо.

//--- второй раз отредактировано - пока я писал этот комментарий, возможно, я дремал...

ObjectCreate     ( 0, "button lot reset", OBJ_BUTTON           , 0, 0, 0           );
ObjectSetString  ( 0, "button lot reset", OBJPROP_TEXT         , "x"               );
ObjectSetString  ( 0, "button lot reset", OBJPROP_FONT         , "Verdana"         );
ObjectSetInteger ( 0, "button lot reset", OBJPROP_FONTSIZE     , 14                );
ObjectSetInteger ( 0, "button lot reset", OBJPROP_XDISTANCE    , 16                );
ObjectSetInteger ( 0, "button lot reset", OBJPROP_YDISTANCE    , 16                );
ObjectSetInteger ( 0, "button lot reset", OBJPROP_XSIZE        , 18                );
ObjectSetInteger ( 0, "button lot reset", OBJPROP_YSIZE        , 18                );
ObjectSetInteger ( 0, "button lot reset", OBJPROP_CORNER       , CORNER_LEFT_UPPER );
ObjectSetInteger ( 0, "button lot reset", OBJPROP_COLOR        , White             );
ObjectSetInteger ( 0, "button lot reset", OBJPROP_BGCOLOR      , Black             );
ObjectSetInteger ( 0, "button lot reset", OBJPROP_BORDER_COLOR , Black             );
ObjectSetInteger ( 0, "button lot reset", OBJPROP_STATE        , false             );
ObjectSetInteger ( 0, "button lot reset", OBJPROP_BACK         , false             );
ObjectSetInteger ( 0, "button lot reset", OBJPROP_SELECTABLE   , false             );
ObjectSetInteger ( 0, "button lot reset", OBJPROP_SELECTED     , false             );
ObjectSetInteger ( 0, "button lot reset", OBJPROP_HIDDEN       , true              );
ObjectSetInteger ( 0, "button lot reset", OBJPROP_ZORDER       , true              );
 
  1. Если он скрыт, как вы можете его увидеть и нажать на него?
  2. ZORDER - это не булева величина, это int 0...
 
//+------------------------------------------------------------------+
//| Create the button                                                |
//+------------------------------------------------------------------+
bool ButtonCreate(const long              chart_ID=0,               // chart's ID
                  const string            name="Button",            // button name
                  const int               sub_window=0,             // subwindow index
                  const int               x=0,                      // X coordinate
                  const int               y=0,                      // Y coordinate
                  const int               width=50,                 // button width
                  const int               height=18,                // button height
                  const ENUM_BASE_CORNER  corner=CORNER_LEFT_UPPER, // chart corner for anchoring
                  const string            text="Button",            // text
                  const string            font="Arial",             // font
                  const int               font_size=10,             // font size
                  const color             clr=clrBlack,             // text color
                  const color             back_clr=C'236,233,216',  // background color
                  const color             border_clr=clrNONE,       // border color
                  const bool              state=false,              // pressed/released
                  const bool              back=false,               // in the background
                  const bool              selection=false,          // highlight to move
                  const bool              hidden=true,              // hidden in the object list
                  const long              z_order=0)                // priority for mouse click
  {
//--- reset the error value
   ResetLastError();
//--- create the button
   if(!ObjectCreate(chart_ID,name,OBJ_BUTTON,sub_window,0,0))
     {
      Print(__FUNCTION__,
            ": failed to create the button! Error code = ",GetLastError());
      return(false);
     }
//--- set button coordinates
   ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x);
   ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y);
//--- set button size
   ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width);
   ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height);
//--- set the chart's corner, relative to which point coordinates are defined
   ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner);
//--- set the text
   ObjectSetString(chart_ID,name,OBJPROP_TEXT,text);
//--- set text font
   ObjectSetString(chart_ID,name,OBJPROP_FONT,font);
//--- set font size
   ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,font_size);
//--- set text color
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- set background color
   ObjectSetInteger(chart_ID,name,OBJPROP_BGCOLOR,back_clr);
//--- set border color
   ObjectSetInteger(chart_ID,name,OBJPROP_BORDER_COLOR,border_clr);
//--- display in the foreground (false) or background (true)
   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- set button state
   ObjectSetInteger(chart_ID,name,OBJPROP_STATE,state);
//--- enable (true) or disable (false) the mode of moving the button by mouse
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- hide (true) or display (false) graphical object name in the object list
   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- set the priority for receiving the event of a mouse click in the chart
   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- successful execution
   return(true);
  }
//+------------------------------------------------------------------+

Пожалуйста, вы можете просто использовать функцию из документации "как есть" для создания кнопок, просто добавьте ее в нижнюю часть вашего кода и вы можете вызвать функцию и передать параметры.

Тогда вы сможете просто вызывать:

ButtonCreate(...

Также

whroeder1:
  1. Если кнопка скрыта, как вы можете ее увидеть и нажать на нее?
  2. ZORDER - это не булево значение, это int 0....
Hidden - это просто скрыт в списке объектов.
 
whroeder1:
  1. Если он скрыт, как вы можете его увидеть и нажать на него?
  2. ZORDER - это не булево, это int 0....

Спасибо, я исправил, просто это была ошибка.
--------------------------------------------

Marco vd Heijden:

Пожалуйста, вы можете просто использовать функцию из документации "как есть" для создания кнопок, просто добавьте ее внизу вашего кода и вы можете вызвать функцию и передать параметры.

Тогда вы можете просто вызвать:

ButtonCreate(...)

Спасибо, Марко, это мне очень помогло, и коды моего советника выглядят как очищенные.
Также я хотел бы спросить о следующем коде, что это такое, как он работает? (даже я читал об этом, но я не понимаю более четко).

Пожалуйста, объясните немного подробнее, заранее спасибо.

ObjectSetString ( 0, name, OBJPROP_TOOLTIP , tip );

----------------------------------------

Также мне нужно использовать void вместо bool, как в приведенном ниже коде, таккакой из них лучше?

bool ButtonCreate(...)

// or

void ButtonCreate(...)
 

Функция возвращает true или false в зависимости от того, было ли создание кнопки успешным или нет, поэтому от вас зависит, хотите ли вы проверить, что кнопка действительно была создана.

Что касается второго вопроса, то всплывающая подсказка - это то, что становится видимым при наведении курсора мыши на объект на графике.

То, как вы работаете сейчас, имеет ограничения.

Если вы хотите расширить возможности, прочитайте следующие статьи:

https://www.mql5.com/en/search#!keyword=graphical%20interfaces&module=mql5_module_articles

 
Marco vd Heijden:

Функция возвращает true или false в зависимости от того, было ли создание кнопки успешным или нет, поэтому от вас зависит, хотите ли вы проверить, что кнопка действительно была создана.

Что касается второго вопроса, то всплывающая подсказка - это то, что становится видимым при наведении курсора мыши на объект на графике.

То, как вы работаете сейчас, имеет ограничения.

Если вы хотите расширить их, пожалуйста, прочитайте следующие статьи:

https://www.mql5.com/en/search#!keyword=graphical%20interfaces&module=mql5_module_articles

Огромная благодарность.
WOW, вы станете моим человеком, мистер Марко.

( с момента вашего первого комментария - вы мне очень помогли - вы всегда стараетесь понять мои проблемы - еще раз огромное спасибо )

 
Я просто указал вам на эти статьи, и мы должны быть очень благодарны авторам, которые их написали, а также перевели.
 

Мне нужно использовать формат файла .PNG в коде моего советника, для иконки LotSize.
Но я нашел только формат файла .BMP, так что может ли кто-нибудь помочь мне / посоветовать мне?

Если любой комментарий может быть быстро очень ценю, просто я спешу немного больше.
Заранее спасибо.

 

Я пытаюсь сделать так: если размер лота больше значения лота, то "Состояние истинно", если меньше, то "Состояние ложно".
( когда я нажимаю 'Reset' объект переходит в состояние 'State false' и после увеличения размера лота состояние не переходит в true )

Является ли приведенный ниже код неправильным?

//|     Lot Reset
if ( sparam == _namelotRset )
{
    if ( _lotSize > _lotValue )
    {
        ObjectSetInteger( 0, sparam, OBJPROP_STATE, true );
    }   //---if Close
    else
    {
        ObjectSetInteger( 0, sparam, OBJPROP_STATE, false );
    }   //---if Close
    _lotSize = _lotValue * _lotMin;

    _infoUpdate();
    return;
}   //---if Close

Спасибо!

//--- второй раз редактировалось

Я пытаюсь сделать поворот'ON OFF' с помощью приведенного ниже кода.

ObjectSetString( chart_ID, name, OBJPROP_BMPFILE, on_off, file )
 

Пожалуйста, смотрите:

https://www.mql5.com/en/docs/constants/objectconstants/enum_object/obj_bitmap

Для проблемы с растровой картой.

А для другого вопроса вы можете разделить его на отдельные части, чтобы установить состояние вне sparam.

Documentation on MQL5: Standard Constants, Enumerations and Structures / Objects Constants / Object Types / OBJ_BITMAP
Documentation on MQL5: Standard Constants, Enumerations and Structures / Objects Constants / Object Types / OBJ_BITMAP
  • www.mql5.com
Standard Constants, Enumerations and Structures / Objects Constants / Object Types / OBJ_BITMAP - Reference on algorithmic/automated trading language for MetaTrader 5