//+------------------------------------------------------------------+ //| Create the button | //+------------------------------------------------------------------+ bool ButtonCreate( constlong chart_ID= 0 , // chart's ID conststring name= "Button" , // button name constint sub_window= 0 , // subwindow index constint x= 0 , // X coordinate constint y= 0 , // Y coordinate constint width= 50 , // button width constint height= 18 , // button height constENUM_BASE_CORNER corner= CORNER_LEFT_UPPER , // chart corner for anchoring conststring text= "Button" , // text conststring font= "Arial" , // font constint font_size= 10 , // font size constcolor clr= clrBlack , // text color constcolor back_clr= C'236,233,216' , // background color constcolor border_clr= clrNONE , // border color constbool state= false , // pressed/released constbool back= false , // in the background constbool selection= false , // highlight to move constbool hidden= true , // hidden in the object list constlong 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 ); } //+------------------------------------------------------------------+
문서의 기능 을 '있는 그대로' 사용하여 버튼을 생성하고 코드 하단에 추가하기만 하면 함수를 호출하고 매개변수를 전달할 수 있습니다.
Standard Constants, Enumerations and Structures / Objects Constants / Object Types / OBJ_BITMAP - Reference on algorithmic/automated trading language for MetaTrader 5
나는 많은 재설정 버튼 을 만들려고 노력하고 있지만 이것 보다 훨씬 더 나은 결과 를 얻어야하지만 할 수 없습니다.
(저는 모든 ea와 표시기 Button 객체 를 좋아하지 않습니다. 왜냐하면 그것들은 모두 이와 같이 매우 추하기 때문입니다. )
저에게 도움이 되고 좋은 조언을 해주시는 분들의 두 가지가 필요합니다. 여러분의 도움이 정말 필요합니다.
나는 많은 시간을 보냈고 내 코드에 어떤 문제가 있는지 파악할 수 없습니다.
미리 감사드립니다.
//--- 두 번째 수정 - 이 댓글을 쓰는 동안 졸고 있었을 수도 있습니다...
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 );
//| 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 );
}
//+------------------------------------------------------------------+
문서의 기능 을 '있는 그대로' 사용하여 버튼을 생성하고 코드 하단에 추가하기만 하면 함수를 호출하고 매개변수를 전달할 수 있습니다.
따라서 다음과 같이 호출할 수 있습니다.
또한
덕분에 수정했습니다 그냥 실수였습니다.
------------------------------------------
문서의 기능을 '있는 그대로' 사용하여 버튼을 생성하고 코드 하단에 추가하기만 하면 함수를 호출하고 매개변수를 전달할 수 있습니다.
따라서 다음과 같이 호출할 수 있습니다.
많은 도움이 될 Marco 에게 감사드립니다. EA 코드가 정리된 것 같습니다.
또한 아래 코드에 대해 물어볼 필요 가 있습니다. 그것이 무엇이며 어떻게 작동합니까? (나도 그것에 대해 읽었지만 더 명확하게 이해하지 못했습니다)
조금 더 설명 부탁드립니다. 미리 감사드립니다.
----------------------------------------
또한 아래 코드와 같이 bool 대신 void 를 사용해야하므로 어느 것이 좋습니까?
// or
void ButtonCreate(...)
이 함수는 버튼 생성의 성공 여부에 따라 true 또는 false를 반환하므로 버튼이 실제로 생성되었는지 확인하려면 사용자에게 달려 있습니다.
두 번째 질문의 경우 도구 설명은 차트의 개체 위로 마우스를 가져갔을 때 표시되는 내용입니다.
지금 일하는 방식에는 한계가 있습니다.
확장하려면 다음 기사를 읽으십시오.
https://www.mql5.com/en/search#!keyword=graphical%20interfaces&module=mql5_module_articles
이 함수는 버튼 생성의 성공 여부에 따라 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로 바뀌지 않음)
아래 코드가 잘못된건가요?
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 '를 시도합니다.
참조:
https://www.mql5.com/en/docs/constants/objectconstants/enum_object/obj_bitmap
비트맵 문제의 경우.
그리고 다른 문제의 경우 별도의 부분으로 연결하여 Sparam 외부의 상태를 설정할 수 있습니다.