#property copyright "Copyright 2019, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict

extern double lotsize = .01;
extern double takeprofit = 10;
extern double stoploss = 10;
extern double magicnumber = 12678;

int OnInit()
  {
   ButtonCreate();
   return(INIT_SUCCEEDED);
  }

void OnDeinit(const int reason)
  {
   ObjectDelete("buybutton");
   ObjectDelete("sellbutton");  
  }

void OnTick()
  {
  }

void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
   if(id==CHARTEVENT_OBJECT_CLICK && sparam == "buybutton")
      PlaceOrder(OP_BUY);
   
   if(id==CHARTEVENT_OBJECT_CLICK && sparam == "sellbutton")  
      PlaceOrder(OP_SELL);
   
  }

void ButtonCreate()
  {
   int chart_ID = 0;

   string name = "buybutton";
   
   if(!ObjectCreate(0,name,OBJ_BUTTON,0,0,0)) 
     { 
      Print(__FUNCTION__, 
            ": failed to create the buy button! Error code = ",GetLastError()); 
      return; 
     } 

   ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,310); 
   ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,50); 
   ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,100); 
   ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,50); 
   ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,1); 
   ObjectSetString(chart_ID,name,OBJPROP_TEXT,"BUY"); 
   ObjectSetString(chart_ID,name,OBJPROP_FONT,"Arial"); 
   ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,14); 
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clrWhite); 
   ObjectSetInteger(chart_ID,name,OBJPROP_BGCOLOR,clrGreen); 
   ObjectSetInteger(chart_ID,name,OBJPROP_BORDER_COLOR,clrBlack); 
   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,false); 
   ObjectSetInteger(chart_ID,name,OBJPROP_STATE,false); 
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,false); 
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,false); 
   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,false); 
   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,0); 

   string name2 = "sellbutton";
   
   if(!ObjectCreate(0,name2,OBJ_BUTTON,0,0,0)) 
     { 
      Print(__FUNCTION__, 
            ": failed to create the sell button! Error code = ",GetLastError()); 
      return; 
     } 

   ObjectSetInteger(chart_ID,name2,OBJPROP_XDISTANCE,200); 
   ObjectSetInteger(chart_ID,name2,OBJPROP_YDISTANCE,50); 
   ObjectSetInteger(chart_ID,name2,OBJPROP_XSIZE,100); 
   ObjectSetInteger(chart_ID,name2,OBJPROP_YSIZE,50); 
   ObjectSetInteger(chart_ID,name2,OBJPROP_CORNER,1); 
   ObjectSetString(chart_ID,name2,OBJPROP_TEXT,"SELL"); 
   ObjectSetString(chart_ID,name2,OBJPROP_FONT,"Arial"); 
   ObjectSetInteger(chart_ID,name2,OBJPROP_FONTSIZE,14); 
   ObjectSetInteger(chart_ID,name2,OBJPROP_COLOR,clrWhite); 
   ObjectSetInteger(chart_ID,name2,OBJPROP_BGCOLOR,clrRed); 
   ObjectSetInteger(chart_ID,name2,OBJPROP_BORDER_COLOR,clrBlack); 
   ObjectSetInteger(chart_ID,name2,OBJPROP_BACK,false); 
   ObjectSetInteger(chart_ID,name2,OBJPROP_STATE,false); 
   ObjectSetInteger(chart_ID,name2,OBJPROP_SELECTABLE,false); 
   ObjectSetInteger(chart_ID,name2,OBJPROP_SELECTED,false); 
   ObjectSetInteger(chart_ID,name2,OBJPROP_HIDDEN,false); 
   ObjectSetInteger(chart_ID,name2,OBJPROP_ZORDER,0); 
  
  }


void PlaceOrder(int dir)
{
   if(dir==OP_BUY)
   {
      int ticket = OrderSend(Symbol(),dir,lotsize,Ask,30,0,0,NULL,magicnumber,0,clrGreen);
         if(!OrderModify(ticket,OrderOpenPrice(),Ask-stoploss*.0001,Ask+takeprofit*.0001,0,clrGreen));
         Print("unable to mod the buy order");
   }
   
   else if(dir==OP_SELL)
   {
      int ticket = OrderSend(Symbol(),dir,lotsize,Bid,30,0,0,NULL,magicnumber,0,clrRed);
         if(!OrderModify(ticket,OrderOpenPrice(),Bid+stoploss*.0001,Bid-takeprofit*.0001,0,clrGreen));
         Print("unable to mod the sell order");
   }
}
