How to Simulate ButtonClick in MQL

Jan 15, 2017 at 08:27
1,902流覽
5 Replies
會員從Oct 20, 2009開始   42帖子
Jan 15, 2017 at 08:27
Hi ,

I am trying to Generate a mouse button click event in mql ..


if(!EventChartCustom(0, CHARTEVENT_CUSTOM+CHARTEVENT_OBJECT_CLICK,0,0,,btnName))
Print("Error ",GetLastError());

.. but no luck.

Would appreciate some ideas .. thanks a lot
forex_trader_25447
會員從Dec 21, 2010開始   127帖子
Jan 17, 2017 at 04:54
You can NOT add two parameters, like you did with
CHARTEVENT_CUSTOM + CHARTEVENT_OBJECT_CLICK
This is error.
They have to be separated in two EventChartCustom()
會員從Jul 18, 2013開始   1帖子
Jan 17, 2017 at 06:59
in declaracion:

string btn_close_SELLS="btn_close_SELLS";

then in Void Ontick (void)

Create_Button(btn_close_SELLS,"CLOSE SELLS",85,18,110,420,LightSlateGray,White);

copy the following code at the end of your expert

void Create_Button(string but_name,string label,int xsize,int ysize,int xdist,int ydist,int bcolor,int fcolor)
{
if(ObjectFind(0,but_name)<0)
{
if(!ObjectCreate(0,but_name,OBJ_BUTTON,0,0,0))
{
Print(__FUNCTION__,
": failed to create the button! Error code = ",GetLastError());
return;
}
ObjectSetString(0,but_name,OBJPROP_TEXT,label);
ObjectSetInteger(0,but_name,OBJPROP_XSIZE,xsize);
ObjectSetInteger(0,but_name,OBJPROP_YSIZE,ysize);
ObjectSetInteger(0,but_name,OBJPROP_CORNER,1);
ObjectSetInteger(0,but_name,OBJPROP_XDISTANCE,xdist);
ObjectSetInteger(0,but_name,OBJPROP_YDISTANCE,ydist);
ObjectSetInteger(0,but_name,OBJPROP_BGCOLOR,bcolor);
ObjectSetInteger(0,but_name,OBJPROP_COLOR,fcolor);
ObjectSetInteger(0,but_name,OBJPROP_FONTSIZE,9);
ObjectSetInteger(0,but_name,OBJPROP_HIDDEN,true);
//ObjectSetInteger(0,but_name,OBJPROP_BORDER_COLOR,ChartGetInteger(0,CHART_COLOR_FOREGROUND));
ObjectSetInteger(0,but_name,OBJPROP_BORDER_TYPE,BORDER_RAISED);
ChartRedraw();
}
}

and this also at the end of you expert

void OnChartEvent(const int id,const long &lparam,const double &dparam,const string &sparam)
{
if(id==CHARTEVENT_OBJECT_CLICK)
{
if(sparam==btn_close_SELLS)
{
ObjectSetString(0,btn_close_SELLS,OBJPROP_TEXT,"Close SELLS");
{CloseAllShorts();}
ObjectSetInteger(0,btn_close_SELLS,OBJPROP_STATE,0);
ObjectSetString(0,btn_close_SELLS,OBJPROP_TEXT,"Close SELLS");
ObjectDelete(btn_close_SELLS);
}
}
}

the function CloseAllShorts () you have to create youself or something else you want to do with that button



Good luck
會員從Jan 03, 2017開始   29帖子
Jan 18, 2017 at 12:07
spijker posted:
in declaracion:

string btn_close_SELLS="btn_close_SELLS";

then in Void Ontick (void)

Create_Button(btn_close_SELLS,"CLOSE SELLS",85,18,110,420,LightSlateGray,White);

copy the following code at the end of your expert

void Create_Button(string but_name,string label,int xsize,int ysize,int xdist,int ydist,int bcolor,int fcolor)
{
if(ObjectFind(0,but_name)<0)
{
if(!ObjectCreate(0,but_name,OBJ_BUTTON,0,0,0))
{
Print(__FUNCTION__,
": failed to create the button! Error code = ",GetLastError());
return;
}
ObjectSetString(0,but_name,OBJPROP_TEXT,label);
ObjectSetInteger(0,but_name,OBJPROP_XSIZE,xsize);
ObjectSetInteger(0,but_name,OBJPROP_YSIZE,ysize);
ObjectSetInteger(0,but_name,OBJPROP_CORNER,1);
ObjectSetInteger(0,but_name,OBJPROP_XDISTANCE,xdist);
ObjectSetInteger(0,but_name,OBJPROP_YDISTANCE,ydist);
ObjectSetInteger(0,but_name,OBJPROP_BGCOLOR,bcolor);
ObjectSetInteger(0,but_name,OBJPROP_COLOR,fcolor);
ObjectSetInteger(0,but_name,OBJPROP_FONTSIZE,9);
ObjectSetInteger(0,but_name,OBJPROP_HIDDEN,true);
//ObjectSetInteger(0,but_name,OBJPROP_BORDER_COLOR,ChartGetInteger(0,CHART_COLOR_FOREGROUND));
ObjectSetInteger(0,but_name,OBJPROP_BORDER_TYPE,BORDER_RAISED);
ChartRedraw();
}
}

and this also at the end of you expert

void OnChartEvent(const int id,const long &lparam,const double &dparam,const string &sparam)
{
if(id==CHARTEVENT_OBJECT_CLICK)
{
if(sparam==btn_close_SELLS)
{
ObjectSetString(0,btn_close_SELLS,OBJPROP_TEXT,"Close SELLS");
{CloseAllShorts();}
ObjectSetInteger(0,btn_close_SELLS,OBJPROP_STATE,0);
ObjectSetString(0,btn_close_SELLS,OBJPROP_TEXT,"Close SELLS");
ObjectDelete(btn_close_SELLS);
}
}
}

the function CloseAllShorts () you have to create youself or something else you want to do with that button



Good luck

Thanks for the sample code. I'm searching to make the button works too. Found it here
會員從Oct 20, 2009開始   42帖子
Jan 18, 2017 at 15:57
thank you .
benchmarkpro
forex_trader_367321
會員從Oct 08, 2016開始   44帖子
Jan 23, 2017 at 21:29 (已編輯Jan 23, 2017 at 21:30)
write a c based dll.

if you cant get it done by writing a c based dll, it cant be done.

http://www.metatrader5.com/en/metaeditor/help/development/c_dll

if you dont have a c compiler, you could download devcpp.

http://www.bloodshed.net/dev/devcpp.html
登錄 / 註冊 to comment
You must be connected to Myfxbook in order to leave a comment
*商業用途和垃圾郵件將不被容忍,並可能導致帳戶終止。
提示:發佈圖片/YouTube網址會自動嵌入到您的帖子中!
提示:鍵入@符號,自動完成參與此討論的用戶名。