Short answer: No.
You'll need to code the button and the trade management into an EA and do it that way.
Short answer: No.
You'll need to code the button and the trade management into an EA and do it that way.
//+------------------------------------------------------------------+ //| Create the Buy button | //+------------------------------------------------------------------+ bool Create_BuyButton(const long chart_ID=0, // chart's ID const string name="Button_Buy", // button name const int x=0, // X coordinate const int y=20,// Y coordinate const int width=60, // button width const int height=20, // button height const ENUM_BASE_CORNER corner=CORNER_LEFT_UPPER, // chart corner for anchoring const string text="Buy", // text const string font="Courier New", // font const int font_size=10, // font size const color clr=clrBlack, // text color const color back_clr=clrGray, // background color const bool back=false // in the background ) { //--- reset the error value ResetLastError(); //--- create the button ObjectCreate(chart_ID,name,OBJ_BUTTON,0,0,0); 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_COLOR,clr); ObjectSetInteger(chart_ID,name,OBJPROP_BGCOLOR,back_clr); ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back); //--- successful execution return(true); } //+------------------------------------------------------------------+ //| Create the Sell button | //+------------------------------------------------------------------+ bool Create_SellButton(const long chart_ID=0, // chart's ID const string name="Button_Sell", // button name const int sub_window=0, // subwindow index const int x=65,// X coordinate const int y=20, // Y coordinate const int width=60, // button width const int height=20, // button height const ENUM_BASE_CORNER corner=CORNER_LEFT_UPPER, // chart corner for anchoring const string text="Sell", // text const string font="Courier New", // font const int font_size=10, // font size const color clr=clrBlack, // text color const color back_clr=clrGray, // background color const bool back=false // in the background ) { ResetLastError(); //--- create the button ObjectCreate(chart_ID,name,OBJ_BUTTON,sub_window,0,0); 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); ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner); 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_COLOR,clr); ObjectSetInteger(chart_ID,name,OBJPROP_BGCOLOR,back_clr); ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back); //--- successful execution return(true); } //+------------------------------------------------------------------+ //| Create the Reverse button | //+------------------------------------------------------------------+ bool Create_ReverseButton(const long chart_ID=0, // chart's ID const string name="Button_Reverse", // button name const int sub_window=0, // subwindow index const int x=130,// X coordinate const int y=20, // Y coordinate const int width=60, // button width const int height=20, // button height const ENUM_BASE_CORNER corner=CORNER_LEFT_UPPER, // chart corner for anchoring const string text="Reverse", // text const string font="Courier New", // font const int font_size=10, // font size const color clr=clrBlack, // text color const color back_clr=clrGray, // background color const bool back=false // in the background ) { //--- reset the error value ResetLastError(); //--- create the button ObjectCreate(chart_ID,name,OBJ_BUTTON,sub_window,0,0); 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); ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner); 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_COLOR,clr); ObjectSetInteger(chart_ID,name,OBJPROP_BGCOLOR,back_clr); ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back); //--- successful execution return(true); } //+------------------------------------------------------------------+ //| Create the Close button | //+------------------------------------------------------------------+ bool Create_CloseButton(const long chart_ID=0, // chart's ID const string name="Button_Close", // button name const int sub_window=0, // subwindow index const int x=195,// X coordinate const int y=20,// Y coordinate const int width=60, // button width const int height=20, // button height const ENUM_BASE_CORNER corner=CORNER_LEFT_UPPER, // chart corner for anchoring const string text="Close", // text const string font="Courier New", // font const int font_size=10, // font size const color clr=clrBlack, // text color const color back_clr=clrGray, // background color const bool back=false // in the background ) { //--- reset the error value ResetLastError(); //--- create the button ObjectCreate(chart_ID,name,OBJ_BUTTON,sub_window,0,0); 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); ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner); 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_COLOR,clr); ObjectSetInteger(chart_ID,name,OBJPROP_BGCOLOR,back_clr); ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back); //--- successful execution return(true); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void PlaceLongOrder() { //------------------------------------------------------------------------------------------------- LongOrder_Open=OrderSend(Symbol(),OP_BUY,0.01,Ask,0,0,0,"",0); //Error Control if(GetLastError()>=3){Alert("Buy ..Error : "+ErrorDescription(GetLastError()));} //------------------------------------------------------------------------------------------------- } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void PlaceShortOrder() { //------------------------------------------------------------------------------------------------- ShortOrder_Open=OrderSend(Symbol(),OP_SELL,0.01,Bid,0,0,0,"",0); //Error Control if(GetLastError()>=3){Alert("Buy ..Error : "+ErrorDescription(GetLastError()));} //------------------------------------------------------------------------------------------------- } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void CloseOrder() { //Close Long Order for(int i=OrdersTotal()-1; i>=0; i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) if(OrderSymbol()==Symbol()) { if(OrderType()==OP_BUY) { //------------------------------------------------------------------------------------------------- double CloseBuy=OrderClose(OrderTicket(),OrderLots(),Bid,0); //------------------------------------------------------------------------------------------------- ChartSetInteger(0,CHART_COLOR_FOREGROUND,clrSteelBlue); //------------------------------------------------------------------------------------------------- } if(OrderType()==OP_SELL) { //------------------------------------------------------------------------------------------------- double CloseSell=OrderClose(OrderTicket(),OrderLots(),Ask,0); //------------------------------------------------------------------------------------------------- ChartSetInteger(0,CHART_COLOR_FOREGROUND,clrSteelBlue); //------------------------------------------------------------------------------------------------- } } } } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void ReverseOrder() { for(int i=OrdersTotal()-1; i>=0; i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) if(OrderSymbol()==Symbol()) { if(OrderType()==OP_BUY) { //------------------------------------------------------------------------------------------------- //Close Long Order double CloseLong_Rev=OrderClose(OrderTicket(),OrderLots(),Bid,0); //------------------------------------------------------------------------------------------------- //Open New Short Order with Risk Management setting LotSize double OpenShort_Rev=OrderSend(Symbol(),OP_SELL,0.01,Bid,0,0,0,"",0); //------------------------------------------------------------------------------------------------- } if(OrderType()==OP_SELL) { //------------------------------------------------------------------------------------------------- //Close Short Order double CloseShort_Rev=OrderClose(OrderTicket(),OrderLots(),Ask,0); //------------------------------------------------------------------------------------------------- //Open New Long Order with Risk Management setting LotSize double OpenLong_Rev=OrderSend(Symbol(),OP_BUY,0.01,Ask,0,0,0,"",0); //------------------------------------------------------------------------------------------------- } } //Error Control Print("ReverseOrder Error : "+ErrorDescription(GetLastError())); } } //+------------------------------------------------------------------+ //| ChartEvent function | //+------------------------------------------------------------------+ void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) { //--- if(id==CHARTEVENT_OBJECT_CLICK) { if(sparam=="Button_Buy") { PlaceLongOrder(); ObjectSetInteger(0,"Button_Buy",OBJPROP_STATE,false); } if(sparam=="Button_Sell") { PlaceShortOrder(); ObjectSetInteger(0,"Button_Sell",OBJPROP_STATE,false); } if(sparam=="Button_Close") { CloseOrder(); ObjectSetInteger(0,"Button_Close",OBJPROP_STATE,false); } if(sparam=="Button_Reverse") { ReverseOrder(); ObjectSetInteger(0,"Button_Reverse",OBJPROP_STATE,false); } } }MBeck:
Thanks, the short answer is allways the best. :-)
you cant trigger a script but you can code a button to do whatever you want to do.
i have open/close/reverse buttons in my ea, one day i will get around to making a button for pending orders.
a button for moving a stoploss to breakeven, or even trailing a stoploss for that matter is possible.
all the info you need and the info i used is in the documentation and a certain search engine.
good luck
you cant trigger a script but you can code a button to do whatever you want to do.
i have open/close/reverse buttons in my ea, one day i will get around to making a button for pending orders.
a button for moving a stoploss to breakeven, or even trailing a stoploss for that matter is possible.
all the info you need and the info i used is in the documentation and a certain search engine.
good luck
Hi,
And is it possible to hide show arrow symbol by button (for example) with true/false bool, rather than always open the indicator pop-up (CRTL+I) ?
Can you give me simple and short example please ?
Regards.
Hello, honestly it can not be done but if you can code a button to do other things.
Hi,
And is it possible to hide show arrow symbol by button (for example) with true/false bool, rather than always open the indicator pop-up (CRTL+I) ?
Can you give me simple and short example please ?
Regards.
Hi everyone,
I am playing around with buttons on the chart and I thought it would be good to have a button that moves the stoploss to breakeven.
What I want to do: I want to make an indicator that plots a button on my chart. When I push the button it triggers a script that moves my stop to break even.
I will send the ticket and the new position to the script so it knows which stop to move an where.
My question: Is there a way to trigger a script from an indicator? If yes, how?
Thanks for reading. If I can do it I will put it out so everyone can use it.
Yes, you can call a script from an indicator by a button.
You need to assign a keyboard shortcut to the script and in the button you need to emulate the keyboard events.
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
You agree to website policy and terms of use
Hi everyone,
I am playing around with buttons on the chart and I thought it would be good to have a button that moves the stoploss to breakeven.
What I want to do: I want to make an indicator that plots a button on my chart. When I push the button it triggers a script that moves my stop to break even.
I will send the ticket and the new position to the script so it knows which stop to move an where.
My question: Is there a way to trigger a script from an indicator? If yes, how?
Thanks for reading. If I can do it I will put it out so everyone can use it.