전문 고문 - 기타 질문 - 페이지 6

 

나는 많은 재설정 버튼 을 만들려고 노력하고 있지만 이것 보다 훨씬 더 나은 결과 를 얻어야하지만 할 수 없습니다.
(저는 모든 ea와 표시기 Button 객체 를 좋아하지 않습니다. 왜냐하면 그것들은 모두 이와 같이 매우 추하기 때문입니다. )

저에게 도움이 되고 좋은 조언을 해주시는 분들의 두 가지가 필요합니다. 여러분의 도움이 정말 필요합니다.
나는 많은 시간을 보냈고 내 코드에 어떤 문제가 있는지 파악할 수 없습니다.

미리 감사드립니다.

//--- 두 번째 수정 - 이 댓글을 쓰는 동안 졸고 있었을 수도 있습니다...

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입니다...

덕분에 수정했습니다 그냥 실수였습니다.
------------------------------------------

마르코 vd 하이덴 :

문서의 기능을 '있는 그대로' 사용하여 버튼을 생성하고 코드 하단에 추가하기만 하면 함수를 호출하고 매개변수를 전달할 수 있습니다.

따라서 다음과 같이 호출할 수 있습니다.

ButtonCreate(...)

많은 도움이 될 Marco 에게 감사드립니다. EA 코드가 정리된 것 같습니다.
또한 아래 코드에 대해 물어볼 필요 가 있습니다. 그것이 무엇이며 어떻게 작동합니까? (나도 그것에 대해 읽었지만 더 명확하게 이해하지 못했습니다)

조금 더 설명 부탁드립니다. 미리 감사드립니다.

ObjectSetString ( 0 , name, OBJPROP_TOOLTIP , tip );

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

또한 아래 코드와 같이 bool 대신 void 를 사용해야하므로 어느 것이 좋습니까?

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

정말 감사합니다.
와우, 당신은 내 남자가 될 것입니다, Mr. Marco.

(당신의 첫 번째 댓글 이후 - 당신은 저를 많이 도왔습니다 - 당신은 항상 내 우려를 이해하려고 노력합니다 - 다시 한 번 큰 감사)

 
글쎄, 나는 단지 당신에게 이 기사들을 지적하고 우리는 그것들을 쓰고 또한 번역한 저자들에게 가장 감사해야 합니다.
 

LotSize icon 에 대해 EA 코드에서 .PNG 파일 형식을 사용해야 합니다.
하지만 .BMP 파일 형식만 찾았습니다. 그래서 누군가가 저를 도와줄 수 있습니까?

어떤 의견이라도 빨리 감사할 수 있다면 조금 더 서두르겠습니다.
미리 감사드립니다.

 

나는 lotsize가 더 나은 경우 lotvalue 'State true' 그렇지 않으면 'State false'를 시도합니다.
('재설정' 개체를 클릭하면 '상태 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