money_manager_graphic_tool

Download script
Author: Girard Matthieu
money_manager_graphic_tool

This script is a sophisticated Money Management and Graphic Tool designed for MetaTrader 4. It serves as an interactive dashboard that helps traders visualize their risk, calculate precise trade sizes based on account balance, and manage the visual elements of their trading chart in real-time.

Instead of just being a static indicator, it acts as a "sandbox" where you can simulate and organize your trades before execution. Here is a breakdown of how the logic works:

Dynamic Visual Interface

When you load the script, it generates an interactive control panel directly on your trading chart. This dashboard includes several key components:

  • Risk Analysis: It automatically calculates how much money is at stake based on a user-defined percentage of your account balance (or equity).
  • Trade Lines: It allows for the creation of "Buy" and "Sell" lines. These aren't just markers; they are linked to specific calculations for Stop Loss (SL) and Take Profit (TP) levels.
  • Interactive Buttons: The tool features clickable buttons that allow you to increase or decrease risk percentages, adjust lot sizes, and toggle the visibility of your SL and TP lines on the fly.

Smart Risk Calculation

The core logic of the script is its ability to automate "Position Sizing." Based on the distance between your entry price and your Stop Loss:

  • It calculates the maximum allowed lot size to ensure you never risk more than your pre-defined percentage.
  • It provides real-time feedback, showing you exactly how many pips you are from the current market price for both your entry and your exit points.
  • It monitors "Broker Limits" to warn you if your planned trade exceeds the minimum or maximum lot sizes allowed by your specific trading platform.

Advanced Trading Features

The script includes several high-level logic features to assist with strategy execution:

  • Ratio Management: You can quickly adjust your Reward-to-Risk ratio (e.g., 1:2, 1:3, 1:4). When you click these buttons, the tool automatically moves your Take Profit line to maintain the desired proportion relative to your Stop Loss.
  • Price Following: A unique "Follow Price" mode allows the entry and exit lines to stick to the current market price (Ask/Bid) as it moves, which is helpful for visualizing immediate execution.
  • Order Preparation: The tool can identify whether a pending order should be a "Limit" or a "Stop" order based on where you place your line relative to the current price. It then communicates these details (Price, Lot Size, SL, TP, and Magic Number) to an external Money Manager EA for execution.
  • Auto-Cleanup: The tool is designed to be clean; it includes a close function that removes all generated lines and labels from your chart instantly when you are finished with the calculation.

User Experience

For the trader, this means moving away from manual calculations (calculators, spreadsheets, etc.) and into a unified visual experience. You can drag the control box to where it fits best on your screen, interact with the buttons to "fine-tune" your risk, and get instant visual confirmation of your trade's mathematical viability before ever clicking "Trade."

13 Views
0 Downloads
0 Favorites
money_manager_graphic_tool
//+------------------------------------------------------------------+
//|                                   Money_Manager_Graphic_Tool.mq4 |
//|                        Copyright 2015, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Girard Matthieu"
#property link      "https://www.mql5.com"
#property version   "1.03"
//Add Magic Number
//Add button hide SL
//Correction on using Money_Manager_Graphic_Tool and Money_Manager_EA more than once
#property script_show_inputs
#property indicator_chart_window
#property strict
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
enum Lot
  {
   StandardLot,     //Standard Lot 1
   MiniLot,         //Mini Lot 0.1
   MicroLot,        //Micro Lot 0.01
  };
extern string  BuyLine="B";               //Key to Create a Buy Line
extern string  SellLine="S";              //Key to Create a Sell Line
extern int     Risk=2;                    //Your Percentage Risk
extern double  DefaultSL=30;              //Default SL in Pips
extern color   ColorBuySell=clrGreen;     //Color of the Buy or Sell line
extern color   ColorSL=clrRed;            //Color of the SL line
extern color   ColorTP=clrDarkOrange;           //Color of the TP line
extern color   ColorTextBox=clrWhite;     //Color of text in the toolbox
extern ENUM_LINE_STYLE  LineStyle=STYLE_SOLID;  //Style of Lines
extern int     Linewidth=2;                     //Choose the width of the line
extern bool    Account=true;                    //Choose Balance [true] or Equity [false]
extern bool    CreateTP=true;                   //Create a Take Profit line
extern bool    CreateSL=true;                   //not anymore money management, but asked by users
extern bool    TransparancyBox=false;          //The dialog box is transparent
extern color   BoxColor=clrBlack;             //Background box color
extern int     MagicNumber=951357;            //Magic Number

datetime       labelposition;             //label position on screen
int            x=50;                      // axe x start
int            y=130;                     // axe y start 
double         price =0;                  //keep the mouse price
int            xmouse;                    //the x coordonate of the mouse
int            ymouse;                    //the y coordonate of the mouse
double         ratioposition=0.50;
ENUM_ACCOUNT_INFO_DOUBLE         accounttype=ACCOUNT_BALANCE;
string         balanceequity;
double         lotsizemaximum;
double         riskmoney;
double         PipValuesonelot;
double         PipValues;
double         point;
int            divide;
int            minus;
string         ratio;
double         sandboxrisk;
double         sandboxlotsize=-1;
string         onoff;
color          onoffcolor;
bool           followprice=false;
string         YesNo;
color          YesNocolor;
double         SLPips;
double         TPPips;
double         SLTPbrokerLimit;
double         MaximumLot;
double         MinimumLotSize;
double         LotStep;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
   if(WindowFirstVisibleBar()>0)
     {
      labelposition=Time[int(WindowFirstVisibleBar()*0.7)];
     }
   if(Digits==1){minus=1;divide=10;}
   if(Digits==2){minus=0;divide=1;}
   if(Digits==3){minus=1;divide=10;}
   if(Digits==4){minus=0;divide=1;}
   if(Digits==5){minus=1;divide=10;}
   SLTPbrokerLimit=MarketInfo(Symbol(),MODE_STOPLEVEL);
   MaximumLot=MarketInfo(Symbol(),MODE_MAXLOT);
   MinimumLotSize=MarketInfo(Symbol(),MODE_MINLOT);
   LotStep=MarketInfo(Symbol(),MODE_LOTSTEP);

   if(Account){accounttype=ACCOUNT_BALANCE;balanceequity="Balance";}else{accounttype=ACCOUNT_EQUITY;balanceequity="Equity";}
   if(!TransparancyBox)
     {
      RectLabelCreate(0,"MMGTbox_RectLabel",0,int(x-10),int(y-10),480,240,clrBlack,BORDER_SUNKEN,CORNER_LEFT_UPPER,clrRed,STYLE_SOLID,1,false,false,false,0);
      ObjectSetString(0,"MMGTbox_RectLabel",OBJPROP_TOOLTIP,"");
      ObjectSetInteger(0,"MMGTbox_RectLabel",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
     }

   RectLabelCreate(0,"MMGTbox_RecMov",0,x,y,10,10,clrBlack,BORDER_FLAT,CORNER_LEFT_UPPER,ColorTextBox,STYLE_SOLID,3,false,true,true,0);
   ObjectSetInteger(0,"MMGTbox_RecMov",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
   point=Point;
   if((Digits==3) || (Digits==5) || (Digits==1)){point*=10;}
   PipValuesonelot=(((MarketInfo(Symbol(),MODE_TICKVALUE)*point)/MarketInfo(Symbol(),MODE_TICKSIZE))*1);
   sandboxrisk=Risk;
//Line 1
   ObjectCreate("MMGTbox_Line1",OBJ_LABEL,0,0,0);
   ObjectSet("MMGTbox_Line1",OBJPROP_XDISTANCE,ObjectGet("MMGTbox_RecMov",OBJPROP_XDISTANCE));
   ObjectSet("MMGTbox_Line1",OBJPROP_YDISTANCE,ObjectGet("MMGTbox_RecMov",OBJPROP_YDISTANCE)+10);
   ObjectSetInteger(0,"MMGTbox_Line1",OBJPROP_SELECTABLE,false);
   ObjectSetString(0,"MMGTbox_Line1",OBJPROP_TOOLTIP,"Risk % = Risk "+AccountInfoString(ACCOUNT_CURRENCY)+" / Account Size");
   ObjectSetInteger(0,"MMGTbox_Line1",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
   riskmoney=double(AccountInfoDouble(accounttype))/100*Risk;
   ObjectSetText("MMGTbox_Line1","Risk         : "+DoubleToStr(Risk,2)+"% = "+DoubleToStr(riskmoney,2)+" "+AccountInfoString(ACCOUNT_CURRENCY)+" / "+balanceequity+" "+DoubleToStr(AccountInfoDouble(accounttype),2)+" "+AccountInfoString(ACCOUNT_CURRENCY),10,"Courier New",ColorTextBox);
//Line 2
   ObjectCreate("MMGTbox_Line2",OBJ_LABEL,0,0,0);
   ObjectSet("MMGTbox_Line2",OBJPROP_XDISTANCE,ObjectGet("MMGTbox_RecMov",OBJPROP_XDISTANCE));
   ObjectSet("MMGTbox_Line2",OBJPROP_YDISTANCE,ObjectGet("MMGTbox_RecMov",OBJPROP_YDISTANCE)+25);
   ObjectSetInteger(0,"MMGTbox_Line2",OBJPROP_SELECTABLE,false);
   ObjectSetString(0,"MMGTbox_Line2",OBJPROP_TOOLTIP,"Ratio");
   ObjectSetInteger(0,"MMGTbox_Line2",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
   ObjectSetText("MMGTbox_Line2","",10,"Courier New",ColorTextBox);
//Line 3
   ObjectCreate("MMGTbox_Line3",OBJ_LABEL,0,0,0);
   ObjectSet("MMGTbox_Line3",OBJPROP_XDISTANCE,ObjectGet("MMGTbox_RecMov",OBJPROP_XDISTANCE));
   ObjectSet("MMGTbox_Line3",OBJPROP_YDISTANCE,ObjectGet("MMGTbox_RecMov",OBJPROP_YDISTANCE)+40);
   ObjectSetInteger(0,"MMGTbox_Line3",OBJPROP_SELECTABLE,false);
   ObjectSetString(0,"MMGTbox_Line3",OBJPROP_TOOLTIP,"SL pips & value");
   ObjectSetInteger(0,"MMGTbox_Line3",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
   ObjectSetText("MMGTbox_Line3","",10,"Courier New",ColorTextBox);
//Line 4
   ObjectCreate("MMGTbox_Line4",OBJ_LABEL,0,0,0);
   ObjectSet("MMGTbox_Line4",OBJPROP_XDISTANCE,ObjectGet("MMGTbox_RecMov",OBJPROP_XDISTANCE));
   ObjectSet("MMGTbox_Line4",OBJPROP_YDISTANCE,ObjectGet("MMGTbox_RecMov",OBJPROP_YDISTANCE)+55);
   ObjectSetInteger(0,"MMGTbox_Line4",OBJPROP_SELECTABLE,false);
   ObjectSetString(0,"MMGTbox_Line4",OBJPROP_TOOLTIP,"TP pips & value");
   ObjectSetInteger(0,"MMGTbox_Line4",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
   ObjectSetText("MMGTbox_Line4","",10,"Courier New",ColorTextBox);
//Line 5
   ObjectCreate("MMGTbox_Line5",OBJ_LABEL,0,0,0);
   ObjectSet("MMGTbox_Line5",OBJPROP_XDISTANCE,ObjectGet("MMGTbox_RecMov",OBJPROP_XDISTANCE));
   ObjectSet("MMGTbox_Line5",OBJPROP_YDISTANCE,ObjectGet("MMGTbox_RecMov",OBJPROP_YDISTANCE)+70);
   ObjectSetInteger(0,"MMGTbox_Line5",OBJPROP_SELECTABLE,false);
   ObjectSetString(0,"MMGTbox_Line5",OBJPROP_TOOLTIP,"Lot Size Max");
   ObjectSetInteger(0,"MMGTbox_Line5",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
   ObjectSetText("MMGTbox_Line5","",10,"Courier New",ColorTextBox);
//Line 6
   ObjectCreate("MMGTbox_Line6",OBJ_LABEL,0,0,0);
   ObjectSet("MMGTbox_Line6",OBJPROP_XDISTANCE,ObjectGet("MMGTbox_RecMov",OBJPROP_XDISTANCE));
   ObjectSet("MMGTbox_Line6",OBJPROP_YDISTANCE,ObjectGet("MMGTbox_RecMov",OBJPROP_YDISTANCE)+85);
   ObjectSetString(0,"MMGTbox_Line6",OBJPROP_TOOLTIP,"SandBox Section");
   ObjectSetInteger(0,"MMGTbox_Line6",OBJPROP_SELECTABLE,false);
   ObjectSetInteger(0,"MMGTbox_Line6",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
   ObjectSetText("MMGTbox_Line6","--SandBox-/-OpenOrder---------------------",10,"Courier New",ColorTextBox);
//Line 7
   ObjectCreate("MMGTbox_Line7",OBJ_LABEL,0,0,0);
   ObjectSet("MMGTbox_Line7",OBJPROP_XDISTANCE,ObjectGet("MMGTbox_RecMov",OBJPROP_XDISTANCE));
   ObjectSet("MMGTbox_Line7",OBJPROP_YDISTANCE,ObjectGet("MMGTbox_RecMov",OBJPROP_YDISTANCE)+100);
   ObjectSetString(0,"MMGTbox_Line7",OBJPROP_TOOLTIP,"Change the risk");
   ObjectSetInteger(0,"MMGTbox_Line7",OBJPROP_SELECTABLE,false);
   ObjectSetInteger(0,"MMGTbox_Line7",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
   ObjectSetText("MMGTbox_Line7","",10,"Courier New",ColorTextBox);
// Risk button + 
   ButtonCreate(0,"MMGTbox_RiskSizeButtonPlus",0,int(ObjectGet("MMGTbox_RecMov",OBJPROP_XDISTANCE)+80),int(ObjectGet("MMGTbox_RecMov",OBJPROP_YDISTANCE)+102),10,10,0,"+","Arial",10,clrBlack,C'236,233,216',clrNONE,false,false,false,false,0);
   ObjectSetString(0,"MMGTbox_RiskSizeButtonPlus",OBJPROP_TOOLTIP,"increase the risk");
   ObjectSetInteger(0,"MMGTbox_RiskSizeButtonPlus",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
// Risk button - 
   ButtonCreate(0,"MMGTbox_RiskSizeButtonMinus",0,int(ObjectGet("MMGTbox_RecMov",OBJPROP_XDISTANCE)+90),int(ObjectGet("MMGTbox_RecMov",OBJPROP_YDISTANCE)+102),10,10,0,"-","Arial",10,clrBlack,C'236,233,216',clrNONE,false,false,false,false,0);
   ObjectSetString(0,"MMGTbox_RiskSizeButtonMinus",OBJPROP_TOOLTIP,"decrease the risk");
   ObjectSetInteger(0,"MMGTbox_RiskSizeButtonMinus",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);

//Line 8
   ObjectCreate("MMGTbox_Line8",OBJ_LABEL,0,0,0);
   ObjectSet("MMGTbox_Line8",OBJPROP_XDISTANCE,ObjectGet("MMGTbox_RecMov",OBJPROP_XDISTANCE));
   ObjectSet("MMGTbox_Line8",OBJPROP_YDISTANCE,ObjectGet("MMGTbox_RecMov",OBJPROP_YDISTANCE)+115);
   ObjectSetString(0,"MMGTbox_Line8",OBJPROP_TOOLTIP,"Lot Size you want");
   ObjectSetInteger(0,"MMGTbox_Line8",OBJPROP_SELECTABLE,false);
   ObjectSetInteger(0,"MMGTbox_Line8",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
   ObjectSetText("MMGTbox_Line8","",10,"Courier New",ColorTextBox);
// LotSize button + 
   ButtonCreate(0,"MMGTbox_LotSizeButtonPlus",0,int(ObjectGet("MMGTbox_RecMov",OBJPROP_XDISTANCE)+80),int(ObjectGet("MMGTbox_RecMov",OBJPROP_YDISTANCE)+117),10,10,0,"+","Arial",10,clrBlack,C'236,233,216',clrNONE,false,false,false,false,0);
   ObjectSetString(0,"MMGTbox_LotSizeButtonPlus",OBJPROP_TOOLTIP,"increase lot size");
   ObjectSetInteger(0,"MMGTbox_LotSizeButtonPlus",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
// LotSize button - 
   ButtonCreate(0,"MMGTbox_LotSizeButtonMinus",0,int(ObjectGet("MMGTbox_RecMov",OBJPROP_XDISTANCE)+90),int(ObjectGet("MMGTbox_RecMov",OBJPROP_YDISTANCE)+117),10,10,0,"-","Arial",10,clrBlack,C'236,233,216',clrNONE,false,false,false,false,0);
   ObjectSetString(0,"MMGTbox_LotSizeButtonMinus",OBJPROP_TOOLTIP,"decrease lot size");
   ObjectSetInteger(0,"MMGTbox_LotSizeButtonMinus",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
//Line 9
   ObjectCreate("MMGTbox_Line9",OBJ_LABEL,0,0,0);
   ObjectSet("MMGTbox_Line9",OBJPROP_XDISTANCE,ObjectGet("MMGTbox_RecMov",OBJPROP_XDISTANCE));
   ObjectSet("MMGTbox_Line9",OBJPROP_YDISTANCE,ObjectGet("MMGTbox_RecMov",OBJPROP_YDISTANCE)+130);
   ObjectSetString(0,"MMGTbox_Line9",OBJPROP_TOOLTIP,"SL");
   ObjectSetInteger(0,"MMGTbox_Line9",OBJPROP_SELECTABLE,false);
   ObjectSetInteger(0,"MMGTbox_Line9",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
   ObjectSetText("MMGTbox_Line9","",10,"Courier New",ColorTextBox);
//Line 10
   ObjectCreate("MMGTbox_Line10",OBJ_LABEL,0,0,0);
   ObjectSet("MMGTbox_Line10",OBJPROP_XDISTANCE,ObjectGet("MMGTbox_RecMov",OBJPROP_XDISTANCE));
   ObjectSet("MMGTbox_Line10",OBJPROP_YDISTANCE,ObjectGet("MMGTbox_RecMov",OBJPROP_YDISTANCE)+145);
   ObjectSetString(0,"MMGTbox_Line10",OBJPROP_TOOLTIP,"TP");
   ObjectSetInteger(0,"MMGTbox_Line10",OBJPROP_SELECTABLE,false);
   ObjectSetInteger(0,"MMGTbox_Line10",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
   ObjectSetText("MMGTbox_Line10","",10,"Courier New",ColorTextBox);
//Line 11
   ObjectCreate("MMGTbox_Line11",OBJ_LABEL,0,0,0);
   ObjectSet("MMGTbox_Line11",OBJPROP_XDISTANCE,ObjectGet("MMGTbox_RecMov",OBJPROP_XDISTANCE));
   ObjectSet("MMGTbox_Line11",OBJPROP_YDISTANCE,ObjectGet("MMGTbox_RecMov",OBJPROP_YDISTANCE)+160);
   ObjectSetString(0,"MMGTbox_Line11",OBJPROP_TOOLTIP,"Tp line On/Off   and follow the price");
   ObjectSetInteger(0,"MMGTbox_Line11",OBJPROP_SELECTABLE,false);
   ObjectSetInteger(0,"MMGTbox_Line11",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
   ObjectSetText("MMGTbox_Line11","    Show TP Line       Show SL Line       Follow price",10,"Courier New",ColorTextBox);
// TP button On/Off 
   if(CreateTP){onoff="On";onoffcolor=clrGreen;}else{onoff="Off";onoffcolor=clrRed;}
   ButtonCreate(0,"MMGTbox_TPButton",0,int(ObjectGet("MMGTbox_RecMov",OBJPROP_XDISTANCE)),int(ObjectGet("MMGTbox_RecMov",OBJPROP_YDISTANCE)+160),25,15,0,onoff,"Arial",10,onoffcolor,C'236,233,216',clrNONE,false,false,false,false,0);
   ObjectSetString(0,"MMGTbox_TPButton",OBJPROP_TOOLTIP,"Tp line On/Off");
   ObjectSetInteger(0,"MMGTbox_TPButton",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);

// Follow button
   if(followprice){YesNo="Yes";YesNocolor=clrGreen;}else{YesNo="No";YesNocolor=clrRed;}
   ButtonCreate(0,"MMGTbox_FollowButton",0,int(ObjectGet("MMGTbox_RecMov",OBJPROP_XDISTANCE)+300),int(ObjectGet("MMGTbox_RecMov",OBJPROP_YDISTANCE)+160),25,15,0,YesNo,"Arial",10,YesNocolor,C'236,233,216',clrNONE,false,false,false,false,0);
   ObjectSetString(0,"MMGTbox_FollowButton",OBJPROP_TOOLTIP,"Buy/Sell line follow the actual price");
   ObjectSetInteger(0,"MMGTbox_FollowButton",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);

// SL button On/Off 
   if(CreateSL){onoff="On";onoffcolor=clrGreen;}else{onoff="Off";onoffcolor=clrRed;}
   ButtonCreate(0,"MMGTbox_SLButton",0,int(ObjectGet("MMGTbox_RecMov",OBJPROP_XDISTANCE)+150),int(ObjectGet("MMGTbox_RecMov",OBJPROP_YDISTANCE)+160),25,15,0,onoff,"Arial",10,onoffcolor,C'236,233,216',clrNONE,false,false,false,false,0);
   ObjectSetString(0,"MMGTbox_SLButton",OBJPROP_TOOLTIP,"TL line On/Off");
   ObjectSetInteger(0,"MMGTbox_SLButton",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);

// Order button Sell / Buy / Buy limit / Buy stop / Sell limit / Sell stop 
   ButtonCreate(0,"MMGTbox_OrderButton",0,int(ObjectGet("MMGTbox_RecMov",OBJPROP_XDISTANCE)),int(ObjectGet("MMGTbox_RecMov",OBJPROP_YDISTANCE)+180),190,20,0,"","Arial",10,clrBlack,C'236,233,216',clrNONE,false,false,false,false,0);
   ObjectSetString(0,"MMGTbox_OrderButton",OBJPROP_TOOLTIP,"Order used Sandbox parameter");
   ObjectSetInteger(0,"MMGTbox_OrderButton",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
// Close/Abort
   ButtonCreate(0,"MMGTbox_Close",0,int(ObjectGet("MMGTbox_RecMov",OBJPROP_XDISTANCE)+416),int(ObjectGet("MMGTbox_RecMov",OBJPROP_YDISTANCE)+180),50,20,0,"Close","Arial",10,clrBlack,C'236,233,216',clrNONE,false,false,false,false,0);
   ObjectSetString(0,"MMGTbox_Close",OBJPROP_TOOLTIP,"Close this box and all lines");
   ObjectSetInteger(0,"MMGTbox_Close",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);

   ObjectCreate("MMGTbox_Line12",OBJ_LABEL,0,0,0);
   ObjectSet("MMGTbox_Line12",OBJPROP_XDISTANCE,ObjectGet("MMGTbox_RecMov",OBJPROP_XDISTANCE));
   ObjectSet("MMGTbox_Line12",OBJPROP_YDISTANCE,ObjectGet("MMGTbox_RecMov",OBJPROP_YDISTANCE)+210);
   ObjectSetString(0,"MMGTbox_Line12",OBJPROP_TOOLTIP,"Broker limit");
   ObjectSetInteger(0,"MMGTbox_Line12",OBJPROP_SELECTABLE,false);
   ObjectSetInteger(0,"MMGTbox_Line12",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
   ObjectSetText("MMGTbox_Line12","Min Lot:"+DoubleToString(MinimumLotSize,2)+" / Max Lot:"+DoubleToString(MaximumLot,2)+" / Step:"+DoubleToString(LotStep,2)+" / SL TP limit:"+DoubleToString((SLTPbrokerLimit/point*Point),1),8,"Courier New",ColorTextBox);

//Line 13
   ObjectCreate("MMGTbox_Line13",OBJ_LABEL,0,0,0);
   ObjectSet("MMGTbox_Line13",OBJPROP_XDISTANCE,ObjectGet("MMGTbox_RecMov",OBJPROP_XDISTANCE));
   ObjectSet("MMGTbox_Line13",OBJPROP_YDISTANCE,ObjectGet("MMGTbox_RecMov",OBJPROP_YDISTANCE)+185);
   ObjectSetString(0,"MMGTbox_Line13",OBJPROP_TOOLTIP,"");
   ObjectSetInteger(0,"MMGTbox_Line13",OBJPROP_SELECTABLE,false);
   ObjectSetInteger(0,"MMGTbox_Line13",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
   ObjectSetText("MMGTbox_Line13","if you want to open orders, you need Money_Manager_EA.mq4",8,"Courier New",ColorTextBox);

// ratio button 2 
   ButtonCreate(0,"MMGTbox_RatioButton2",0,int(ObjectGet("MMGTbox_RecMov",OBJPROP_XDISTANCE)+180),int(ObjectGet("MMGTbox_RecMov",OBJPROP_YDISTANCE)+27),12,12,0,"2","Arial",8,clrBlack,C'236,233,216',clrNONE,false,false,false,false,0);
   ObjectSetString(0,"MMGTbox_RatioButton2",OBJPROP_TOOLTIP,"ratio 1:2");
   ObjectSetInteger(0,"MMGTbox_RatioButton2",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
// ratio button 3 
   ButtonCreate(0,"MMGTbox_RatioButton3",0,int(ObjectGet("MMGTbox_RecMov",OBJPROP_XDISTANCE)+195),int(ObjectGet("MMGTbox_RecMov",OBJPROP_YDISTANCE)+27),12,12,0,"3","Arial",8,clrBlack,C'236,233,216',clrNONE,false,false,false,false,0);
   ObjectSetString(0,"MMGTbox_RatioButton3",OBJPROP_TOOLTIP,"ratio 1:3");
   ObjectSetInteger(0,"MMGTbox_RatioButton3",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
// ratio button 4 
   ButtonCreate(0,"MMGTbox_RatioButton4",0,int(ObjectGet("MMGTbox_RecMov",OBJPROP_XDISTANCE)+210),int(ObjectGet("MMGTbox_RecMov",OBJPROP_YDISTANCE)+27),12,12,0,"4","Arial",8,clrBlack,C'236,233,216',clrNONE,false,false,false,false,0);
   ObjectSetString(0,"MMGTbox_RatioButton4",OBJPROP_TOOLTIP,"ratio 1:4");
   ObjectSetInteger(0,"MMGTbox_RatioButton4",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);

   if(ObjectFind(0,"MMGT_"+Symbol()+"_Buy_Line")>-1)
     {
      calculatebuy();
     }

   if(ObjectFind(0,"MMGT_"+Symbol()+"_Sell_Line")>-1)
     {
      calculatesell();
     }
   ChartSetInteger(0,CHART_EVENT_MOUSE_MOVE,1);
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   int i;
   string objectline;
   double PipGap=0;
   string textline="";
//GlobalVariableGet("MMGT_"+Symbol()+"_Action")  MMGT = send //10=send
//GlobalVariableGet("MMGT_"+Symbol()+"_Action")  EA <=send   =>realised //20=realised
   if(GlobalVariableGet("MMGT_"+Symbol()+"_Action")==20)
     {
      GlobalVariableSet("MMGT_"+Symbol()+"_Action",0);//0=close
      ObjectSetInteger(0,"MMGTbox_RectLabel",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
      ObjectSetInteger(0,"MMGTbox_RecMov",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
      ObjectSetInteger(0,"MMGTbox_Line1",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
      ObjectSetInteger(0,"MMGTbox_Line2",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
      ObjectSetInteger(0,"MMGTbox_Line3",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
      ObjectSetInteger(0,"MMGTbox_Line4",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
      ObjectSetInteger(0,"MMGTbox_Line5",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
      ObjectSetInteger(0,"MMGTbox_Line6",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
      ObjectSetInteger(0,"MMGTbox_Line7",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
      ObjectSetInteger(0,"MMGTbox_RiskSizeButtonPlus",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
      ObjectSetInteger(0,"MMGTbox_RiskSizeButtonMinus",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
      ObjectSetInteger(0,"MMGTbox_Line8",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
      ObjectSetInteger(0,"MMGTbox_LotSizeButtonPlus",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
      ObjectSetInteger(0,"MMGTbox_LotSizeButtonMinus",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
      ObjectSetInteger(0,"MMGTbox_Line9",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
      ObjectSetInteger(0,"MMGTbox_Line10",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
      ObjectSetInteger(0,"MMGTbox_TPButton",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
      ObjectSetInteger(0,"MMGTbox_SLButton",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
      ObjectSetInteger(0,"MMGTbox_Line11",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
      ObjectSetInteger(0,"MMGTbox_FollowButton",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
      ObjectSetInteger(0,"MMGTbox_OrderButton",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
      ObjectSetInteger(0,"MMGTbox_Close",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
      ObjectSetInteger(0,"MMGTbox_Line12",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
      ObjectSetInteger(0,"MMGTbox_Line13",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
      ObjectSetInteger(0,"MMGTbox_RatioButton2",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
      ObjectSetInteger(0,"MMGTbox_RatioButton3",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
      ObjectSetInteger(0,"MMGTbox_RatioButton4",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
      ObjectDelete(0,"MMGT_"+Symbol()+"_TP_Line");
      ObjectDelete(0,"MMGT_"+Symbol()+"_TP_Label");
      ObjectDelete(0,"MMGT_"+Symbol()+"_SL_Line");
      ObjectDelete(0,"MMGT_"+Symbol()+"_SL_Label");
      ObjectDelete(0,"MMGT_"+Symbol()+"_Buy_Line");
      ObjectDelete(0,"MMGT_"+Symbol()+"_Buy_Label");
      ObjectDelete(0,"MMGT_"+Symbol()+"_Sell_Line");
      ObjectDelete(0,"MMGT_"+Symbol()+"_Sell_Label");
      sandboxlotsize=-1;
     }

   for(i=ObjectsTotal() -1; i>=0; i--)
     {
      if(StringFind(ObjectName(i),"MMGT_"+Symbol())>-1)
        {
         if(StringFind(ObjectName(i),"_Label")>-1)
           {
            objectline=ObjectName(i);
            StringReplace(objectline,"_Label","_Line");
            ObjectMove(0,ObjectName(i),0,labelposition,ObjectGet(objectline,OBJPROP_PRICE1));
            if(StringFind(objectline,"Buy_Line")>-1)
              {
               PipGap=(ObjectGet(objectline,OBJPROP_PRICE1)-MarketInfo(Symbol(),MODE_BID));
               ObjectSetString(0,ObjectName(i),OBJPROP_TEXT,"Buy at "+DoubleToString(ObjectGet(objectline,OBJPROP_PRICE1),Digits)+" / "+DoubleToString(PipGap/point,1)+" Pips from actual price");
               ObjectSetString(0,ObjectName(i),OBJPROP_TOOLTIP,"Buy at "+DoubleToString(ObjectGet(objectline,OBJPROP_PRICE1),Digits)+" / "+DoubleToString(PipGap/point,1)+" Pips from actual price");
               ObjectSetString(0,objectline,OBJPROP_TOOLTIP,"Buy at "+DoubleToString(ObjectGet(objectline,OBJPROP_PRICE1),Digits)+" / "+DoubleToString(PipGap/point,1)+" Pips from actual price");
              }
            if(StringFind(objectline,"Sell_Line")>-1)
              {
               PipGap=(ObjectGet(objectline,OBJPROP_PRICE1)-MarketInfo(Symbol(),MODE_ASK));
               ObjectSetString(0,ObjectName(i),OBJPROP_TEXT,"Sell at "+DoubleToString(ObjectGet(objectline,OBJPROP_PRICE1),Digits)+" / "+DoubleToString(PipGap/point,1)+" Pips from actual price");
               ObjectSetString(0,ObjectName(i),OBJPROP_TOOLTIP,"Sell at "+DoubleToString(ObjectGet(objectline,OBJPROP_PRICE1),Digits)+" / "+DoubleToString(PipGap/point,1)+" Pips from actual price");
               ObjectSetString(0,objectline,OBJPROP_TOOLTIP,"Sell at "+DoubleToString(ObjectGet(objectline,OBJPROP_PRICE1),Digits)+" / "+DoubleToString(PipGap/point,1)+" Pips from actual price");
              }
            if(StringFind(objectline,"SL_Line")>-1)
              {
               if(ObjectFind(0,"MMGT_"+Symbol()+"_Buy_Line")>-1)
                 {
                  textline="Buy";
                  PipGap=(ObjectGet("MMGT_"+Symbol()+"_SL_Label",OBJPROP_PRICE1)-ObjectGet("MMGT_"+Symbol()+"_Buy_Line",OBJPROP_PRICE1));
                 }
               if(ObjectFind(0,"MMGT_"+Symbol()+"_Sell_Line")>-1)
                 {
                  textline="Sell";
                  PipGap=(ObjectGet("MMGT_"+Symbol()+"_Sell_Line",OBJPROP_PRICE1)-ObjectGet("MMGT_"+Symbol()+"_SL_Line",OBJPROP_PRICE1));
                 }
               ObjectSetString(0,"MMGT_"+Symbol()+"_SL_Label",OBJPROP_TEXT,"SL at "+DoubleToString(ObjectGet("MMGT_"+Symbol()+"_SL_Line",OBJPROP_PRICE1),Digits)+" / "+DoubleToString(PipGap/point,1)+" Pips from "+textline);
               ObjectSetString(0,ObjectName(i),OBJPROP_TOOLTIP,"SL at "+DoubleToString(ObjectGet("MMGT_"+Symbol()+"_SL_Line",OBJPROP_PRICE1),Digits)+" / "+DoubleToString(PipGap/point,1)+" Pips from "+textline);
               ObjectSetString(0,objectline,OBJPROP_TOOLTIP,"SL at "+DoubleToString(ObjectGet("MMGT_"+Symbol()+"_SL_Line",OBJPROP_PRICE1),Digits)+" / "+DoubleToString(PipGap/point,1)+" Pips from "+textline);
              }
            if(StringFind(objectline,"TP_Line")>-1)
              {
               if(ObjectFind(0,"MMGT_"+Symbol()+"_Buy_Line")>-1)
                 {
                  textline="Buy";
                  PipGap=(ObjectGet("MMGT_"+Symbol()+"_TP_Label",OBJPROP_PRICE1)-ObjectGet("MMGT_"+Symbol()+"_Buy_Line",OBJPROP_PRICE1));
                 }
               if(ObjectFind(0,"MMGT_"+Symbol()+"_Sell_Line")>-1)
                 {
                  textline="Sell";
                  PipGap=(ObjectGet("MMGT_"+Symbol()+"_Sell_Line",OBJPROP_PRICE1)-ObjectGet("MMGT_"+Symbol()+"_TP_Line",OBJPROP_PRICE1));
                 }

               ObjectSetString(0,"MMGT_"+Symbol()+"_TP_Label",OBJPROP_TEXT,"TP at "+DoubleToString(ObjectGet("MMGT_"+Symbol()+"_TP_Line",OBJPROP_PRICE1),Digits)+" / "+DoubleToString(PipGap/point,1)+" Pips from "+textline);
               ObjectSetString(0,ObjectName(i),OBJPROP_TOOLTIP,"TP at "+DoubleToString(ObjectGet("MMGT_"+Symbol()+"_TP_Line",OBJPROP_PRICE1),Digits)+" / "+DoubleToString(PipGap/point,1)+" Pips from "+textline);
               ObjectSetString(0,objectline,OBJPROP_TOOLTIP,"TP at "+DoubleToString(ObjectGet("MMGT_"+Symbol()+"_TP_Line",OBJPROP_PRICE1),Digits)+" / "+DoubleToString(PipGap/point,1)+" Pips from "+textline);
              }
           }
        }
     }
   if(followprice)
     {
      if(ObjectFind(0,"MMGT_"+Symbol()+"_Buy_Line")>-1)
        {
         HLineMove(0,"MMGT_"+Symbol()+"_Buy_Line",MarketInfo(Symbol(),MODE_ASK));
         ObjectMove(0,"MMGT_"+Symbol()+"_Buy_Label",0,labelposition,MarketInfo(Symbol(),MODE_ASK));
         HLineMove(0,"MMGT_"+Symbol()+"_SL_Line",MarketInfo(Symbol(),MODE_ASK)-SLPips);
         ObjectMove(0,"MMGT_"+Symbol()+"_SL_Label",0,labelposition,MarketInfo(Symbol(),MODE_ASK)-SLPips);
         if(CreateTP)
           {
            HLineMove(0,"MMGT_"+Symbol()+"_TP_Line",MarketInfo(Symbol(),MODE_ASK)+TPPips);
            ObjectMove(0,"MMGT_"+Symbol()+"_TP_Label",0,labelposition,MarketInfo(Symbol(),MODE_ASK)+TPPips);
           }
        }
      if(ObjectFind(0,"MMGT_"+Symbol()+"_Sell_Line")>-1)
        {
         HLineMove(0,"MMGT_"+Symbol()+"_Sell_Line",MarketInfo(Symbol(),MODE_BID));
         ObjectMove(0,"MMGT_"+Symbol()+"_Sell_Label",0,labelposition,MarketInfo(Symbol(),MODE_BID));
         HLineMove(0,"MMGT_"+Symbol()+"_SL_Line",MarketInfo(Symbol(),MODE_BID)+SLPips);
         ObjectMove(0,"MMGT_"+Symbol()+"_SL_Label",0,labelposition,MarketInfo(Symbol(),MODE_BID)+SLPips);
         if(CreateTP)
           {
            HLineMove(0,"MMGT_"+Symbol()+"_TP_Line",MarketInfo(Symbol(),MODE_BID)-TPPips);
            ObjectMove(0,"MMGT_"+Symbol()+"_TP_Label",0,labelposition,MarketInfo(Symbol(),MODE_BID)-TPPips);
           }
        }
     }
   if(GlobalVariableGet("MMGT_EA")==1 && ObjectFind(0,"MMGT_"+Symbol()+"_SL_Line")>-1)
     {
      if(!TerminalInfoInteger(TERMINAL_TRADE_ALLOWED))
        {
         ObjectSetText("MMGTbox_Line13","Check if automated trading is allowed in the terminal settings!",8,"Courier New",ColorTextBox);
         ObjectSetInteger(0,"MMGTbox_OrderButton",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
         ObjectSetInteger(0,"MMGTbox_Line13",OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);
        }
      else
        {
         ObjectSetInteger(0,"MMGTbox_OrderButton",OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);
         ObjectSetInteger(0,"MMGTbox_Line13",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
        }
     }
   else
     {
      if(ObjectFind(0,"MMGT_"+Symbol()+"_SL_Line")>-1)
        {
         ObjectSetInteger(0,"MMGTbox_OrderButton",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
         ObjectSetInteger(0,"MMGTbox_Line13",OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);
        }
     }

   return(rates_total);
  }
//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
   datetime dt    =0;
   double   value =0;
   int      window=0;
   int      i=1;
   int      k=1;
   double   PipGap;
   double   SLprice;
   double   TPprice;

   if(id==CHARTEVENT_OBJECT_DRAG)
     {
      if(sparam=="MMGTbox_RecMov")
        {
         ObjectSet("MMGTbox_RectLabel",OBJPROP_XDISTANCE,ObjectGet("MMGTbox_RecMov",OBJPROP_XDISTANCE)-10);
         ObjectSet("MMGTbox_RectLabel",OBJPROP_YDISTANCE,ObjectGet("MMGTbox_RecMov",OBJPROP_YDISTANCE)-10);
         ObjectSet("MMGTbox_Line1",OBJPROP_XDISTANCE,ObjectGet("MMGTbox_RecMov",OBJPROP_XDISTANCE));
         ObjectSet("MMGTbox_Line1",OBJPROP_YDISTANCE,ObjectGet("MMGTbox_RecMov",OBJPROP_YDISTANCE)+10);
         ObjectSet("MMGTbox_Line2",OBJPROP_XDISTANCE,ObjectGet("MMGTbox_RecMov",OBJPROP_XDISTANCE));
         ObjectSet("MMGTbox_Line2",OBJPROP_YDISTANCE,ObjectGet("MMGTbox_RecMov",OBJPROP_YDISTANCE)+25);
         ObjectSet("MMGTbox_Line3",OBJPROP_XDISTANCE,ObjectGet("MMGTbox_RecMov",OBJPROP_XDISTANCE));
         ObjectSet("MMGTbox_Line3",OBJPROP_YDISTANCE,ObjectGet("MMGTbox_RecMov",OBJPROP_YDISTANCE)+40);
         ObjectSet("MMGTbox_Line4",OBJPROP_XDISTANCE,ObjectGet("MMGTbox_RecMov",OBJPROP_XDISTANCE));
         ObjectSet("MMGTbox_Line4",OBJPROP_YDISTANCE,ObjectGet("MMGTbox_RecMov",OBJPROP_YDISTANCE)+55);
         ObjectSet("MMGTbox_Line5",OBJPROP_XDISTANCE,ObjectGet("MMGTbox_RecMov",OBJPROP_XDISTANCE));
         ObjectSet("MMGTbox_Line5",OBJPROP_YDISTANCE,ObjectGet("MMGTbox_RecMov",OBJPROP_YDISTANCE)+70);
         ObjectSet("MMGTbox_Line6",OBJPROP_XDISTANCE,ObjectGet("MMGTbox_RecMov",OBJPROP_XDISTANCE));
         ObjectSet("MMGTbox_Line6",OBJPROP_YDISTANCE,ObjectGet("MMGTbox_RecMov",OBJPROP_YDISTANCE)+85);
         ObjectSet("MMGTbox_Line7",OBJPROP_XDISTANCE,ObjectGet("MMGTbox_RecMov",OBJPROP_XDISTANCE));
         ObjectSet("MMGTbox_Line7",OBJPROP_YDISTANCE,ObjectGet("MMGTbox_RecMov",OBJPROP_YDISTANCE)+100);
         ObjectSet("MMGTbox_RiskSizeButtonPlus",OBJPROP_XDISTANCE,ObjectGet("MMGTbox_RecMov",OBJPROP_XDISTANCE)+80);
         ObjectSet("MMGTbox_RiskSizeButtonPlus",OBJPROP_YDISTANCE,ObjectGet("MMGTbox_RecMov",OBJPROP_YDISTANCE)+102);
         ObjectSet("MMGTbox_RiskSizeButtonMinus",OBJPROP_XDISTANCE,ObjectGet("MMGTbox_RecMov",OBJPROP_XDISTANCE)+90);
         ObjectSet("MMGTbox_RiskSizeButtonMinus",OBJPROP_YDISTANCE,ObjectGet("MMGTbox_RecMov",OBJPROP_YDISTANCE)+102);
         ObjectSet("MMGTbox_Line8",OBJPROP_XDISTANCE,ObjectGet("MMGTbox_RecMov",OBJPROP_XDISTANCE));
         ObjectSet("MMGTbox_Line8",OBJPROP_YDISTANCE,ObjectGet("MMGTbox_RecMov",OBJPROP_YDISTANCE)+115);
         ObjectSet("MMGTbox_LotSizeButtonPlus",OBJPROP_XDISTANCE,ObjectGet("MMGTbox_RecMov",OBJPROP_XDISTANCE)+80);
         ObjectSet("MMGTbox_LotSizeButtonPlus",OBJPROP_YDISTANCE,ObjectGet("MMGTbox_RecMov",OBJPROP_YDISTANCE)+117);
         ObjectSet("MMGTbox_LotSizeButtonMinus",OBJPROP_XDISTANCE,ObjectGet("MMGTbox_RecMov",OBJPROP_XDISTANCE)+90);
         ObjectSet("MMGTbox_LotSizeButtonMinus",OBJPROP_YDISTANCE,ObjectGet("MMGTbox_RecMov",OBJPROP_YDISTANCE)+117);
         ObjectSet("MMGTbox_Line9",OBJPROP_XDISTANCE,ObjectGet("MMGTbox_RecMov",OBJPROP_XDISTANCE));
         ObjectSet("MMGTbox_Line9",OBJPROP_YDISTANCE,ObjectGet("MMGTbox_RecMov",OBJPROP_YDISTANCE)+130);
         ObjectSet("MMGTbox_Line10",OBJPROP_XDISTANCE,ObjectGet("MMGTbox_RecMov",OBJPROP_XDISTANCE));
         ObjectSet("MMGTbox_Line10",OBJPROP_YDISTANCE,ObjectGet("MMGTbox_RecMov",OBJPROP_YDISTANCE)+145);
         ObjectSet("MMGTbox_TPButton",OBJPROP_XDISTANCE,ObjectGet("MMGTbox_RecMov",OBJPROP_XDISTANCE));
         ObjectSet("MMGTbox_TPButton",OBJPROP_YDISTANCE,ObjectGet("MMGTbox_RecMov",OBJPROP_YDISTANCE)+160);
         ObjectSet("MMGTbox_SLButton",OBJPROP_XDISTANCE,ObjectGet("MMGTbox_RecMov",OBJPROP_XDISTANCE)+150);
         ObjectSet("MMGTbox_SLButton",OBJPROP_YDISTANCE,ObjectGet("MMGTbox_RecMov",OBJPROP_YDISTANCE)+160);
         ObjectSet("MMGTbox_Line11",OBJPROP_XDISTANCE,ObjectGet("MMGTbox_RecMov",OBJPROP_XDISTANCE));
         ObjectSet("MMGTbox_Line11",OBJPROP_YDISTANCE,ObjectGet("MMGTbox_RecMov",OBJPROP_YDISTANCE)+160);
         ObjectSet("MMGTbox_FollowButton",OBJPROP_XDISTANCE,ObjectGet("MMGTbox_RecMov",OBJPROP_XDISTANCE)+300);
         ObjectSet("MMGTbox_FollowButton",OBJPROP_YDISTANCE,ObjectGet("MMGTbox_RecMov",OBJPROP_YDISTANCE)+160);
         ObjectSet("MMGTbox_OrderButton",OBJPROP_XDISTANCE,ObjectGet("MMGTbox_RecMov",OBJPROP_XDISTANCE));
         ObjectSet("MMGTbox_OrderButton",OBJPROP_YDISTANCE,ObjectGet("MMGTbox_RecMov",OBJPROP_YDISTANCE)+180);
         ObjectSet("MMGTbox_Close",OBJPROP_XDISTANCE,ObjectGet("MMGTbox_RecMov",OBJPROP_XDISTANCE)+416);
         ObjectSet("MMGTbox_Close",OBJPROP_YDISTANCE,ObjectGet("MMGTbox_RecMov",OBJPROP_YDISTANCE)+180);
         ObjectSet("MMGTbox_Line12",OBJPROP_XDISTANCE,ObjectGet("MMGTbox_RecMov",OBJPROP_XDISTANCE));
         ObjectSet("MMGTbox_Line12",OBJPROP_YDISTANCE,ObjectGet("MMGTbox_RecMov",OBJPROP_YDISTANCE)+210);
         ObjectSet("MMGTbox_Line13",OBJPROP_XDISTANCE,ObjectGet("MMGTbox_RecMov",OBJPROP_XDISTANCE));
         ObjectSet("MMGTbox_Line13",OBJPROP_YDISTANCE,ObjectGet("MMGTbox_RecMov",OBJPROP_YDISTANCE)+185);
         ObjectSet("MMGTbox_RatioButton2",OBJPROP_XDISTANCE,ObjectGet("MMGTbox_RecMov",OBJPROP_XDISTANCE)+180);
         ObjectSet("MMGTbox_RatioButton2",OBJPROP_YDISTANCE,ObjectGet("MMGTbox_RecMov",OBJPROP_YDISTANCE)+27);
         ObjectSet("MMGTbox_RatioButton3",OBJPROP_XDISTANCE,ObjectGet("MMGTbox_RecMov",OBJPROP_XDISTANCE)+195);
         ObjectSet("MMGTbox_RatioButton3",OBJPROP_YDISTANCE,ObjectGet("MMGTbox_RecMov",OBJPROP_YDISTANCE)+27);
         ObjectSet("MMGTbox_RatioButton4",OBJPROP_XDISTANCE,ObjectGet("MMGTbox_RecMov",OBJPROP_XDISTANCE)+210);
         ObjectSet("MMGTbox_RatioButton4",OBJPROP_YDISTANCE,ObjectGet("MMGTbox_RecMov",OBJPROP_YDISTANCE)+27);
        }
      if(StringFind(sparam,"MMGT_"+Symbol()+"_Buy_Line")>-1)
        {
         ObjectMove(0,"MMGT_"+Symbol()+"_Buy_Label",0,labelposition,ObjectGet("MMGT_"+Symbol()+"_Buy_Line",OBJPROP_PRICE1));
         HLineMove(0,"MMGT_"+Symbol()+"_SL_Line",ObjectGet("MMGT_"+Symbol()+"_Buy_Line",OBJPROP_PRICE1)-SLPips);
         ObjectMove(0,"MMGT_"+Symbol()+"_SL_Label",0,labelposition,ObjectGet("MMGT_"+Symbol()+"_Buy_Line",OBJPROP_PRICE1)-SLPips);
         if(CreateTP)
           {
            HLineMove(0,"MMGT_"+Symbol()+"_TP_Line",ObjectGet("MMGT_"+Symbol()+"_Buy_Line",OBJPROP_PRICE1)+TPPips);
            ObjectMove(0,"MMGT_"+Symbol()+"_TP_Label",0,labelposition,ObjectGet("MMGT_"+Symbol()+"_Buy_Line",OBJPROP_PRICE1)+TPPips);
           }
         calculatebuy();
        }
      if(StringFind(sparam,"MMGT_"+Symbol()+"_Sell_Line")>-1)
        {
         ObjectMove(0,"MMGT_"+Symbol()+"_Sell_Label",0,labelposition,ObjectGet("MMGT_"+Symbol()+"_Sell_Line",OBJPROP_PRICE1));
         HLineMove(0,"MMGT_"+Symbol()+"_SL_Line",ObjectGet("MMGT_"+Symbol()+"_Sell_Line",OBJPROP_PRICE1)+SLPips);
         ObjectMove(0,"MMGT_"+Symbol()+"_SL_Label",0,labelposition,ObjectGet("MMGT_"+Symbol()+"_Sell_Line",OBJPROP_PRICE1)+SLPips);
         if(CreateTP)
           {
            HLineMove(0,"MMGT_"+Symbol()+"_TP_Line",ObjectGet("MMGT_"+Symbol()+"_Sell_Line",OBJPROP_PRICE1)-TPPips);
            ObjectMove(0,"MMGT_"+Symbol()+"_TP_Label",0,labelposition,ObjectGet("MMGT_"+Symbol()+"_Sell_Line",OBJPROP_PRICE1)-TPPips);
           }
         calculatesell();
        }
      if(StringFind(sparam,"MMGT_"+Symbol()+"_TP_Line")>-1)
        {
         ObjectMove(0,"MMGT_"+Symbol()+"_TP_Label",0,labelposition,ObjectGet("MMGT_"+Symbol()+"_TP_Line",OBJPROP_PRICE1));
         if(ObjectFind(0,"MMGT_"+Symbol()+"_Buy_Line")>-1)
           {
            calculatebuy();
           }
         if(ObjectFind(0,"MMGT_"+Symbol()+"_Sell_Line")>-1)
           {
            calculatesell();
           }
        }
      if(StringFind(sparam,"MMGT_"+Symbol()+"_SL_Line")>-1)
        {
         ObjectMove(0,"MMGT_"+Symbol()+"_SL_Label",0,labelposition,ObjectGet("MMGT_"+Symbol()+"_SL_Line",OBJPROP_PRICE1));
         if(ObjectFind(0,"MMGT_"+Symbol()+"_Buy_Line")>-1)
           {
            calculatebuy();
           }
         if(ObjectFind(0,"MMGT_"+Symbol()+"_Sell_Line")>-1)
           {
            calculatesell();
           }
        }

      if(StringFind(sparam,"MMGT_"+Symbol())>-1)
        {
         if(ObjectFind(0,"MMGT_"+Symbol()+"_Buy_Line")>-1)
           {
            calculatebuy();
           }
         if(ObjectFind(0,"MMGT_"+Symbol()+"_Sell_Line")>-1)
           {
            calculatesell();
           }
        }
     }

   if(id==CHARTEVENT_CHART_CHANGE)
     {
      if(ratioposition==0)
        {
         ratioposition=0.7;
        }
      if(WindowFirstVisibleBar()>0)
        {
         int newbarpos = int(WindowFirstVisibleBar()*ratioposition);
         labelposition = Time[newbarpos];
        }
     }

   if(id==CHARTEVENT_KEYDOWN)
     {
      if(lparam==(StringGetChar(BuyLine,0)))
        {
         if(ObjectFind(0,"MMGT_"+Symbol()+"_Sell_Line")>-1)
           {
            ObjectDelete(0,"MMGT_"+Symbol()+"_TP_Line");
            ObjectDelete(0,"MMGT_"+Symbol()+"_TP_Label");
            ObjectDelete(0,"MMGT_"+Symbol()+"_SL_Line");
            ObjectDelete(0,"MMGT_"+Symbol()+"_SL_Label");
            ObjectDelete(0,"MMGT_"+Symbol()+"_Sell_Line");
            ObjectDelete(0,"MMGT_"+Symbol()+"_Sell_Label");
           }
         //Buy Line
         if(MathMod(price,MarketInfo(Symbol(),MODE_TICKSIZE))>0)
           {
            price=MathRound(price/MarketInfo(Symbol(),MODE_TICKSIZE))*MarketInfo(Symbol(),MODE_TICKSIZE);
           }
         HLineCreate(0,"MMGT_"+Symbol()+"_Buy_Line",0,price,ColorBuySell,LineStyle,Linewidth,false,true,false,0,TimeToString(TimeCurrent(),TIME_DATE));
         ObjectCreate("MMGT_"+Symbol()+"_Buy_Label",OBJ_TEXT,0,labelposition,ObjectGet("MMGT_"+Symbol()+"_Buy_Line",OBJPROP_PRICE1));
         ObjectMove(0,"MMGT_"+Symbol()+"_Buy_Label",0,labelposition,ObjectGet("MMGT_"+Symbol()+"_Buy_Line",OBJPROP_PRICE1));
         PipGap=(ObjectGet("MMGT_"+Symbol()+"_Buy_Label",OBJPROP_PRICE1)-MarketInfo(Symbol(),MODE_BID));
         ObjectSetText("MMGT_"+Symbol()+"_Buy_Label",DoubleToString(ObjectGet("MMGT_"+Symbol()+"_Buy_Line",OBJPROP_PRICE1),Digits)+" / "+DoubleToString(PipGap/point,1)+" Pips from actual price",10,"Courier New",ColorBuySell);
         //SL Line
         if(Digits==4 || Digits==5)
           {
            SLprice=price -(DefaultSL/10000);
           }
         else if(Digits==2 || Digits==3)
           {
            SLprice=price -(DefaultSL/100);
           }
         else
           {
            SLprice=price -(DefaultSL/1);
           }
         PipGap=(SLprice-ObjectGet("MMGT_"+Symbol()+"_Buy_Line",OBJPROP_PRICE1));
         HLineCreate(0,"MMGT_"+Symbol()+"_SL_Line",0,SLprice,ColorSL,LineStyle,Linewidth,false,true,false,0,TimeToString(TimeCurrent(),TIME_DATE));
         ObjectCreate("MMGT_"+Symbol()+"_SL_Label",OBJ_TEXT,0,labelposition,ObjectGet("MMGT_"+Symbol()+"_SL_Line",OBJPROP_PRICE1));
         ObjectMove(0,"MMGT_"+Symbol()+"_SL_Label",0,labelposition,ObjectGet("MMGT_"+Symbol()+"_SL_Line",OBJPROP_PRICE1));
         ObjectSetText("MMGT_"+Symbol()+"_SL_Label","SL at "+DoubleToString(ObjectGet("MMGT_"+Symbol()+"_SL_Line",OBJPROP_PRICE1),Digits)+" / "+DoubleToString(PipGap/point,1)+" Pips from Buy",10,"Courier New",ColorSL);
         //TakeProfit
         //SL Line
         if(Digits==4 || Digits==5)
           {
            TPprice=price+(DefaultSL*2/10000);
           }
         else if(Digits==2 || Digits==3)
           {
            TPprice=price+(DefaultSL*2/100);
           }
         else
           {
            TPprice=price+(DefaultSL*2/1);
           }
         if(CreateTP)
           {
            PipGap=(TPprice-ObjectGet("MMGT_"+Symbol()+"_Buy_Line",OBJPROP_PRICE1));
            HLineCreate(0,"MMGT_"+Symbol()+"_TP_Line",0,TPprice,ColorTP,LineStyle,Linewidth,false,true,false,0,TimeToString(TimeCurrent(),TIME_DATE));
            ObjectCreate("MMGT_"+Symbol()+"_TP_Label",OBJ_TEXT,0,labelposition,ObjectGet("MMGT_"+Symbol()+"_TP_Line",OBJPROP_PRICE1));
            ObjectMove(0,"MMGT_"+Symbol()+"_TP_Label",0,labelposition,ObjectGet("MMGT_"+Symbol()+"_TP_Line",OBJPROP_PRICE1));
            ObjectSetText("MMGT_"+Symbol()+"_TP_Label","TP at "+DoubleToString(ObjectGet("MMGT_"+Symbol()+"_TP_Line",OBJPROP_PRICE1),Digits)+" / "+DoubleToString(PipGap/point,1)+" Pips from Buy",10,"Courier New",ColorTP);
           }
         if(CreateTP)
           {
            SLPips = MathAbs(ObjectGet("MMGT_"+Symbol()+"_SL_Line",OBJPROP_PRICE1)-ObjectGet("MMGT_"+Symbol()+"_Buy_Line",OBJPROP_PRICE1));
            TPPips = MathAbs(ObjectGet("MMGT_"+Symbol()+"_TP_Line",OBJPROP_PRICE1)-ObjectGet("MMGT_"+Symbol()+"_Buy_Line",OBJPROP_PRICE1));
            ratio="1:"+DoubleToString((TPPips/SLPips),1);
           }
         else
           {
            ratio="no TP";
           }

         calculatebuy();
        }

      if(lparam==(StringGetChar(SellLine,0)))
        {
         if(ObjectFind(0,"MMGT_"+Symbol()+"_Buy_Line")>-1)
           {
            ObjectDelete(0,"MMGT_"+Symbol()+"_TP_Line");
            ObjectDelete(0,"MMGT_"+Symbol()+"_TP_Label");
            ObjectDelete(0,"MMGT_"+Symbol()+"_SL_Line");
            ObjectDelete(0,"MMGT_"+Symbol()+"_SL_Label");
            ObjectDelete(0,"MMGT_"+Symbol()+"_Buy_Line");
            ObjectDelete(0,"MMGT_"+Symbol()+"_Buy_Label");
           }
         //Sell Line
         if(MathMod(price,MarketInfo(Symbol(),MODE_TICKSIZE))>0)
           {
            price=MathRound(price/MarketInfo(Symbol(),MODE_TICKSIZE))*MarketInfo(Symbol(),MODE_TICKSIZE);
           }
         HLineCreate(0,"MMGT_"+Symbol()+"_Sell_Line",0,price,ColorBuySell,LineStyle,Linewidth,false,true,false,0,TimeToString(TimeCurrent(),TIME_DATE));
         ObjectCreate("MMGT_"+Symbol()+"_Sell_Label",OBJ_TEXT,0,labelposition,ObjectGet("MMGT_"+Symbol()+"_Sell_Line",OBJPROP_PRICE1));
         ObjectMove(0,"MMGT_"+Symbol()+"_Sell_Label",0,labelposition,ObjectGet("MMGT_"+Symbol()+"_Sell_Line",OBJPROP_PRICE1));
         PipGap=(ObjectGet("MMGT_"+Symbol()+"_Sell_Label",OBJPROP_PRICE1)-MarketInfo(Symbol(),MODE_BID));
         ObjectSetText("MMGT_"+Symbol()+"_Sell_Label",DoubleToString(ObjectGet("MMGT_"+Symbol()+"_Sell_Line",OBJPROP_PRICE1),Digits)+" / "+DoubleToString(PipGap/point,1)+" Pips from actual price",10,"Courier New",ColorBuySell);
         //SL Line
         if(Digits==4 || Digits==5)
           {
            SLprice=price+(DefaultSL/10000);
           }
         else  if(Digits==2 || Digits==3)
           {
            SLprice=price+(DefaultSL/100);
           }
         else
           {
            SLprice=price+(DefaultSL/1);
           }
         PipGap=(ObjectGet("MMGT_"+Symbol()+"_Sell_Line",OBJPROP_PRICE1)-SLprice);
         HLineCreate(0,"MMGT_"+Symbol()+"_SL_Line",0,SLprice,ColorSL,LineStyle,Linewidth,false,true,false,0,TimeToString(TimeCurrent(),TIME_DATE));
         ObjectCreate("MMGT_"+Symbol()+"_SL_Label",OBJ_TEXT,0,labelposition,ObjectGet("MMGT_"+Symbol()+"_SL_Line",OBJPROP_PRICE1));
         ObjectMove(0,"MMGT_"+Symbol()+"_SL_Label",0,labelposition,ObjectGet("MMGT_"+Symbol()+"_SL_Line",OBJPROP_PRICE1));
         ObjectSetText("MMGT_"+Symbol()+"_SL_Label","SL at "+DoubleToString(ObjectGet("MMGT_"+Symbol()+"_SL_Line",OBJPROP_PRICE1),Digits)+" / "+DoubleToString(PipGap/point,1)+" Pips from Sell",10,"Courier New",ColorSL);
         //TakeProfit
         //SL Line
         if(Digits==4 || Digits==5)
           {
            TPprice=price-(DefaultSL*2/10000);
           }
         else if(Digits==2 || Digits==3)
           {
            TPprice=price-(DefaultSL*2/100);
           }
         else
           {
            TPprice=price -(DefaultSL*2/1);
           }
         if(CreateTP)
           {
            PipGap=(ObjectGet("MMGT_"+Symbol()+"_Sell_Line",OBJPROP_PRICE1)-TPprice);
            HLineCreate(0,"MMGT_"+Symbol()+"_TP_Line",0,TPprice,ColorTP,LineStyle,Linewidth,false,true,false,0,TimeToString(TimeCurrent(),TIME_DATE));
            ObjectCreate("MMGT_"+Symbol()+"_TP_Label",OBJ_TEXT,0,labelposition,ObjectGet("MMGT_"+Symbol()+"_TP_Line",OBJPROP_PRICE1));
            ObjectMove(0,"MMGT_"+Symbol()+"_TP_Label",0,labelposition,ObjectGet("MMGT_"+Symbol()+"_TP_Line",OBJPROP_PRICE1));
            ObjectSetText("MMGT_"+Symbol()+"_TP_Label","TP at "+DoubleToString(ObjectGet("MMGT_"+Symbol()+"_TP_Line",OBJPROP_PRICE1),Digits)+" / "+DoubleToString(PipGap/point,1)+" Pips from Sell",10,"Courier New",ColorTP);
           }
         if(CreateTP)
           {
            SLPips = MathAbs(ObjectGet("MMGT_"+Symbol()+"_SL_Line",OBJPROP_PRICE1)-ObjectGet("MMGT_"+Symbol()+"_Sell_Line",OBJPROP_PRICE1));
            TPPips = MathAbs(ObjectGet("MMGT_"+Symbol()+"_TP_Line",OBJPROP_PRICE1)-ObjectGet("MMGT_"+Symbol()+"_Sell_Line",OBJPROP_PRICE1));
            ratio="1:"+DoubleToString((TPPips/SLPips),1);
           }
         else
           {
            ratio="no TP";
           }

         calculatesell();
        }
     }
   if(id==CHARTEVENT_OBJECT_CLICK)
     {
      if(sparam=="MMGTbox_RiskSizeButtonPlus")
        {
         ObjectSetInteger(0,"MMGTbox_RiskSizeButtonPlus",OBJPROP_STATE,false);
         sandboxrisk=sandboxrisk+0.1;

         if(ObjectFind(0,"MMGT_"+Symbol()+"_Buy_Line")>-1)
           {
            sandboxlotsize=NormalizeDouble((double(AccountInfoDouble(accounttype))/100*sandboxrisk)/((SLPips/point))/PipValuesonelot,2);
            calculatebuy();
           }
         if(ObjectFind(0,"MMGT_"+Symbol()+"_Sell_Line")>-1)
           {
            sandboxlotsize=NormalizeDouble((double(AccountInfoDouble(accounttype))/100*sandboxrisk)/((SLPips/point))/PipValuesonelot,2);
            calculatesell();
           }
        }
      if(sparam=="MMGTbox_RiskSizeButtonMinus")
        {
         ObjectSetInteger(0,"MMGTbox_RiskSizeButtonMinus",OBJPROP_STATE,false);
         sandboxrisk=sandboxrisk-0.1;

         if(ObjectFind(0,"MMGT_"+Symbol()+"_Buy_Line")>-1)
           {
            sandboxlotsize=NormalizeDouble((double(AccountInfoDouble(accounttype))/100*sandboxrisk)/((SLPips/point))/PipValuesonelot,2);
            calculatebuy();
           }
         if(ObjectFind(0,"MMGT_"+Symbol()+"_Sell_Line")>-1)
           {
            sandboxlotsize=NormalizeDouble((double(AccountInfoDouble(accounttype))/100*sandboxrisk)/((SLPips/point))/PipValuesonelot,2);
            calculatesell();
           }
        }
      if(sparam=="MMGTbox_LotSizeButtonPlus")
        {
         ObjectSetInteger(0,"MMGTbox_LotSizeButtonPlus",OBJPROP_STATE,false);
         sandboxlotsize=sandboxlotsize+LotStep;
         if(ObjectFind(0,"MMGT_"+Symbol()+"_Buy_Line")>-1)
           {
            if((double(AccountInfoDouble(accounttype))/100*sandboxrisk)<((SLPips*(((MarketInfo(Symbol(),MODE_TICKVALUE)*point)/MarketInfo(Symbol(),MODE_TICKSIZE))*sandboxlotsize))/point))
              {
               for(;!IsStopped();)
                 {
                  sandboxrisk=sandboxrisk+LotStep;
                  if((double(AccountInfoDouble(accounttype))/100*sandboxrisk)>((SLPips*(((MarketInfo(Symbol(),MODE_TICKVALUE)*point)/MarketInfo(Symbol(),MODE_TICKSIZE))*sandboxlotsize))/point)) break;
                 }
              }
            calculatebuy();
           }
         if(ObjectFind(0,"MMGT_"+Symbol()+"_Sell_Line")>-1)
           {
            if((double(AccountInfoDouble(accounttype))/100*sandboxrisk)<((SLPips*(((MarketInfo(Symbol(),MODE_TICKVALUE)*point)/MarketInfo(Symbol(),MODE_TICKSIZE))*sandboxlotsize))/point))
              {
               for(;!IsStopped();)
                 {
                  sandboxrisk=sandboxrisk+LotStep;
                  if((double(AccountInfoDouble(accounttype))/100*sandboxrisk)>((SLPips*(((MarketInfo(Symbol(),MODE_TICKVALUE)*point)/MarketInfo(Symbol(),MODE_TICKSIZE))*sandboxlotsize))/point)) break;
                 }
              }
            calculatesell();
           }
        }
      if(sparam=="MMGTbox_LotSizeButtonMinus")
        {
         ObjectSetInteger(0,"MMGTbox_LotSizeButtonMinus",OBJPROP_STATE,false);
         sandboxlotsize=sandboxlotsize-LotStep;
         if(ObjectFind(0,"MMGT_"+Symbol()+"_Buy_Line")>-1)
           {
            calculatebuy();
           }
         if(ObjectFind(0,"MMGT_"+Symbol()+"_Sell_Line")>-1)
           {
            calculatesell();
           }
        }
      if(sparam=="MMGTbox_RatioButton2")
        {
         ObjectSetInteger(0,"MMGTbox_RatioButton2",OBJPROP_STATE,false);
         if(ObjectFind(0,"MMGT_"+Symbol()+"_Buy_Line")>-1)
           {
            SLPips=MathAbs(ObjectGet("MMGT_"+Symbol()+"_SL_Line",OBJPROP_PRICE1)-ObjectGet("MMGT_"+Symbol()+"_Buy_Line",OBJPROP_PRICE1));
            HLineMove(0,"MMGT_"+Symbol()+"_TP_Line",ObjectGet("MMGT_"+Symbol()+"_Buy_Line",OBJPROP_PRICE1)+(SLPips*2));
            ObjectMove(0,"MMGT_"+Symbol()+"_TP_Label",0,labelposition,ObjectGet("MMGT_"+Symbol()+"_Buy_Line",OBJPROP_PRICE1)+(SLPips*2));
            calculatebuy();
           }
         if(ObjectFind(0,"MMGT_"+Symbol()+"_Sell_Line")>-1)
           {
            SLPips=MathAbs(ObjectGet("MMGT_"+Symbol()+"_SL_Line",OBJPROP_PRICE1)-ObjectGet("MMGT_"+Symbol()+"_Sell_Line",OBJPROP_PRICE1));
            HLineMove(0,"MMGT_"+Symbol()+"_TP_Line",ObjectGet("MMGT_"+Symbol()+"_Sell_Line",OBJPROP_PRICE1)-(SLPips*2));
            ObjectMove(0,"MMGT_"+Symbol()+"_TP_Label",0,labelposition,ObjectGet("MMGT_"+Symbol()+"_Sell_Line",OBJPROP_PRICE1)-(SLPips*2));
            calculatesell();
           }
        }
      if(sparam=="MMGTbox_RatioButton3")
        {
         ObjectSetInteger(0,"MMGTbox_RatioButton3",OBJPROP_STATE,false);
         if(ObjectFind(0,"MMGT_"+Symbol()+"_Buy_Line")>-1)
           {
            SLPips=MathAbs(ObjectGet("MMGT_"+Symbol()+"_SL_Line",OBJPROP_PRICE1)-ObjectGet("MMGT_"+Symbol()+"_Buy_Line",OBJPROP_PRICE1));
            HLineMove(0,"MMGT_"+Symbol()+"_TP_Line",ObjectGet("MMGT_"+Symbol()+"_Buy_Line",OBJPROP_PRICE1)+(SLPips*3));
            ObjectMove(0,"MMGT_"+Symbol()+"_TP_Label",0,labelposition,ObjectGet("MMGT_"+Symbol()+"_Buy_Line",OBJPROP_PRICE1)+(SLPips*3));
            calculatebuy();
           }
         if(ObjectFind(0,"MMGT_"+Symbol()+"_Sell_Line")>-1)
           {
            SLPips=MathAbs(ObjectGet("MMGT_"+Symbol()+"_SL_Line",OBJPROP_PRICE1)-ObjectGet("MMGT_"+Symbol()+"_Sell_Line",OBJPROP_PRICE1));
            HLineMove(0,"MMGT_"+Symbol()+"_TP_Line",ObjectGet("MMGT_"+Symbol()+"_Sell_Line",OBJPROP_PRICE1)-(SLPips*3));
            ObjectMove(0,"MMGT_"+Symbol()+"_TP_Label",0,labelposition,ObjectGet("MMGT_"+Symbol()+"_Sell_Line",OBJPROP_PRICE1)-(SLPips*3));
            calculatesell();
           }
        }
      if(sparam=="MMGTbox_RatioButton4")
        {
         ObjectSetInteger(0,"MMGTbox_RatioButton4",OBJPROP_STATE,false);
         if(ObjectFind(0,"MMGT_"+Symbol()+"_Buy_Line")>-1)
           {
            SLPips=MathAbs(ObjectGet("MMGT_"+Symbol()+"_SL_Line",OBJPROP_PRICE1)-ObjectGet("MMGT_"+Symbol()+"_Buy_Line",OBJPROP_PRICE1));
            HLineMove(0,"MMGT_"+Symbol()+"_TP_Line",ObjectGet("MMGT_"+Symbol()+"_Buy_Line",OBJPROP_PRICE1)+(SLPips*4));
            ObjectMove(0,"MMGT_"+Symbol()+"_TP_Label",0,labelposition,ObjectGet("MMGT_"+Symbol()+"_Buy_Line",OBJPROP_PRICE1)+(SLPips*4));
            calculatebuy();
           }
         if(ObjectFind(0,"MMGT_"+Symbol()+"_Sell_Line")>-1)
           {
            SLPips=MathAbs(ObjectGet("MMGT_"+Symbol()+"_SL_Line",OBJPROP_PRICE1)-ObjectGet("MMGT_"+Symbol()+"_Sell_Line",OBJPROP_PRICE1));
            HLineMove(0,"MMGT_"+Symbol()+"_TP_Line",ObjectGet("MMGT_"+Symbol()+"_Sell_Line",OBJPROP_PRICE1)-(SLPips*4));
            ObjectMove(0,"MMGT_"+Symbol()+"_TP_Label",0,labelposition,ObjectGet("MMGT_"+Symbol()+"_Sell_Line",OBJPROP_PRICE1)-(SLPips*4));
            calculatesell();
           }
        }
      if(sparam=="MMGTbox_Close")
        {
         ObjectSetInteger(0,"MMGTbox_Close",OBJPROP_STATE,false);
         ObjectSetInteger(0,"MMGTbox_RectLabel",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
         ObjectSetInteger(0,"MMGTbox_RecMov",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
         ObjectSetInteger(0,"MMGTbox_Line1",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
         ObjectSetInteger(0,"MMGTbox_Line2",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
         ObjectSetInteger(0,"MMGTbox_Line3",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
         ObjectSetInteger(0,"MMGTbox_Line4",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
         ObjectSetInteger(0,"MMGTbox_Line5",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
         ObjectSetInteger(0,"MMGTbox_Line6",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
         ObjectSetInteger(0,"MMGTbox_Line7",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
         ObjectSetInteger(0,"MMGTbox_RiskSizeButtonPlus",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
         ObjectSetInteger(0,"MMGTbox_RiskSizeButtonMinus",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
         ObjectSetInteger(0,"MMGTbox_Line8",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
         ObjectSetInteger(0,"MMGTbox_LotSizeButtonPlus",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
         ObjectSetInteger(0,"MMGTbox_LotSizeButtonMinus",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
         ObjectSetInteger(0,"MMGTbox_Line9",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
         ObjectSetInteger(0,"MMGTbox_Line10",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
         ObjectSetInteger(0,"MMGTbox_TPButton",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
         ObjectSetInteger(0,"MMGTbox_SLButton",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
         ObjectSetInteger(0,"MMGTbox_Line11",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
         ObjectSetInteger(0,"MMGTbox_FollowButton",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
         ObjectSetInteger(0,"MMGTbox_OrderButton",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
         ObjectSetInteger(0,"MMGTbox_Close",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
         ObjectSetInteger(0,"MMGTbox_Line12",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
         ObjectSetInteger(0,"MMGTbox_Line13",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
         ObjectSetInteger(0,"MMGTbox_RatioButton2",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
         ObjectSetInteger(0,"MMGTbox_RatioButton3",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
         ObjectSetInteger(0,"MMGTbox_RatioButton4",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
         ObjectDelete(0,"MMGT_"+Symbol()+"_TP_Line");
         ObjectDelete(0,"MMGT_"+Symbol()+"_TP_Label");
         ObjectDelete(0,"MMGT_"+Symbol()+"_SL_Line");
         ObjectDelete(0,"MMGT_"+Symbol()+"_SL_Label");
         ObjectDelete(0,"MMGT_"+Symbol()+"_Buy_Line");
         ObjectDelete(0,"MMGT_"+Symbol()+"_Buy_Label");
         ObjectDelete(0,"MMGT_"+Symbol()+"_Sell_Line");
         ObjectDelete(0,"MMGT_"+Symbol()+"_Sell_Label");
         sandboxlotsize=-1;
        }
      if(sparam=="MMGTbox_TPButton")
        {
         ObjectSetInteger(0,"MMGTbox_TPButton",OBJPROP_STATE,false);
         if(CreateTP){CreateTP=false;}else{CreateTP=true;}
         if(CreateTP)
           {
            onoff="On";
            onoffcolor=clrGreen;
            if(ObjectFind(0,"MMGT_"+Symbol()+"_Buy_Line")>-1)
              {
               SLPips=MathAbs(ObjectGet("MMGT_"+Symbol()+"_SL_Line",OBJPROP_PRICE1)-ObjectGet("MMGT_"+Symbol()+"_Buy_Line",OBJPROP_PRICE1));
               TPprice=ObjectGet("MMGT_"+Symbol()+"_Buy_Line",OBJPROP_PRICE1)+SLPips*2;
               PipGap=(TPprice-ObjectGet("MMGT_"+Symbol()+"_Buy_Line",OBJPROP_PRICE1));
              }
            if(ObjectFind(0,"MMGT_"+Symbol()+"_Sell_Line")>-1)
              {
               SLPips=MathAbs(ObjectGet("MMGT_"+Symbol()+"_SL_Line",OBJPROP_PRICE1)-ObjectGet("MMGT_"+Symbol()+"_Sell_Line",OBJPROP_PRICE1));
               TPprice=ObjectGet("MMGT_"+Symbol()+"_Sell_Line",OBJPROP_PRICE1)-SLPips*2;
               PipGap=(TPprice-ObjectGet("MMGT_"+Symbol()+"_Sell_Line",OBJPROP_PRICE1));
              }
            //PipGap=(TPprice-ObjectGet("MMGT_"+Symbol()+"_Buy_Label",OBJPROP_PRICE1));
            HLineCreate(0,"MMGT_"+Symbol()+"_TP_Line",0,TPprice,ColorTP,LineStyle,Linewidth,false,true,false,0,TimeToString(TimeCurrent(),TIME_DATE));
            ObjectCreate("MMGT_"+Symbol()+"_TP_Label",OBJ_TEXT,0,labelposition,ObjectGet("MMGT_"+Symbol()+"_TP_Line",OBJPROP_PRICE1));
            ObjectMove(0,"MMGT_"+Symbol()+"_TP_Label",0,labelposition,ObjectGet("MMGT_"+Symbol()+"_TP_Line",OBJPROP_PRICE1));
            ObjectSetText("MMGT_"+Symbol()+"_TP_Label","TP at "+DoubleToString(ObjectGet("MMGT_"+Symbol()+"_TP_Line",OBJPROP_PRICE1),Digits)+" / "+DoubleToString(PipGap/point,1)+" Pips from Buy",10,"Courier New",ColorTP);

           }
         else
           {
            onoff="Off";
            onoffcolor=clrRed;
            ObjectDelete(0,"MMGT_"+Symbol()+"_TP_Line");
            ObjectDelete(0,"MMGT_"+Symbol()+"_TP_Label");
           }
         ObjectSetInteger(0,"MMGTbox_TPButton",OBJPROP_STATE,false);
         ObjectSetString(0,"MMGTbox_TPButton",OBJPROP_TEXT,onoff);
         ObjectSetInteger(0,"MMGTbox_TPButton",OBJPROP_COLOR,onoffcolor);
         if(ObjectFind(0,"MMGT_"+Symbol()+"_Buy_Line")>-1)
           {
            calculatebuy();
           }
         if(ObjectFind(0,"MMGT_"+Symbol()+"_Sell_Line")>-1)
           {
            calculatesell();
           }
        }
      if(sparam=="MMGTbox_SLButton")
        {
         ObjectSetInteger(0,"MMGTbox_SLButton",OBJPROP_STATE,false);
         if(CreateSL){CreateSL=false;}else{CreateSL=true;}
         if(CreateSL)
           {
            onoff="On";
            onoffcolor=clrGreen;
            string tempotxt;
            if(ObjectFind(0,"MMGT_"+Symbol()+"_Buy_Line")>-1)
              {
               TPprice=ObjectGet("MMGT_"+Symbol()+"_Buy_Line",OBJPROP_PRICE1)-(DefaultSL*point);
               PipGap=(TPprice-ObjectGet("MMGT_"+Symbol()+"_Buy_Line",OBJPROP_PRICE1));
               tempotxt="Buy";
              }
            if(ObjectFind(0,"MMGT_"+Symbol()+"_Sell_Line")>-1)
              {
               SLprice=ObjectGet("MMGT_"+Symbol()+"_Sell_Line",OBJPROP_PRICE1)+(DefaultSL*point);
               PipGap=(TPprice-ObjectGet("MMGT_"+Symbol()+"_Sell_Line",OBJPROP_PRICE1));
               tempotxt="Sell";
              }
            HLineCreate(0,"MMGT_"+Symbol()+"_SL_Line",0,SLprice,ColorSL,LineStyle,Linewidth,false,true,false,0,TimeToString(TimeCurrent(),TIME_DATE));
            ObjectCreate("MMGT_"+Symbol()+"_SL_Label",OBJ_TEXT,0,labelposition,ObjectGet("MMGT_"+Symbol()+"_SL_Line",OBJPROP_PRICE1));
            ObjectMove(0,"MMGT_"+Symbol()+"_SL_Label",0,labelposition,ObjectGet("MMGT_"+Symbol()+"_SL_Line",OBJPROP_PRICE1));
            ObjectSetText("MMGT_"+Symbol()+"_SL_Label","SL at "+DoubleToString(ObjectGet("MMGT_"+Symbol()+"_SL_Line",OBJPROP_PRICE1),Digits)+" / "+DoubleToString(PipGap/point,1)+" Pips from "+tempotxt,10,"Courier New",ColorSL);
           }
         else
           {
            onoff="Off";
            onoffcolor=clrRed;
            ObjectDelete(0,"MMGT_"+Symbol()+"_SL_Line");
            ObjectDelete(0,"MMGT_"+Symbol()+"_SL_Label");
           }
         ObjectSetInteger(0,"MMGTbox_SLButton",OBJPROP_STATE,false);
         ObjectSetString(0,"MMGTbox_SLButton",OBJPROP_TEXT,onoff);
         ObjectSetInteger(0,"MMGTbox_SLButton",OBJPROP_COLOR,onoffcolor);
         if(ObjectFind(0,"MMGT_"+Symbol()+"_Buy_Line")>-1)
           {
            calculatebuy();
           }
         if(ObjectFind(0,"MMGT_"+Symbol()+"_Sell_Line")>-1)
           {
            calculatesell();
           }
        }
      if(sparam=="MMGTbox_FollowButton")
        {
         ObjectSetInteger(0,"MMGTbox_FollowButton",OBJPROP_STATE,false);
         if(followprice){followprice=false;}else{followprice=true;}
         if(followprice)
           {
            YesNo="Yes";
            YesNocolor=clrGreen;
            ObjectSetInteger(0,"MMGTbox_FollowButton",OBJPROP_STATE,false);
            ObjectSetString(0,"MMGTbox_FollowButton",OBJPROP_TEXT,YesNo);
            ObjectSetInteger(0,"MMGTbox_FollowButton",OBJPROP_COLOR,YesNocolor);
            if(ObjectFind(0,"MMGT_"+Symbol()+"_Buy_Line")>-1)
              {
               HLineMove(0,"MMGT_"+Symbol()+"_Buy_Line",MarketInfo(Symbol(),MODE_ASK));
               ObjectMove(0,"MMGT_"+Symbol()+"_Buy_Label",0,labelposition,MarketInfo(Symbol(),MODE_ASK));
               HLineMove(0,"MMGT_"+Symbol()+"_SL_Line",MarketInfo(Symbol(),MODE_ASK)-SLPips);
               ObjectMove(0,"MMGT_"+Symbol()+"_SL_Label",0,labelposition,MarketInfo(Symbol(),MODE_ASK)-SLPips);
               if(CreateTP)
                 {
                  HLineMove(0,"MMGT_"+Symbol()+"_TP_Line",MarketInfo(Symbol(),MODE_ASK)+TPPips);
                  ObjectMove(0,"MMGT_"+Symbol()+"_TP_Label",0,labelposition,MarketInfo(Symbol(),MODE_ASK)+TPPips);
                 }
              }
            if(ObjectFind(0,"MMGT_"+Symbol()+"_Sell_Line")>-1)
              {
               HLineMove(0,"MMGT_"+Symbol()+"_Sell_Line",MarketInfo(Symbol(),MODE_BID));
               ObjectMove(0,"MMGT_"+Symbol()+"_Sell_Label",0,labelposition,MarketInfo(Symbol(),MODE_BID));
               HLineMove(0,"MMGT_"+Symbol()+"_SL_Line",MarketInfo(Symbol(),MODE_BID)+SLPips);
               ObjectMove(0,"MMGT_"+Symbol()+"_SL_Label",0,labelposition,MarketInfo(Symbol(),MODE_BID)+SLPips);
               if(CreateTP)
                 {
                  HLineMove(0,"MMGT_"+Symbol()+"_TP_Line",MarketInfo(Symbol(),MODE_ASK)-TPPips);
                  ObjectMove(0,"MMGT_"+Symbol()+"_TP_Label",0,labelposition,MarketInfo(Symbol(),MODE_ASK)-TPPips);
                 }
              }
           }
         else
           {
            YesNo="No";
            YesNocolor=clrRed;
            ObjectSetInteger(0,"MMGTbox_FollowButton",OBJPROP_STATE,false);
            ObjectSetString(0,"MMGTbox_FollowButton",OBJPROP_TEXT,YesNo);
            ObjectSetInteger(0,"MMGTbox_FollowButton",OBJPROP_COLOR,YesNocolor);
           }
         if(ObjectFind(0,"MMGT_"+Symbol()+"_Buy_Line")>-1)
           {
            calculatebuy();
           }
         if(ObjectFind(0,"MMGT_"+Symbol()+"_Sell_Line")>-1)
           {
            calculatesell();
           }
        }

      if(sparam=="MMGTbox_OrderButton")
        {
         int OrderProperties;
         double priceorder=0;
         ObjectSetInteger(0,"MMGTbox_OrderButton",OBJPROP_STATE,false);
         if(ObjectFind(0,"MMGT_"+Symbol()+"_Buy_Line")>-1)
           {
            if(followprice)
              {
               OrderProperties=OP_BUY;
               priceorder=MarketInfo(Symbol(),MODE_ASK);
              }
            else
              {
               priceorder=ObjectGet("MMGT_"+Symbol()+"_Buy_Line",OBJPROP_PRICE1);
               if(ObjectGet("MMGT_"+Symbol()+"_Buy_Line",OBJPROP_PRICE1)>MarketInfo(Symbol(),MODE_ASK))
                 {
                  OrderProperties=OP_BUYSTOP;
                 }
               else
                 {
                  OrderProperties=OP_BUYLIMIT;
                 }
              }
            GlobalVariableSet("MMGT_"+Symbol()+"_Action",10);//10=send
            GlobalVariableSet("MMGT_"+Symbol()+"_OrderProp",OrderProperties);
            GlobalVariableSet("MMGT_"+Symbol()+"_LotSize",sandboxlotsize);
            GlobalVariableSet("MMGT_"+Symbol()+"_Price",NormalizeDouble(priceorder,Digits));
            GlobalVariableSet("MMGT_"+Symbol()+"_SL",NormalizeDouble(ObjectGet("MMGT_"+Symbol()+"_SL_Line",OBJPROP_PRICE1),Digits));
            GlobalVariableSet("MMGT_"+Symbol()+"_TP",NormalizeDouble(ObjectGet("MMGT_"+Symbol()+"_TP_Line",OBJPROP_PRICE1),Digits));
            GlobalVariableSet("MMGT_"+Symbol()+"_MAGIC",MagicNumber);
            //ticket=OrderSend(Symbol(),OrderProperties,sandboxlotsize,Ask,3,ObjectGet("MMGT_"+Symbol()+"_SL_Line",OBJPROP_PRICE1),ObjectGet("MMGT_"+Symbol()+"_TP_Line",OBJPROP_PRICE1),"Money_Manager_Graphic_Tool",210572,0,clrGreen);
           }

         if(ObjectFind(0,"MMGT_"+Symbol()+"_Sell_Line")>-1)
           {
            if(followprice)
              {
               OrderProperties=OP_SELL;
               priceorder=MarketInfo(Symbol(),MODE_BID);
              }
            else
              {
               priceorder=ObjectGet("MMGT_"+Symbol()+"_Sell_Line",OBJPROP_PRICE1);
               if(ObjectGet("MMGT_"+Symbol()+"_Sell_Line",OBJPROP_PRICE1)>MarketInfo(Symbol(),MODE_BID))
                 {
                  OrderProperties=OP_SELLLIMIT;
                 }
               else
                 {
                  OrderProperties=OP_SELLSTOP;
                 }
              }
            GlobalVariableSet("MMGT_"+Symbol()+"_Action",10);//10=send
            GlobalVariableSet("MMGT_"+Symbol()+"_OrderProp",OrderProperties);
            GlobalVariableSet("MMGT_"+Symbol()+"_LotSize",sandboxlotsize);
            GlobalVariableSet("MMGT_"+Symbol()+"_Price",NormalizeDouble(priceorder,Digits));
            GlobalVariableSet("MMGT_"+Symbol()+"_SL",NormalizeDouble(ObjectGet("MMGT_"+Symbol()+"_SL_Line",OBJPROP_PRICE1),Digits));
            GlobalVariableSet("MMGT_"+Symbol()+"_TP",NormalizeDouble(ObjectGet("MMGT_"+Symbol()+"_TP_Line",OBJPROP_PRICE1),Digits));
            GlobalVariableSet("MMGT_"+Symbol()+"_MAGIC",MagicNumber);
           }
        }
     }

   if(id==CHARTEVENT_MOUSE_MOVE)
     {
      ChartXYToTimePrice(0,int(lparam),int(dparam),window,dt,price);
      xmouse = int(lparam);
      ymouse = int(dparam);
     }
  }
//+------------------------------------------------------------------+
//| Create rectangle label                                           |
//+------------------------------------------------------------------+
bool RectLabelCreate(const long             chart_ID=0,               // chart's ID
                     const string           name="RectLabel",         // label name
                     const int              sub_window=0,             // subwindow index
                     const int              xx=0,                      // X coordinate
                     const int              yy=0,                      // Y coordinate
                     const int              width=50,                 // width
                     const int              height=18,                // height
                     const color            back_clr=C'236,233,216',  // background color
                     const ENUM_BORDER_TYPE border=BORDER_SUNKEN,     // border type
                     const ENUM_BASE_CORNER cornerr=CORNER_LEFT_UPPER,// chart corner for anchoring
                     const color            clr=clrRed,               // flat border color (Flat)
                     const ENUM_LINE_STYLE  style=STYLE_SOLID,        // flat border style
                     const int              line_width=1,             // flat border width
                     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();

   if(ObjectFind(chart_ID,name)<0)
     {
      //--- create a rectangle label
      if(!ObjectCreate(chart_ID,name,OBJ_RECTANGLE_LABEL,sub_window,0,0))
        {
         Print(__FUNCTION__,
               ": failed to create a rectangle label! Error code = ",GetLastError());
         return(false);
        }
      //--- set label coordinates
      ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,xx);
      ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,yy);
      //--- set label size
      ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width);
      ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height);
      //--- set background color
      ObjectSetInteger(chart_ID,name,OBJPROP_BGCOLOR,back_clr);
      //--- set border type
      ObjectSetInteger(chart_ID,name,OBJPROP_BORDER_TYPE,border);
      //--- set the chart's corner, relative to which point coordinates are defined
      ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,cornerr);
      //--- set flat border color (in Flat mode)
      ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
      //--- set flat border line style
      ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
      //--- set flat border width
      ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,line_width);
      //--- display in the foreground (false) or background (true)
      ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
      //--- enable (true) or disable (false) the mode of moving the label 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);
  }
//+------------------------------------------------------------------+
//| Move rectangle label                                             |
//+------------------------------------------------------------------+
bool RectLabelMove(const long   chart_ID=0,       // chart's ID
                   const string name="RectLabel", // label name
                   const int    xx=0,              // X coordinate
                   const int    yy=0)              // Y coordinate
  {
//--- reset the error value
   ResetLastError();
//--- move the rectangle label
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,xx))
     {
      Print(__FUNCTION__,
            ": failed to move X coordinate of the label! Error code = ",GetLastError());
      return(false);
     }
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,yy))
     {
      Print(__FUNCTION__,
            ": failed to move Y coordinate of the label! Error code = ",GetLastError());
      return(false);
     }
//--- successful execution
   return(true);
  }
//+------------------------------------------------------------------+
//| Create the horizontal line                                       |
//+------------------------------------------------------------------+
bool HLineCreate(const long            chart_ID=0,// chart's ID
                 const string          name="HLine_max",// line name
                 const int             sub_window=0,// subwindow index
                 double                hprice=0,// line price
                 const color           clr=clrRed,        // line color
                 const ENUM_LINE_STYLE style=STYLE_SOLID, // line style
                 const int             width=1,           // line width
                 const bool            back=false,        // in the background
                 const bool            selection=true,    // highlight to move
                 const bool            hidden=true,       // hidden in the object list
                 const long            z_order=0,         // priority for mouse click
                 const string          tooltip="")
  {
   ObjectDelete(chart_ID,name);
//--- reset the error value
   ResetLastError();
//--- create a horizontal line
   if(!ObjectCreate(chart_ID,name,OBJ_HLINE,sub_window,0,hprice))
     {
      Print(__FUNCTION__,
            ": failed to create a horizontal line! Error code = ",GetLastError());
      return(false);
     }
//--- set line color
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- set line display style
   ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- set line width
   ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);
//--- display in the foreground (false) or background (true)
   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- enable (true) or disable (false) the mode of moving the line by mouse
//--- when creating a graphical object using ObjectCreate function, the object cannot be
//--- highlighted and moved by default. Inside this method, selection parameter
//--- is true by default making it possible to highlight and move the object
   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);

   ObjectSetString(chart_ID,name,OBJPROP_TOOLTIP,tooltip);
//--- successful execution
   return(true);
  }
//+------------------------------------------------------------------+
//| Move horizontal line                                             |
//+------------------------------------------------------------------+
bool HLineMove(const long   chart_ID=0,   // chart's ID
               const string name="HLine", // line name
               double       pricel=0) // line price
  {
//--- if the line price is not set, move it to the current Bid price level
   if(!pricel)
      pricel=SymbolInfoDouble(Symbol(),SYMBOL_BID);
//--- reset the error value
   ResetLastError();
//--- move a horizontal line
   if(!ObjectMove(chart_ID,name,0,0,pricel))
     {
      Print(__FUNCTION__,
            ": failed to move the horizontal line! Error code = ",GetLastError());
      return(false);
     }
//--- successful execution
   return(true);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void calculatebuy()
  {
//string additionalinfo;
   color Pipconditioncolor;
   color SLlimitcolor;
   color TPlimitcolor;

   if(ObjectFind(0,"MMGT_"+Symbol()+"_TP_Line")>-1)
     {
      CreateTP=true;
     }
   else
     {
      CreateTP=false;
     }

   SLPips=MathAbs(ObjectGet("MMGT_"+Symbol()+"_SL_Line",OBJPROP_PRICE1)-ObjectGet("MMGT_"+Symbol()+"_Buy_Line",OBJPROP_PRICE1));

   if(CreateTP)
     {
      TPPips=MathAbs(ObjectGet("MMGT_"+Symbol()+"_TP_Line",OBJPROP_PRICE1)-ObjectGet("MMGT_"+Symbol()+"_Buy_Line",OBJPROP_PRICE1));
      ratio="1:"+DoubleToString((TPPips/SLPips),1);
     }
   else
     {
      ratio="no TP";
     }
   ObjectSetText("MMGTbox_Line2","Ratio        : "+ratio,10,"Courier New",ColorTextBox);

   lotsizemaximum=NormalizeDouble(riskmoney/((SLPips/point))/PipValuesonelot,2);

   if(sandboxlotsize==-1)
     {
      sandboxlotsize=lotsizemaximum;
     }
   PipValues=(((MarketInfo(Symbol(),MODE_TICKVALUE)*point)/MarketInfo(Symbol(),MODE_TICKSIZE))*lotsizemaximum);
   if((SLPips/Point)<SLTPbrokerLimit)
     {
      SLlimitcolor=clrRed;
     }
   else
     {
      SLlimitcolor=ColorTextBox;
     }
   if(CreateSL)
     {
      ObjectSetText("MMGTbox_Line3","SL           : ["+DoubleToString(SLPips/point,1)+" pips  "+DoubleToString(SLPips*PipValues/point,2)+" "+AccountInfoString(ACCOUNT_CURRENCY)+"]",10,"Courier New",SLlimitcolor);
     }
   else
     {
      ObjectSetText("MMGTbox_Line3","SL           : no SL",10,"Courier New",SLlimitcolor);
     }
   if((TPPips/Point)<SLTPbrokerLimit)
     {
      TPlimitcolor=clrRed;
     }
   else
     {
      TPlimitcolor=ColorTextBox;
     }
   if(CreateTP)
     {
      ObjectSetText("MMGTbox_Line4","TP           : ["+DoubleToString(TPPips/point,1)+" pips  "+DoubleToString(TPPips*PipValues/point,2)+" "+AccountInfoString(ACCOUNT_CURRENCY)+"]",10,"Courier New",TPlimitcolor);
     }
   else
     {
      ObjectSetText("MMGTbox_Line4","TP           : no TP",10,"Courier New",ColorTextBox);
     }
   if(lotsizemaximum>MaximumLot || lotsizemaximum<MinimumLotSize)
     {
      Pipconditioncolor=clrRed;
     }
   else
     {
      Pipconditioncolor=ColorTextBox;
     }
   ObjectSetText("MMGTbox_Line5","Lot Size Max : "+DoubleToString(lotsizemaximum,2),10,"Courier New",Pipconditioncolor);
   ObjectSetText("MMGTbox_Line7","Risk         : "+DoubleToStr(sandboxrisk,2)+"% = "+DoubleToStr(double(AccountInfoDouble(accounttype))/100*sandboxrisk,2)+" "+AccountInfoString(ACCOUNT_CURRENCY)+" / "+balanceequity+" "+DoubleToStr(AccountInfoDouble(accounttype),2)+" "+AccountInfoString(ACCOUNT_CURRENCY),10,"Courier New",ColorTextBox);
   if(sandboxlotsize>MaximumLot || sandboxlotsize<MinimumLotSize)
     {
      Pipconditioncolor=clrRed;
     }
   else
     {
      Pipconditioncolor=ColorTextBox;
     }
   ObjectSetText("MMGTbox_Line8","Lot Size     : "+DoubleToString(sandboxlotsize,2),10,"Courier New",Pipconditioncolor);
   double sandboxPipValues=(((MarketInfo(Symbol(),MODE_TICKVALUE)*point)/MarketInfo(Symbol(),MODE_TICKSIZE))*sandboxlotsize);
   if(CreateSL)
     {
      ObjectSetText("MMGTbox_Line9","SL           : ["+DoubleToString(SLPips/point,1)+" pips  "+DoubleToString(SLPips*sandboxPipValues/point,2)+" "+AccountInfoString(ACCOUNT_CURRENCY)+"]",10,"Courier New",SLlimitcolor);
     }
   else
     {
      ObjectSetText("MMGTbox_Line9","SL           : no SL",10,"Courier New",SLlimitcolor);
     }
   if(CreateTP)
     {
      ObjectSetText("MMGTbox_Line10","TP           : ["+DoubleToString(TPPips/point,1)+" pips  "+DoubleToString(TPPips*sandboxPipValues/point,2)+" "+AccountInfoString(ACCOUNT_CURRENCY)+"]",10,"Courier New",TPlimitcolor);
     }
   else
     {
      ObjectSetText("MMGTbox_Line10","TP           : no TP",10,"Courier New",ColorTextBox);
     }
   if(!TransparancyBox)
     {
      ObjectSetInteger(0,"MMGTbox_RectLabel",OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);
     }
   ObjectSetInteger(0,"MMGTbox_RecMov",OBJPROP_SELECTED,true);
   ObjectSetInteger(0,"MMGTbox_RecMov",OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);
   ObjectSetInteger(0,"MMGTbox_Line1",OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);
   ObjectSetInteger(0,"MMGTbox_Line2",OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);
   ObjectSetInteger(0,"MMGTbox_Line3",OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);
   ObjectSetInteger(0,"MMGTbox_Line4",OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);
   ObjectSetInteger(0,"MMGTbox_Line5",OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);
   ObjectSetInteger(0,"MMGTbox_Line6",OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);
   ObjectSetInteger(0,"MMGTbox_Line7",OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);
   ObjectSetInteger(0,"MMGTbox_RiskSizeButtonPlus",OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);
   ObjectSetInteger(0,"MMGTbox_RiskSizeButtonMinus",OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);
   ObjectSetInteger(0,"MMGTbox_Line8",OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);
   ObjectSetInteger(0,"MMGTbox_LotSizeButtonPlus",OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);
   ObjectSetInteger(0,"MMGTbox_LotSizeButtonMinus",OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);
   ObjectSetInteger(0,"MMGTbox_Line9",OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);
   ObjectSetInteger(0,"MMGTbox_Line10",OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);
   ObjectSetInteger(0,"MMGTbox_TPButton",OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);
   ObjectSetInteger(0,"MMGTbox_SLButton",OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);
   ObjectSetInteger(0,"MMGTbox_Line11",OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);
   ObjectSetInteger(0,"MMGTbox_FollowButton",OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);
   if(GlobalVariableGet("MMGT_EA")==1)
     {
      ObjectSetInteger(0,"MMGTbox_OrderButton",OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);
      ObjectSetInteger(0,"MMGTbox_Line13",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
     }
   else
     {
      ObjectSetInteger(0,"MMGTbox_OrderButton",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
      ObjectSetInteger(0,"MMGTbox_Line13",OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);
     }
   ObjectSetInteger(0,"MMGTbox_Close",OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);
   ObjectSetInteger(0,"MMGTbox_Line12",OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);
   ObjectSetInteger(0,"MMGTbox_RatioButton2",OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);
   ObjectSetInteger(0,"MMGTbox_RatioButton3",OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);
   ObjectSetInteger(0,"MMGTbox_RatioButton4",OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);

   string OrderButtonText="";
   if(followprice)
     {
      OrderButtonText="Order Buy "+DoubleToString(sandboxlotsize,2)+" Lot";
     }
   else
     {
      if(ObjectGet("MMGT_"+Symbol()+"_Buy_Line",OBJPROP_PRICE1)>MarketInfo(Symbol(),MODE_ASK))
        {
         OrderButtonText="Order Buy Stop "+DoubleToString(sandboxlotsize,2)+" Lot";
        }
      else
        {
         OrderButtonText="Order Buy Limit "+DoubleToString(sandboxlotsize,2)+" Lot";
        }
     }
   ObjectSetString(0,"MMGTbox_OrderButton",OBJPROP_TEXT,OrderButtonText);

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void calculatesell()
  {
   color Pipconditioncolor;
   color SLlimitcolor;
   color TPlimitcolor;
   if(ObjectFind(0,"MMGT_"+Symbol()+"_TP_Line")>-1)
     {
      CreateTP=true;
     }
   else
     {
      CreateTP=false;
     }

   SLPips=MathAbs(ObjectGet("MMGT_"+Symbol()+"_SL_Line",OBJPROP_PRICE1)-ObjectGet("MMGT_"+Symbol()+"_Sell_Line",OBJPROP_PRICE1));

   if(CreateTP)
     {
      TPPips=MathAbs(ObjectGet("MMGT_"+Symbol()+"_TP_Line",OBJPROP_PRICE1)-ObjectGet("MMGT_"+Symbol()+"_Sell_Line",OBJPROP_PRICE1));
      ratio="1:"+DoubleToString((TPPips/SLPips),1);
     }
   else
     {
      ratio="no TP";
     }
   ObjectSetText("MMGTbox_Line2","Ratio        : "+ratio,10,"Courier New",ColorTextBox);

   lotsizemaximum=NormalizeDouble(riskmoney/((SLPips/point))/PipValuesonelot,2);

   if(sandboxlotsize==-1)
     {
      sandboxlotsize=lotsizemaximum;
     }
   PipValues=(((MarketInfo(Symbol(),MODE_TICKVALUE)*point)/MarketInfo(Symbol(),MODE_TICKSIZE))*lotsizemaximum);
   if((SLPips/Point)<SLTPbrokerLimit)
     {
      SLlimitcolor=clrRed;
     }
   else
     {
      SLlimitcolor=ColorTextBox;
     }
   if(CreateSL)
     {
      ObjectSetText("MMGTbox_Line3","SL           : ["+DoubleToString(SLPips/point,1)+" pips  "+DoubleToString(SLPips*PipValues/point,2)+" "+AccountInfoString(ACCOUNT_CURRENCY)+"]",10,"Courier New",SLlimitcolor);
     }
   else
     {
      ObjectSetText("MMGTbox_Line3","SL           : no SL",10,"Courier New",SLlimitcolor);
     }
   if((TPPips/Point)<SLTPbrokerLimit)
     {
      TPlimitcolor=clrRed;
     }
   else
     {
      TPlimitcolor=ColorTextBox;
     }
   if(CreateTP)
     {
      ObjectSetText("MMGTbox_Line4","TP           : ["+DoubleToString(TPPips/point,1)+" pips  "+DoubleToString(TPPips*PipValues/point,2)+" "+AccountInfoString(ACCOUNT_CURRENCY)+"]",10,"Courier New",TPlimitcolor);
     }
   else
     {
      ObjectSetText("MMGTbox_Line4","TP           : no TP",10,"Courier New",ColorTextBox);
     }
   if(lotsizemaximum>MaximumLot || lotsizemaximum<MinimumLotSize)
     {
      Pipconditioncolor=clrRed;
     }
   else
     {
      Pipconditioncolor=ColorTextBox;
     }
   ObjectSetText("MMGTbox_Line5","Lot Size Max : "+DoubleToString(lotsizemaximum,2),10,"Courier New",Pipconditioncolor);
   ObjectSetText("MMGTbox_Line7","Risk         : "+DoubleToStr(sandboxrisk,2)+"% = "+DoubleToStr(double(AccountInfoDouble(accounttype))/100*sandboxrisk,2)+" "+AccountInfoString(ACCOUNT_CURRENCY)+" / "+balanceequity+" "+DoubleToStr(AccountInfoDouble(accounttype),2)+" "+AccountInfoString(ACCOUNT_CURRENCY),10,"Courier New",ColorTextBox);

   if(sandboxlotsize>MaximumLot || sandboxlotsize<MinimumLotSize)
     {
      Pipconditioncolor=clrRed;
     }
   else
     {
      Pipconditioncolor=ColorTextBox;
     }
   ObjectSetText("MMGTbox_Line8","Lot Size     : "+DoubleToString(sandboxlotsize,2),10,"Courier New",Pipconditioncolor);
   double sandboxPipValues=(((MarketInfo(Symbol(),MODE_TICKVALUE)*point)/MarketInfo(Symbol(),MODE_TICKSIZE))*sandboxlotsize);
   if(CreateSL)
     {
      ObjectSetText("MMGTbox_Line9","SL           : ["+DoubleToString(SLPips/point,1)+" pips  "+DoubleToString(SLPips*sandboxPipValues/point,2)+" "+AccountInfoString(ACCOUNT_CURRENCY)+"]",10,"Courier New",TPlimitcolor);
     }
   else
     {
      ObjectSetText("MMGTbox_Line9","SL           : no SL",10,"Courier New",TPlimitcolor);
     }
   if(CreateTP)
     {
      ObjectSetText("MMGTbox_Line10","TP           : ["+DoubleToString(TPPips/point,1)+" pips  "+DoubleToString(TPPips*sandboxPipValues/point,2)+" "+AccountInfoString(ACCOUNT_CURRENCY)+"]",10,"Courier New",ColorTextBox);
     }
   else
     {
      ObjectSetText("MMGTbox_Line10","TP           : no TP",10,"Courier New",ColorTextBox);
     }
   if(!TransparancyBox)
     {
      ObjectSetInteger(0,"MMGTbox_RectLabel",OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);
     }
   ObjectSetInteger(0,"MMGTbox_RecMov",OBJPROP_SELECTED,true);
   ObjectSetInteger(0,"MMGTbox_RecMov",OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);
   ObjectSetInteger(0,"MMGTbox_Line1",OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);
   ObjectSetInteger(0,"MMGTbox_Line2",OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);
   ObjectSetInteger(0,"MMGTbox_Line3",OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);
   ObjectSetInteger(0,"MMGTbox_Line4",OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);
   ObjectSetInteger(0,"MMGTbox_Line5",OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);
   ObjectSetInteger(0,"MMGTbox_Line6",OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);
   ObjectSetInteger(0,"MMGTbox_Line7",OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);
   ObjectSetInteger(0,"MMGTbox_RiskSizeButtonPlus",OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);
   ObjectSetInteger(0,"MMGTbox_RiskSizeButtonMinus",OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);
   ObjectSetInteger(0,"MMGTbox_Line8",OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);
   ObjectSetInteger(0,"MMGTbox_LotSizeButtonPlus",OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);
   ObjectSetInteger(0,"MMGTbox_LotSizeButtonMinus",OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);
   ObjectSetInteger(0,"MMGTbox_Line9",OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);
   ObjectSetInteger(0,"MMGTbox_Line10",OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);
   ObjectSetInteger(0,"MMGTbox_TPButton",OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);
   ObjectSetInteger(0,"MMGTbox_SLButton",OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);
   ObjectSetInteger(0,"MMGTbox_Line11",OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);
   ObjectSetInteger(0,"MMGTbox_FollowButton",OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);
   if(GlobalVariableGet("MMGT_EA")==1)
     {
      ObjectSetInteger(0,"MMGTbox_OrderButton",OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);
      ObjectSetInteger(0,"MMGTbox_Line13",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
     }
   else
     {
      ObjectSetInteger(0,"MMGTbox_OrderButton",OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS,EMPTY);
      ObjectSetInteger(0,"MMGTbox_Line13",OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);
     }
   ObjectSetInteger(0,"MMGTbox_Close",OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);
   ObjectSetInteger(0,"MMGTbox_Line12",OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);
   ObjectSetInteger(0,"MMGTbox_RatioButton2",OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);
   ObjectSetInteger(0,"MMGTbox_RatioButton3",OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);
   ObjectSetInteger(0,"MMGTbox_RatioButton4",OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);

   string OrderButtonText="";
   if(followprice)
     {
      OrderButtonText="Order Sell "+DoubleToString(sandboxlotsize,2)+" Lot";
     }
   else
     {
      if(ObjectGet("MMGT_"+Symbol()+"_Sell_Line",OBJPROP_PRICE1)>MarketInfo(Symbol(),MODE_BID))
        {
         OrderButtonText="Order Sell Limit "+DoubleToString(sandboxlotsize,2)+" Lot";
        }
      else
        {
         OrderButtonText="Order Sell Stop "+DoubleToString(sandboxlotsize,2)+" Lot";
        }
     }
   ObjectSetString(0,"MMGTbox_OrderButton",OBJPROP_TEXT,OrderButtonText);

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
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               xx=0,                      // X coordinate
                  const int               yy=0,                      // Y coordinate
                  const int               width=50,                 // button width
                  const int               height=18,                // button height
                  const ENUM_BASE_CORNER  cornerr=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(ObjectFind(chart_ID,name)<0)
     {
      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,xx);
      ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,yy);
      //--- 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,cornerr);
      //--- 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);
  }
//+------------------------------------------------------------------+

Comments