TraderToolEA_v1.8

Author: Copyright 2015-2017, Nikolaos Pantzos
Orders Execution
Checks for the total of open ordersIt can change open orders parameters, due to possible stepping strategyIt automatically opens orders when conditions are reached
Miscellaneous
It plays sound alerts
0 Views
0 Downloads
0 Favorites
TraderToolEA_v1.8
ÿþ//====================================================================================================================================================//

#property copyright   "Copyright 2015-2017, Nikolaos Pantzos"

#property link        "https://www.mql5.com/en/users/pannik"

#property version     "1.80"

#property description "This Expert Advisor is a tool to help any trader to trade easily and quickly."

#property description "\nThis is not auto trade bot. Is a tool to help place and manage manualy orders."

#property description "\nIf you press the button for pending orders more of one time, expert makes a grid of pending orders."

//#property icon        "\\Images\\TT-Logo.ico";

#property strict

//====================================================================================================================================================//

enum Side {Up_Left_Corner,Up_Right_Corner, Down_Left_Corner, Down_Right_Corner};

//====================================================================================================================================================//

extern string WarningMessage         = "ALL THE SETS ARE IN PIPS, NOT IN POINTS";

extern string PendingOrdersSet       = "||========= Pending/Market Orders Sets =========||";

extern bool   UseAutoLotSize         = false;

extern double RiskFactor             = 1.0;

extern double LotSizeOrders          = 0.01;

extern double DistanceOrders         = 50;

extern bool   DeleteOrphans          = true;

extern string AddSLTP                = "||========= Set stop loss and take profit =========||";

extern bool   PutStopLoss            = true;

extern double StopLossPips           = 20;

extern bool   PutTakeProfit          = true;

extern double TakeProfitPips         = 20;

extern string TrailingSL             = "||========= Set trailing stop loss and break even =========||";

extern bool   UseTrailingStop        = false;

extern double TrailingStop           = 20;

extern bool   UseBreakEven           = false;

extern double BreakEvenAfter         = 20;

extern double BreakEvenPips          = 10;

extern string DeleteSLTP             = "||========= Delete stop loss and take profit =========||";

extern bool   DeleteTakeProfit       = false;

extern bool   DeleteStopLoss         = false;

extern string GeneralSettings        = "||========= General Settings =========||";

extern int    MagicNumber            = 12345;

extern bool   SoundAlert             = true;

extern string ColorsSettings         = "||========= Panel Colors Sets =========||";

extern color  ColorBackground        = clrHoneydew;

extern color  ColorFontScreen        = clrBlack;

extern color  ColorOpenButton        = clrDodgerBlue;

extern color  ColorCloseButton       = clrFireBrick;

extern color  ColorPlaceStopButton   = clrMediumSeaGreen;

extern color  ColorPlaceLimitButton  = clrLimeGreen;

extern color  ColorDeleteStopButton  = clrOrange;

extern color  ColorDeleteLimitButton = clrGold;

extern color  ColorDeleteAllButton   = clrDarkOrange;

extern color  ColorCallButton        = clrPowderBlue;

extern color  ColorFontButton        = clrBlack;

extern string SizeSettings           = "||========= Panel Size Sets =========||";

extern Side   SideButtonsPanel       = Down_Left_Corner;

extern int    ButtonFontSize         = 10;

extern int    ButtonWidth            = 160;

extern int    ButtonHeight           = 25;

//====================================================================================================================================================//

string SoundModify="tick.wav";

string SoundOpen="alert.wav";

string SoundClose="alert2.wav";

string SoundDelete="stops.wav";

string ExpertName;

double DigitPoint;

double StopLevel;

int MultiplierPoint;

int IDorder;

int TotalOrders;

int CntBuy;

int CntSell;

int CntBuyStop;

int CntSellStop;

int CntBuyLimit;

int CntSellLimit;

int ManageOrders=3;

int CornerOfChart=2;

int SymbolDigits;

int Distance;

color ColorFontDO;

color ColorFontSA;

color ColorFontSL;

color ColorFontTP;

color ColorFontTSL;

color ColorFontBE;

string TP;

string SL;

string TSL;

string MN;

string SA;

string BE;

string DO;

string Button1="ButtonOrdersPanel";

string Button2="ButtonOpenBuy";

string Button3="ButtonOpenSell";

string Button4="PlaceBuyStop";

string Button5="PlaceSellStop";

string Button6="ButtonPlaceBSandSS";

string Button7="ButtonCloseBuy";

string Button8="ButtonCloseSell";

string Button9="ButtonCloseAll";

string Button10="ButtonDeleteBS";

string Button11="ButtonDeleteSS";

string Button12="ButtonDeleteAll";

string Button13="CloseBuyOnPair";

string Button14="CloseBuyOnAcc";

string Button15="CloseSellOnPair";

string Button16="CloseSellOnAcc";

string Button17="DeleteBSonPair";

string Button18="DeleteBSonAcc";

string Button19="DeleteSSonPair";

string Button20="DeleteSSonAcc";

string Button21="ManageID";

string Button22="ManageAll";

string Button23="ManageManual";

string Button24="ManageOwn";

string Button25="PlaceBuyLimit";

string Button26="PlaceSellLimit";

string Button27="ButtonPlaceBLandSL";

string Button28="ButtonDeleteBL";

string Button29="ButtonDeleteSL";

string Button30="DeleteBLonPair";

string Button31="DeleteBLonAcc";

string Button32="DeleteSLonPair";

string Button33="DeleteSLonAcc";

string Box1="LotSizeBox";

string Box2="DistanceBox";

string Box4="TakeProfitBox";

string Box3="StopLossBox";

string Box5="TrailingBox";

string Box6="BreakEvenBox";

bool CallPanel=false;

bool CheckOrphans=true;

double FinalLot;

double FinalDistance;

double FinalTakeProfit;

double FinalStopLoss;

double FinalTrailing;

double FinalBreakEven;

double GetLotFromPanel;

double GetDistanceFromPanel;

double GetTakeProfitFromPanel;

double GetStopLossFromPanel;

double GetTrailingFromPanel;

double GetBreakEvenFromPanel;

double SpreadPair;

double PriceAsk;

double PriceBid;

double OrderLotSize;

double SymbolPoints;

double PriceLastBuyStop;

double PriceLastSellStop;

double PriceLastBuyLimit;

double PriceLastSellLimit;

color ColorButton21;

color ColorButton22;

color ColorButton23;

color ColorButton24;

//====================================================================================================================================================//

int OnInit()

  {

//------------------------------------------------------

//Broker 4 or 5 digits

   DigitPoint=MarketInfo(Symbol(),MODE_POINT);

   MultiplierPoint=1;

   if(MarketInfo(Symbol(),MODE_DIGITS)==3 || MarketInfo(Symbol(),MODE_DIGITS)==5)

     {

      MultiplierPoint=10;

      DigitPoint*=MultiplierPoint;

     }

//------------------------------------------------------

//Set corner for panel

   if(SideButtonsPanel==0)//Up left

     {

      CornerOfChart=0;

      Distance=10;

     }

   if(SideButtonsPanel==1)//Up right

     {

      CornerOfChart=1;

      Distance=ButtonWidth+10;

     }

   if(SideButtonsPanel==2)//Down left

     {

      CornerOfChart=2;

      Distance=10;

     }

   if(SideButtonsPanel==3)//Down right

     {

      CornerOfChart=3;

      Distance=ButtonWidth+10;

     }

//------------------------------------------------------

//Set Orders ID

   ExpertName=WindowExpertName();

   IDorder=UniqueMagic();

//------------------------------------------------------

//Set manage orders

   if(ManageOrders==3)

     {

      ColorButton21=clrCrimson;

      ColorButton22=clrCrimson;

      ColorButton23=clrCrimson;

      ColorButton24=clrForestGreen;

     }

//------------------------------------------------------

//Minimum trailing, take profit, stop loss, break even

   StopLevel=MathMax(MarketInfo(Symbol(),MODE_FREEZELEVEL)/MultiplierPoint,MarketInfo(Symbol(),MODE_STOPLEVEL)/MultiplierPoint);

   if(DistanceOrders<StopLevel)

      DistanceOrders=StopLevel;

   if((TrailingStop>0) && (TrailingStop<StopLevel))

      TrailingStop=StopLevel;

   if((TakeProfitPips>0) && (TakeProfitPips<StopLevel))

      TakeProfitPips=StopLevel;

   if((StopLossPips>0) && (StopLossPips<StopLevel))

      StopLossPips=StopLevel;

   if(BreakEvenAfter-BreakEvenPips<StopLevel)

      BreakEvenAfter=BreakEvenPips+StopLevel;

   if(MagicNumber<0)

      MagicNumber=0;

   if(LotSizeOrders<MarketInfo(Symbol(),MODE_MINLOT))

      LotSizeOrders=MarketInfo(Symbol(),MODE_MINLOT);

   if(LotSizeOrders>MarketInfo(Symbol(),MODE_MAXLOT))

      LotSizeOrders=MarketInfo(Symbol(),MODE_MAXLOT);

//------------------------------------------------------

//Reset switchs

   if(DeleteTakeProfit==true)

      PutTakeProfit=false;

   if(DeleteStopLoss==true)

     {

      PutStopLoss=false;

      UseTrailingStop=false;

      UseBreakEven=false;

     }

//------------------------------------------------------

   OnTick();

//------------------------------------------------------

   return(INIT_SUCCEEDED);

//------------------------------------------------------

  }

//====================================================================================================================================================//

void OnDeinit(const int reason)

  {

//------------------------------------------------------

   if(reason==1)

     {

      int i;

      //------------------------------------------------------

      ObjectDelete("Background1");

      ObjectDelete("Background2");

      ObjectDelete("Background3");

      //---

      for(i=0; i<16; i++)

        {

         ObjectDelete("Text"+IntegerToString(i));

        }

      //---

      ObjectDelete(Box1);

      ObjectDelete(Box2);

      ObjectDelete(Box4);

      ObjectDelete(Box3);

      ObjectDelete(Box5);

      ObjectDelete(Box6);

      ObjectDelete(Button1);

      ObjectDelete(Button2);

      ObjectDelete(Button3);

      ObjectDelete(Button4);

      ObjectDelete(Button5);

      ObjectDelete(Button6);

      ObjectDelete(Button7);

      ObjectDelete(Button8);

      ObjectDelete(Button9);

      ObjectDelete(Button10);

      ObjectDelete(Button11);

      ObjectDelete(Button12);

      ObjectDelete(Button13);

      ObjectDelete(Button14);

      ObjectDelete(Button15);

      ObjectDelete(Button16);

      ObjectDelete(Button17);

      ObjectDelete(Button18);

      ObjectDelete(Button19);

      ObjectDelete(Button20);

      ObjectDelete(Button21);

      ObjectDelete(Button22);

      ObjectDelete(Button23);

      ObjectDelete(Button24);

      ObjectDelete(Button25);

      ObjectDelete(Button26);

      ObjectDelete(Button27);

      ObjectDelete(Button28);

      ObjectDelete(Button29);

      ObjectDelete(Button30);

      ObjectDelete(Button31);

      ObjectDelete(Button32);

      ObjectDelete(Button33);

      //---

      Comment("");

     }

//------------------------------------------------------

  }

//====================================================================================================================================================//

void OnChartEvent(const int id,const long &lparam,const double &dparam,const string &sparam)

  {

//------------------------------------------------------

   bool selected=false;

   if(id==CHARTEVENT_OBJECT_CLICK)

     {

      string clickedChartObject=sparam;

      //------------------------------------------------------

      //ID orders

      if(clickedChartObject==Button21)

        {

         selected=ObjectGetInteger(0,Button21,OBJPROP_STATE);

         if((selected) && (ManageOrders!=0))

           {

            EventKillTimer();

            ColorButton21=clrForestGreen;

            ColorButton22=clrCrimson;

            ColorButton23=clrCrimson;

            ColorButton24=clrCrimson;

            ObjectDelete(Button2);

            ObjectDelete(Button3);

            ObjectDelete(Button4);

            ObjectDelete(Button5);

            ObjectDelete(Button6);

            ObjectDelete(Button7);

            ObjectDelete(Button8);

            ObjectDelete(Button9);

            ObjectDelete(Button10);

            ObjectDelete(Button11);

            ObjectDelete(Button12);

            ObjectDelete(Button13);

            ObjectDelete(Button14);

            ObjectDelete(Button15);

            ObjectDelete(Button16);

            ObjectDelete(Button17);

            ObjectDelete(Button18);

            ObjectDelete(Button19);

            ObjectDelete(Button20);

            ObjectDelete(Button21);

            ObjectDelete(Button22);

            ObjectDelete(Button23);

            ObjectDelete(Button24);

            ObjectDelete(Button25);

            ObjectDelete(Button26);

            ObjectDelete(Button27);

            ObjectDelete(Button28);

            ObjectDelete(Button29);

            ObjectDelete(Button30);

            ObjectDelete(Button31);

            ObjectDelete(Button32);

            ObjectDelete(Button33);

            ObjectDelete("Text15");

            clickedChartObject=Button1;

            ManageOrdersBox();

            ManageOrders=0;

            MN="With ID: "+StringSubstr(DoubleToStr(MagicNumber,0),0,10);

            if(ObjectFind("Text15")==-1)

               ChartText("Text15",StringConcatenate("Manage  ",MN),10,"Arial Black",ColorFontScreen,5,168);

            ObjectSetInteger(0,Button21,OBJPROP_STATE,FALSE);

           }

        }

      //------------------------------------------------------

      //All orders

      if(clickedChartObject==Button22)

        {

         selected=ObjectGetInteger(0,Button22,OBJPROP_STATE);

         if((selected) && (ManageOrders!=1))

           {

            EventKillTimer();

            ColorButton21=clrCrimson;

            ColorButton22=clrForestGreen;

            ColorButton23=clrCrimson;

            ColorButton24=clrCrimson;

            ObjectDelete(Button2);

            ObjectDelete(Button3);

            ObjectDelete(Button4);

            ObjectDelete(Button5);

            ObjectDelete(Button6);

            ObjectDelete(Button7);

            ObjectDelete(Button8);

            ObjectDelete(Button9);

            ObjectDelete(Button10);

            ObjectDelete(Button11);

            ObjectDelete(Button12);

            ObjectDelete(Button13);

            ObjectDelete(Button14);

            ObjectDelete(Button15);

            ObjectDelete(Button16);

            ObjectDelete(Button17);

            ObjectDelete(Button18);

            ObjectDelete(Button19);

            ObjectDelete(Button20);

            ObjectDelete(Button21);

            ObjectDelete(Button22);

            ObjectDelete(Button23);

            ObjectDelete(Button24);

            ObjectDelete(Button25);

            ObjectDelete(Button26);

            ObjectDelete(Button27);

            ObjectDelete(Button28);

            ObjectDelete(Button29);

            ObjectDelete(Button30);

            ObjectDelete(Button31);

            ObjectDelete(Button32);

            ObjectDelete(Button33);

            ObjectDelete("Text15");

            clickedChartObject=Button1;

            ManageOrdersBox();

            ManageOrders=1;

            MN="All Orders";

            if(ObjectFind("Text15")==-1)

               ChartText("Text15",StringConcatenate("Manage  ",MN),10,"Arial Black",ColorFontScreen,5,168);

            ObjectSetInteger(0,Button22,OBJPROP_STATE,FALSE);

           }

        }

      //------------------------------------------------------

      //Manual orders

      if(clickedChartObject==Button23)

        {

         selected=ObjectGetInteger(0,Button23,OBJPROP_STATE);

         if((selected) && (ManageOrders!=2))

           {

            EventKillTimer();

            ColorButton21=clrCrimson;

            ColorButton22=clrCrimson;

            ColorButton23=clrForestGreen;

            ColorButton24=clrCrimson;

            ObjectDelete(Button2);

            ObjectDelete(Button3);

            ObjectDelete(Button4);

            ObjectDelete(Button5);

            ObjectDelete(Button6);

            ObjectDelete(Button7);

            ObjectDelete(Button8);

            ObjectDelete(Button9);

            ObjectDelete(Button10);

            ObjectDelete(Button11);

            ObjectDelete(Button12);

            ObjectDelete(Button13);

            ObjectDelete(Button14);

            ObjectDelete(Button15);

            ObjectDelete(Button16);

            ObjectDelete(Button17);

            ObjectDelete(Button18);

            ObjectDelete(Button19);

            ObjectDelete(Button20);

            ObjectDelete(Button21);

            ObjectDelete(Button22);

            ObjectDelete(Button23);

            ObjectDelete(Button24);

            ObjectDelete(Button25);

            ObjectDelete(Button26);

            ObjectDelete(Button27);

            ObjectDelete(Button28);

            ObjectDelete(Button29);

            ObjectDelete(Button30);

            ObjectDelete(Button31);

            ObjectDelete(Button32);

            ObjectDelete(Button33);

            ObjectDelete("Text15");

            clickedChartObject=Button1;

            ManageOrdersBox();

            ManageOrders=2;

            MN="Manual Orders";

            if(ObjectFind("Text15")==-1)

               ChartText("Text15",StringConcatenate("Manage  ",MN),10,"Arial Black",ColorFontScreen,5,168);

            ObjectSetInteger(0,Button23,OBJPROP_STATE,FALSE);

           }

        }

      //------------------------------------------------------

      //Own orders

      if(clickedChartObject==Button24)

        {

         selected=ObjectGetInteger(0,Button24,OBJPROP_STATE);

         if((selected) && (ManageOrders!=3))

           {

            EventKillTimer();

            ColorButton21=clrCrimson;

            ColorButton22=clrCrimson;

            ColorButton23=clrCrimson;

            ColorButton24=clrForestGreen;

            ObjectDelete(Button2);

            ObjectDelete(Button3);

            ObjectDelete(Button4);

            ObjectDelete(Button5);

            ObjectDelete(Button6);

            ObjectDelete(Button7);

            ObjectDelete(Button8);

            ObjectDelete(Button9);

            ObjectDelete(Button10);

            ObjectDelete(Button11);

            ObjectDelete(Button12);

            ObjectDelete(Button13);

            ObjectDelete(Button14);

            ObjectDelete(Button15);

            ObjectDelete(Button16);

            ObjectDelete(Button17);

            ObjectDelete(Button18);

            ObjectDelete(Button19);

            ObjectDelete(Button20);

            ObjectDelete(Button21);

            ObjectDelete(Button22);

            ObjectDelete(Button23);

            ObjectDelete(Button24);

            ObjectDelete(Button25);

            ObjectDelete(Button26);

            ObjectDelete(Button27);

            ObjectDelete(Button28);

            ObjectDelete(Button29);

            ObjectDelete(Button30);

            ObjectDelete(Button31);

            ObjectDelete(Button32);

            ObjectDelete(Button33);

            ObjectDelete("Text15");

            clickedChartObject=Button1;

            ManageOrdersBox();

            ManageOrders=3;

            MN="Own Orders";

            if(ObjectFind("Text15")==-1)

               ChartText("Text15",StringConcatenate("Manage  ",MN),10,"Arial Black",ColorFontScreen,5,168);

            ObjectSetInteger(0,Button24,OBJPROP_STATE,FALSE);

           }

        }

      //------------------------------------------------------

      //Call orders panel

      if(clickedChartObject==Button1)

        {

         selected=ObjectGetInteger(0,Button1,OBJPROP_STATE);

         if(selected)

           {

            if(ManageOrders==3)

               FullOrdersPanel();

            if(ManageOrders!=3)

               LiteOrdersPanel();

           }

         else

           {

            ObjectDelete(Button2);

            ObjectDelete(Button3);

            ObjectDelete(Button4);

            ObjectDelete(Button5);

            ObjectDelete(Button6);

            ObjectDelete(Button7);

            ObjectDelete(Button8);

            ObjectDelete(Button9);

            ObjectDelete(Button10);

            ObjectDelete(Button11);

            ObjectDelete(Button12);

            ObjectDelete(Button13);

            ObjectDelete(Button14);

            ObjectDelete(Button15);

            ObjectDelete(Button16);

            ObjectDelete(Button17);

            ObjectDelete(Button18);

            ObjectDelete(Button19);

            ObjectDelete(Button20);

            ObjectDelete(Button25);

            ObjectDelete(Button26);

            ObjectDelete(Button27);

            ObjectDelete(Button28);

            ObjectDelete(Button29);

            ObjectDelete(Button30);

            ObjectDelete(Button31);

            ObjectDelete(Button32);

            ObjectDelete(Button33);

           }

        }

      //------------------------------------------------------

      //Send buy

      if(clickedChartObject==Button2)

        {

         selected=ObjectGetInteger(0,Button2,OBJPROP_STATE);

         if(selected)

           {

            EventKillTimer();

            OpenPosition(OP_BUY);

            ObjectSetInteger(0,Button2,OBJPROP_STATE,FALSE);

           }

        }

      //------------------------------------------------------

      //Open sell

      if(clickedChartObject==Button3)

        {

         selected=ObjectGetInteger(0,Button3,OBJPROP_STATE);

         if(selected)

           {

            EventKillTimer();

            OpenPosition(OP_SELL);

            ObjectSetInteger(0,Button3,OBJPROP_STATE,FALSE);

           }

        }

      //------------------------------------------------------

      //Open pending buy stop

      if(clickedChartObject==Button4)

        {

         selected=ObjectGetInteger(0,Button4,OBJPROP_STATE);

         if(selected)

           {

            EventKillTimer();

            OpenOrders(1);

            ObjectSetInteger(0,Button4,OBJPROP_STATE,FALSE);

           }

        }

      //------------------------------------------------------

      //Open pending sell stop

      if(clickedChartObject==Button5)

        {

         selected=ObjectGetInteger(0,Button5,OBJPROP_STATE);

         if(selected)

           {

            EventKillTimer();

            OpenOrders(2);

            ObjectSetInteger(0,Button5,OBJPROP_STATE,FALSE);

           }

        }

      //------------------------------------------------------

      //Open pending buy stop and sell stop

      if(clickedChartObject==Button6)

        {

         selected=ObjectGetInteger(0,Button6,OBJPROP_STATE);

         if(selected)

           {

            EventKillTimer();

            OpenOrders(0);

            ObjectSetInteger(0,Button6,OBJPROP_STATE,FALSE);

           }

        }

      //------------------------------------------------------

      //Open pending buy limit

      if(clickedChartObject==Button25)

        {

         selected=ObjectGetInteger(0,Button25,OBJPROP_STATE);

         if(selected)

           {

            EventKillTimer();

            OpenOrders(3);

            ObjectSetInteger(0,Button25,OBJPROP_STATE,FALSE);

           }

        }

      //------------------------------------------------------

      //Open pending sell limit

      if(clickedChartObject==Button26)

        {

         selected=ObjectGetInteger(0,Button26,OBJPROP_STATE);

         if(selected)

           {

            EventKillTimer();

            OpenOrders(4);

            ObjectSetInteger(0,Button26,OBJPROP_STATE,FALSE);

           }

        }

      //------------------------------------------------------

      //Open pending buy limit and sell limit

      if(clickedChartObject==Button27)

        {

         selected=ObjectGetInteger(0,Button27,OBJPROP_STATE);

         if(selected)

           {

            EventKillTimer();

            OpenOrders(5);

            ObjectSetInteger(0,Button27,OBJPROP_STATE,FALSE);

           }

        }

      //------------------------------------------------------

      //Close buy

      if(clickedChartObject==Button7)

        {

         selected=ObjectGetInteger(0,Button7,OBJPROP_STATE);

         if(selected)

           {

            EventKillTimer();

            ClosePositions(1,1);

            ObjectSetInteger(0,Button7,OBJPROP_STATE,FALSE);

           }

        }

      //------------------------------------------------------

      //Close sell

      if(clickedChartObject==Button8)

        {

         selected=ObjectGetInteger(0,Button8,OBJPROP_STATE);

         if(selected)

           {

            EventKillTimer();

            ClosePositions(2,1);

            ObjectSetInteger(0,Button8,OBJPROP_STATE,FALSE);

           }

        }

      //------------------------------------------------------

      //Close all

      if(clickedChartObject==Button9)

        {

         selected=ObjectGetInteger(0,Button9,OBJPROP_STATE);

         if(selected)

           {

            EventKillTimer();

            ClosePositions(0,1);

            ObjectSetInteger(0,Button9,OBJPROP_STATE,FALSE);

           }

        }

      //------------------------------------------------------

      //Delete BS pending

      if(clickedChartObject==Button10)

        {

         selected=ObjectGetInteger(0,Button10,OBJPROP_STATE);

         if(selected)

           {

            EventKillTimer();

            DeleteOrders(1,1);

            ObjectSetInteger(0,Button10,OBJPROP_STATE,FALSE);

           }

        }

      //------------------------------------------------------

      //Delete SS pending

      if(clickedChartObject==Button11)

        {

         selected=ObjectGetInteger(0,Button11,OBJPROP_STATE);

         if(selected)

           {

            EventKillTimer();

            DeleteOrders(2,1);

            ObjectSetInteger(0,Button11,OBJPROP_STATE,FALSE);

           }

        }

      //------------------------------------------------------

      //Delete BL pending

      if(clickedChartObject==Button28)

        {

         selected=ObjectGetInteger(0,Button28,OBJPROP_STATE);

         if(selected)

           {

            EventKillTimer();

            DeleteOrders(3,1);

            ObjectSetInteger(0,Button28,OBJPROP_STATE,FALSE);

           }

        }

      //------------------------------------------------------

      //Delete SL pending

      if(clickedChartObject==Button29)

        {

         selected=ObjectGetInteger(0,Button29,OBJPROP_STATE);

         if(selected)

           {

            EventKillTimer();

            DeleteOrders(4,1);

            ObjectSetInteger(0,Button29,OBJPROP_STATE,FALSE);

           }

        }

      //------------------------------------------------------

      //Delete all pending

      if(clickedChartObject==Button12)

        {

         selected=ObjectGetInteger(0,Button12,OBJPROP_STATE);

         if(selected)

           {

            EventKillTimer();

            DeleteOrders(0,1);

            ObjectSetInteger(0,Button12,OBJPROP_STATE,FALSE);

           }

        }

      //------------------------------------------------------

      //Close buy on pair

      if(clickedChartObject==Button13)

        {

         selected=ObjectGetInteger(0,Button13,OBJPROP_STATE);

         if(selected)

           {

            EventKillTimer();

            ClosePositions(1,1);

            ObjectSetInteger(0,Button13,OBJPROP_STATE,FALSE);

           }

        }

      //------------------------------------------------------

      //Close buy on account

      if(clickedChartObject==Button14)

        {

         selected=ObjectGetInteger(0,Button14,OBJPROP_STATE);

         if(selected)

           {

            EventKillTimer();

            ClosePositions(1,0);

            ObjectSetInteger(0,Button14,OBJPROP_STATE,FALSE);

           }

        }

      //------------------------------------------------------

      //Close sell on pair

      if(clickedChartObject==Button15)

        {

         selected=ObjectGetInteger(0,Button15,OBJPROP_STATE);

         if(selected)

           {

            EventKillTimer();

            ClosePositions(2,1);

            ObjectSetInteger(0,Button15,OBJPROP_STATE,FALSE);

           }

        }

      //------------------------------------------------------

      //Close sell on account

      if(clickedChartObject==Button16)

        {

         selected=ObjectGetInteger(0,Button16,OBJPROP_STATE);

         if(selected)

           {

            EventKillTimer();

            ClosePositions(2,0);

            ObjectSetInteger(0,Button16,OBJPROP_STATE,FALSE);

           }

        }

      //------------------------------------------------------

      //Delete BS on pair

      if(clickedChartObject==Button17)

        {

         selected=ObjectGetInteger(0,Button17,OBJPROP_STATE);

         if(selected)

           {

            EventKillTimer();

            DeleteOrders(1,1);

            ObjectSetInteger(0,Button17,OBJPROP_STATE,FALSE);

           }

        }

      //------------------------------------------------------

      //Delete BS on account

      if(clickedChartObject==Button18)

        {

         selected=ObjectGetInteger(0,Button18,OBJPROP_STATE);

         if(selected)

           {

            EventKillTimer();

            DeleteOrders(1,0);

            ObjectSetInteger(0,Button18,OBJPROP_STATE,FALSE);

           }

        }

      //------------------------------------------------------

      //Delete SS on pair

      if(clickedChartObject==Button19)

        {

         selected=ObjectGetInteger(0,Button19,OBJPROP_STATE);

         if(selected)

           {

            EventKillTimer();

            DeleteOrders(2,1);

            ObjectSetInteger(0,Button19,OBJPROP_STATE,FALSE);

           }

        }

      //------------------------------------------------------

      //Delete SS on account

      if(clickedChartObject==Button20)

        {

         selected=ObjectGetInteger(0,Button20,OBJPROP_STATE);

         if(selected)

           {

            EventKillTimer();

            DeleteOrders(2,0);

            ObjectSetInteger(0,Button20,OBJPROP_STATE,FALSE);

           }

        }

      //------------------------------------------------------

      //Delete BL on pair

      if(clickedChartObject==Button30)

        {

         selected=ObjectGetInteger(0,Button30,OBJPROP_STATE);

         if(selected)

           {

            EventKillTimer();

            DeleteOrders(3,1);

            ObjectSetInteger(0,Button30,OBJPROP_STATE,FALSE);

           }

        }

      //------------------------------------------------------

      //Delete BL on account

      if(clickedChartObject==Button31)

        {

         selected=ObjectGetInteger(0,Button31,OBJPROP_STATE);

         if(selected)

           {

            EventKillTimer();

            DeleteOrders(3,0);

            ObjectSetInteger(0,Button31,OBJPROP_STATE,FALSE);

           }

        }

      //------------------------------------------------------

      //Delete SL on pair

      if(clickedChartObject==Button32)

        {

         selected=ObjectGetInteger(0,Button32,OBJPROP_STATE);

         if(selected)

           {

            EventKillTimer();

            DeleteOrders(4,1);

            ObjectSetInteger(0,Button32,OBJPROP_STATE,FALSE);

           }

        }

      //------------------------------------------------------

      //Delete SL on account

      if(clickedChartObject==Button33)

        {

         selected=ObjectGetInteger(0,Button33,OBJPROP_STATE);

         if(selected)

           {

            EventKillTimer();

            DeleteOrders(4,0);

            ObjectSetInteger(0,Button33,OBJPROP_STATE,FALSE);

           }

        }

      //------------------------------------------------------

      ChartRedraw();

     }

//------------------------------------------------------

  }

//====================================================================================================================================================//

void OnTick()

  {

//------------------------------------------------------

   double LocalTakeProfit;

   double LocalStopLoss;

   bool WasOrderModified=false;

   OrderLotSize=CalculateLot();

//------------------------------------------------------

//Market close

   if(GetLastError()==132)

     {

      Print(ExpertName+": Could not run, market is closed!!!");

      Sleep(60000);

     }

//------------------------------------------------------

//Get spread

   SpreadPair=(Ask-Bid)/DigitPoint;

//------------------------------------------------------

//Manage buttons

   ManageOrdersBox();

//------------------------------------------------------

//Set manage orders

   if(ManageOrders==0)

     {

      ColorButton21=clrForestGreen;

      ColorButton22=clrCrimson;

      ColorButton23=clrCrimson;

      ColorButton24=clrCrimson;

     }

   if(ManageOrders==1)

     {

      ColorButton21=clrCrimson;

      ColorButton22=clrForestGreen;

      ColorButton23=clrCrimson;

      ColorButton24=clrCrimson;

     }

   if(ManageOrders==2)

     {

      ColorButton21=clrCrimson;

      ColorButton22=clrCrimson;

      ColorButton23=clrForestGreen;

      ColorButton24=clrCrimson;

     }

   if(ManageOrders==3)

     {

      ColorButton21=clrCrimson;

      ColorButton22=clrCrimson;

      ColorButton23=clrCrimson;

      ColorButton24=clrForestGreen;

     }

//------------------------------------------------------

//External comment

   if(PutStopLoss==true)

     {

      SL=DoubleToStr(StopLossPips,2);

      ColorFontSL=clrGreen;

     }

   else

     {

      SL="Disabled";

      ColorFontSL=clrRed;

     }

   if(PutTakeProfit==true)

     {

      TP=DoubleToStr(TakeProfitPips,2);

      ColorFontTP=clrGreen;

     }

   else

     {

      TP="Disabled";

      ColorFontTP=clrRed;

     }

   if(UseTrailingStop==true)

     {

      TSL=DoubleToStr(TrailingStop,2);

      ColorFontTSL=clrGreen;

     }

   else

     {

      TSL="Disabled";

      ColorFontTSL=clrRed;

     }

   if(UseBreakEven==true)

     {

      BE=DoubleToStr(BreakEvenPips,2);

      ColorFontBE=clrGreen;

     }

   else

     {

      BE="Disabled";

      ColorFontBE=clrRed;

     }

   if(SoundAlert==true)

     {

      SA="Enabled";

      ColorFontSA=clrGreen;

     }

   else

     {

      SA="Disabled";

      ColorFontSA=clrRed;

     }

   if(DeleteOrphans==true)

     {

      DO="Enabled";

      ColorFontDO=clrGreen;

     }

   else

     {

      DO="Disabled";

      ColorFontDO=clrRed;

     }

   if(ManageOrders==0)

      MN="With ID: "+StringSubstr(DoubleToStr(MagicNumber,0),0,10);

   if(ManageOrders==1)

      MN="All Orders";

   if(ManageOrders==2)

      MN="Manual Orders";

   if(ManageOrders==3)

      MN="Own Orders";

//------------------------------------------------------

//Set texts

   if(ObjectFind("Background1")==-1)

      ChartBackground("Background1",ColorBackground,0,14,200,150);

   if(ObjectFind("Background2")==-1)

      ChartBackground("Background2",ColorBackground,0,163,200,38);

//if(ObjectFind("Background3")==-1) ChartBackground("Background3",ColorBackground,0,190,200,40);

   if(ObjectFind("Text16")==-1)

      ChartText("Text16",StringConcatenate("WithID     All      Manual    Own"),10,"Tachoma",ColorFontScreen,5,185);

   if(ObjectFind("Text1")==-1)

      ChartText("Text1",StringConcatenate("Lot Size Orders"),10,"Arial Black",ColorFontScreen,5,40);

   if(ObjectFind("Text2")==-1)

      ChartText("Text2",StringConcatenate("Distance Orders"),10,"Arial Black",ColorFontScreen,5,55);

   if(ObjectFind("Text3")==-1)

      ChartText("Text3",StringConcatenate("Stop Loss Pips   :"),10,"Arial Black",ColorFontScreen,5,70);

   if(ObjectFind("Text4")==-1)

      ChartText("Text4",StringConcatenate(SL),10,"Arial Black",ColorFontSL,128,70);

   if(ObjectFind("Text5")==-1)

      ChartText("Text5",StringConcatenate("Take Profit Pips :"),10,"Arial Black",ColorFontScreen,5,85);

   if(ObjectFind("Text6")==-1)

      ChartText("Text6",StringConcatenate(TP),10,"Arial Black",ColorFontTP,128,85);

   if(ObjectFind("Text7")==-1)

      ChartText("Text7",StringConcatenate("Trailing SL Pips  :"),10,"Arial Black",ColorFontScreen,5,100);

   if(ObjectFind("Text8")==-1)

      ChartText("Text8",StringConcatenate(TSL),10,"Arial Black",ColorFontTSL,128,100);

   if(ObjectFind("Text9")==-1)

      ChartText("Text9",StringConcatenate("Break Even Pips:"),10,"Arial Black",ColorFontScreen,5,115);

   if(ObjectFind("Text10")==-1)

      ChartText("Text10",StringConcatenate(BE),10,"Arial Black",ColorFontBE,128,115);

   if(ObjectFind("Text11")==-1)

      ChartText("Text11",StringConcatenate("Delete Orphans : "),10,"Arial Black",ColorFontScreen,5,130);

   if(ObjectFind("Text12")==-1)

      ChartText("Text12",StringConcatenate(DO),10,"Arial Black",ColorFontDO,128,130);

   if(ObjectFind("Text13")==-1)

      ChartText("Text13",StringConcatenate("Sound Alert        : "),10,"Arial Black",ColorFontScreen,5,145);

   if(ObjectFind("Text14")==-1)

      ChartText("Text14",StringConcatenate(SA),10,"Arial Black",ColorFontSA,128,145);

   if(ObjectFind("Text15")==-1)

      ChartText("Text15",StringConcatenate("Manage  ",MN),10,"Arial Black",ColorFontScreen,5,168);

//------------------------------------------------------

//Panel button

   CallPanelButton();

//------------------------------------------------------

//Lot size set from panel

   MakeBox(Box1, 0, 122, 43, 75, 15, "Arial Black", ColorFontButton, DoubleToString(OrderLotSize,2), clrWhite, clrGray);

   GetLotFromPanel=StringToDouble(ObjectGetString(0,Box1,OBJPROP_TEXT,0));

   FinalLot=GetLotFromPanel;

   if(FinalLot<MarketInfo(Symbol(),MODE_MINLOT))

      FinalLot=MarketInfo(Symbol(),MODE_MINLOT);

   if(FinalLot>MarketInfo(Symbol(),MODE_MAXLOT))

      FinalLot=MarketInfo(Symbol(),MODE_MAXLOT);

//------------------------------------------------------

//Distance set from panel

   MakeBox(Box2, 0, 122, 58, 75, 15, "Arial Black", ColorFontButton, DoubleToString(DistanceOrders,2), clrWhite, clrGray);

   GetDistanceFromPanel=StringToDouble(ObjectGetString(0,Box2,OBJPROP_TEXT,0));

   FinalDistance=GetDistanceFromPanel;

   if(FinalDistance<StopLevel)

      FinalDistance=StopLevel;

//------------------------------------------------------

//Stop loss set from panel

   if(PutStopLoss==true)

     {

      MakeBox(Box3, 0, 122, 73, 75, 15, "Arial Black", ColorFontButton, DoubleToString(StopLossPips,2), clrWhite, clrGray);

      GetStopLossFromPanel=StringToDouble(ObjectGetString(0,Box3,OBJPROP_TEXT,0));

      FinalStopLoss=GetStopLossFromPanel;

      if(FinalStopLoss<StopLevel)

         FinalStopLoss=StopLevel;

     }

//------------------------------------------------------

//Take profit set from panel

   if(PutTakeProfit==true)

     {

      MakeBox(Box4, 0, 122, 88, 75, 15, "Arial Black", ColorFontButton, DoubleToString(TakeProfitPips,2), clrWhite, clrGray);

      GetTakeProfitFromPanel=StringToDouble(ObjectGetString(0,Box4,OBJPROP_TEXT,0));

      FinalTakeProfit=GetTakeProfitFromPanel;

      if(FinalTakeProfit<StopLevel)

         FinalTakeProfit=StopLevel;

     }

//------------------------------------------------------

//Trailint stop loss set from panel

   if(UseTrailingStop==true)

     {

      MakeBox(Box5, 0, 122, 103, 75, 15, "Arial Black", ColorFontButton, DoubleToString(TrailingStop,2), clrWhite, clrGray);

      GetTrailingFromPanel=StringToDouble(ObjectGetString(0,Box5,OBJPROP_TEXT,0));

      FinalTrailing=GetTrailingFromPanel;

      if(FinalTrailing<StopLevel)

         FinalTrailing=StopLevel;

     }

//------------------------------------------------------

//Break even set from panel

   if(UseBreakEven==true)

     {

      MakeBox(Box6, 0, 122, 118, 75, 15, "Arial Black", ColorFontButton, DoubleToString(BreakEvenPips,2), clrWhite, clrGray);

      GetBreakEvenFromPanel=StringToDouble(ObjectGetString(0,Box6,OBJPROP_TEXT,0));

      FinalBreakEven=GetBreakEvenFromPanel;

      if(FinalBreakEven<StopLevel)

         FinalBreakEven=StopLevel;

     }

//------------------------------------------------------

//Delete Orphans order

   if(DeleteOrphans==true)

     {

      CountOrders();

      if((CntBuyStop==CntSellStop) && (CntBuyStop+CntSellStop>0))

         CheckOrphans=true;

      //---For grid

      if((CntBuy+CntSell>0) && (CntBuyStop>0) && (CntSellStop>0) && (CheckOrphans==true))

        {

         if(CntBuyStop>CntSellStop)

           {

            DeleteOrders(1,1);   //Delete buy stop

            CheckOrphans=false;

            return;

           }

         if(CntBuyStop<CntSellStop)

           {

            DeleteOrders(2,1);   //Delete sell stop

            CheckOrphans=false;

            return;

           }

        }

      //---For single

      if((CntBuy+CntSell>0) && (((CntBuyStop==1) && (CntSellStop==0)) || ((CntBuyStop==0) && (CntSellStop==1))) && (CheckOrphans==true))

        {

         if(CntBuyStop>0)

           {

            DeleteOrders(1,1);   //Delete buy stop

            CheckOrphans=false;

            return;

           }

         if(CntSellStop>0)

           {

            DeleteOrders(2,1);   //Delete sell stop

            CheckOrphans=false;

            return;

           }

        }

     }

//------------------------------------------------------

//Select order

   for(int i=0; i<OrdersTotal(); i++)

     {

      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)

        {

         if((ManageOrders==1) || ((OrderMagicNumber()==MagicNumber) && (ManageOrders==0)) || ((OrderMagicNumber()==0) && (ManageOrders==2)) || ((OrderMagicNumber()==IDorder) && (ManageOrders==3)))

           {

            //------------------------------------------------------

            //Delete stoploss and/or take profit

            if((DeleteTakeProfit==true) || (DeleteStopLoss==true))

              {

               LocalStopLoss=0;

               LocalTakeProfit=0;

               if(DeleteStopLoss==true)

                  LocalStopLoss=-1;

               if(DeleteTakeProfit==true)

                  LocalTakeProfit=-1;

               if((DeleteStopLoss==true)&&(OrderStopLoss()!=0))

                  LocalStopLoss=0;

               if((DeleteStopLoss==false)&&(OrderStopLoss()!=0))

                  LocalStopLoss=OrderStopLoss();

               if((DeleteTakeProfit==true)&&(OrderTakeProfit()!=0))

                  LocalTakeProfit=0;

               if((DeleteTakeProfit==false)&&(OrderTakeProfit()!=0))

                  LocalTakeProfit=OrderTakeProfit();

               //---

               if((LocalStopLoss==0) || (LocalTakeProfit==0))

                  WasOrderModified=OrderModify(OrderTicket(),OrderOpenPrice(),LocalStopLoss,LocalTakeProfit,0,clrNONE);

               if(WasOrderModified>0)

                 {

                  Print("Modify ticket: "+DoubleToStr(OrderTicket(),0));

                  if(SoundAlert==true)

                     PlaySound(SoundModify);

                  continue;

                 }

              }

            //------------------------------------------------------

            //Check stop loss and take profit

            if((UseBreakEven==false) && (UseTrailingStop==false))

              {

               if((PutStopLoss==true)&&(OrderStopLoss()!=0)&&(PutTakeProfit==true)&&(OrderTakeProfit()!=0))

                  continue;

               if((PutStopLoss==true)&&(OrderStopLoss()!=0)&&(PutTakeProfit==false))

                  continue;

               if((PutStopLoss==false)&&(PutTakeProfit==true)&&(OrderTakeProfit()!=0))

                  continue;

              }

            //------------------------------------------------------

            //Get prices of ordres of any symbol

            PriceAsk=MarketInfo(OrderSymbol(),MODE_ASK);

            PriceBid=MarketInfo(OrderSymbol(),MODE_BID);

            SymbolPoints=MarketInfo(OrderSymbol(),MODE_POINT)*MultiplierPoint;

            SymbolDigits=(int)MarketInfo(OrderSymbol(),MODE_DIGITS);

            //------------------------------------------------------

            //Modify buy

            if(OrderType()==OP_BUY)

              {

               LocalStopLoss=0;

               LocalTakeProfit=0;

               WasOrderModified=false;

               //------------------------------------------------------

               //put stoploss and/or take profit

               if((UseTrailingStop==true) && (OrderStopLoss()==0))

                  LocalStopLoss=NormalizeDouble(PriceBid-FinalTrailing*SymbolPoints,SymbolDigits);

               if((PutStopLoss==true) && (OrderStopLoss()==0))

                  LocalStopLoss=NormalizeDouble(PriceBid-FinalStopLoss*SymbolPoints,SymbolDigits);

               if((PutTakeProfit==true) && (OrderTakeProfit()==0))

                  LocalTakeProfit=NormalizeDouble(PriceAsk+FinalTakeProfit*SymbolPoints,SymbolDigits);

               else

                  LocalTakeProfit=OrderTakeProfit();

               //------------------------------------------------------

               //Trailing stop

               if((UseTrailingStop==true) && (LocalStopLoss==0) && (FinalTrailing>0) && (OrderStopLoss()!=0) && (NormalizeDouble(PriceBid-FinalTrailing*SymbolPoints,SymbolDigits)>OrderStopLoss()))

                  LocalStopLoss=NormalizeDouble(PriceBid-FinalTrailing*SymbolPoints,SymbolDigits);

               //------------------------------------------------------

               //Break even

               if((UseBreakEven==true) && (LocalStopLoss==0) && (BreakEvenPips>0) && (NormalizeDouble(PriceBid-BreakEvenAfter*SymbolPoints,SymbolDigits)>=OrderOpenPrice()) &&

                  ((NormalizeDouble(OrderOpenPrice()+BreakEvenPips*SymbolPoints,SymbolDigits)>OrderStopLoss()) || (OrderStopLoss()==0)))

                  LocalStopLoss=NormalizeDouble(OrderOpenPrice()+BreakEvenPips*SymbolPoints,SymbolDigits);

               //-----------------------

               //Modify

               if(((LocalStopLoss>0) && (LocalStopLoss!=NormalizeDouble(OrderStopLoss(),SymbolDigits)) && (OrderStopLoss()!=0)) || (((LocalStopLoss>0) && (OrderStopLoss()==0)) || ((LocalTakeProfit>0) && (OrderTakeProfit()==0))))

                  WasOrderModified=OrderModify(OrderTicket(),OrderOpenPrice(),LocalStopLoss,LocalTakeProfit,0,clrBlue);

               if(WasOrderModified>0)

                 {

                  Print("Modify buy ticket: "+DoubleToStr(OrderTicket(),0));

                  if(SoundAlert==true)

                     PlaySound(SoundModify);

                 }

              }//End if(OrderType()

            //------------------------------------------------------

            //Modify sell

            if(OrderType()==OP_SELL)

              {

               LocalStopLoss=0;

               LocalTakeProfit=0;

               WasOrderModified=false;

               //------------------------------------------------------

               //put stoploss and/or take profit

               if((UseTrailingStop==true) && (OrderStopLoss()==0))

                  LocalStopLoss=NormalizeDouble(PriceAsk+FinalTrailing*SymbolPoints,SymbolDigits);

               if((PutStopLoss==true) && (OrderStopLoss()==0))

                  LocalStopLoss=NormalizeDouble(PriceAsk+FinalStopLoss*SymbolPoints,SymbolDigits);

               if((PutTakeProfit==true) && (OrderTakeProfit()==0))

                  LocalTakeProfit=NormalizeDouble(PriceBid-FinalTakeProfit*SymbolPoints,SymbolDigits);

               else

                  LocalTakeProfit=OrderTakeProfit();

               //------------------------------------------------------

               //Trailing stop

               if((UseTrailingStop==true) && (LocalStopLoss==0) && (FinalTrailing>0) && (OrderStopLoss()!=0) && (NormalizeDouble(PriceAsk+FinalTrailing*SymbolPoints,SymbolDigits)<OrderStopLoss()))

                  LocalStopLoss=NormalizeDouble(PriceAsk+FinalTrailing*SymbolPoints,SymbolDigits);

               //------------------------------------------------------

               //Break even

               if((UseBreakEven==true) && (LocalStopLoss==0) && (BreakEvenPips>0) && (NormalizeDouble(PriceAsk+BreakEvenAfter*SymbolPoints,SymbolDigits)<=OrderOpenPrice()) &&

                  ((NormalizeDouble(OrderOpenPrice()-BreakEvenPips*SymbolPoints,SymbolDigits)<OrderStopLoss()) || (OrderStopLoss()==0)))

                  LocalStopLoss=NormalizeDouble(OrderOpenPrice()-BreakEvenPips*SymbolPoints,SymbolDigits);

               //-----------------------

               //Modify

               if(((LocalStopLoss>0) && (LocalStopLoss!=NormalizeDouble(OrderStopLoss(),SymbolDigits)) && (OrderStopLoss()!=0)) || (((LocalStopLoss>0) && (OrderStopLoss()==0)) || ((LocalTakeProfit>0) && (OrderTakeProfit()==0))))

                  WasOrderModified=OrderModify(OrderTicket(),OrderOpenPrice(),LocalStopLoss,LocalTakeProfit,0,clrRed);

               if(WasOrderModified>0)

                 {

                  Print("Modify sell ticket: "+DoubleToStr(OrderTicket(),0));

                  if(SoundAlert==true)

                     PlaySound(SoundModify);

                 }

              }//End if(OrderType()

            //------------------------------------------------------

            //Closed Market

            if(GetLastError()==132)

              {

               Print(ExpertName+": Could not run, market is closed!!!");

               break;

              }

            //------------------------------------------------------

           }//End if((OrderMagicNumber()...

        }//End OrderSelect(...

     }//End for(...

//------------------------------------------------------

  }

//====================================================================================================================================================//

void CountOrders()

  {

//------------------------------------------------------

   TotalOrders=0;

   CntBuy=0;

   CntSell=0;

   CntBuyStop=0;

   CntSellStop=0;

   PriceLastBuyStop=0;

   PriceLastSellStop=0;

   CntBuyLimit=0;

   CntSellLimit=0;

   PriceLastBuyLimit=0;

   PriceLastSellLimit=0;

//---

   if(OrdersTotal()>0)

     {

      for(int i=0; i<OrdersTotal(); i++)

        {

         if(OrderSelect(i,SELECT_BY_POS)==true)

           {

            if((OrderMagicNumber()==IDorder) && (OrderSymbol()==Symbol()))

              {

               TotalOrders++;

               if(OrderType()==OP_BUY)

                  CntBuy++;

               //---

               if(OrderType()==OP_SELL)

                  CntSell++;

               //---

               if(OrderType()==OP_BUYSTOP)

                 {

                  CntBuyStop++;

                  PriceLastBuyStop=OrderOpenPrice();

                 }

               //---

               if(OrderType()==OP_SELLSTOP)

                 {

                  CntSellStop++;

                  PriceLastSellStop=OrderOpenPrice();

                 }

               //---

               if(OrderType()==OP_BUYLIMIT)

                 {

                  CntBuyLimit++;

                  PriceLastBuyLimit=OrderOpenPrice();

                 }

               //---

               if(OrderType()==OP_SELLLIMIT)

                 {

                  CntSellLimit++;

                  PriceLastSellLimit=OrderOpenPrice();

                 }

              }

           }

        }

     }

//------------------------------------------------------

  }

//====================================================================================================================================================//

//open orders function

void OpenPosition(int PositionType)

  {

//------------------------------------------------------

   double StopLossOrder=0;

   double TakeProfitOrder=0;

   int OpenOrderTicket;

   double OpenPrice=0;

   color OpenColor=clrNONE;

   string TypeOfOrder;

   double LotSize=MathMin(MathMax((MathRound(FinalLot/MarketInfo(Symbol(),MODE_LOTSTEP))*MarketInfo(Symbol(),MODE_LOTSTEP)),MarketInfo(Symbol(),MODE_MINLOT)),MarketInfo(Symbol(),MODE_MAXLOT));

//------------------------------------------------------

//Buy stop loss and take profit in price

   if(PositionType==OP_BUY)

     {

      if(PutStopLoss==true)

         StopLossOrder=NormalizeDouble(Bid-FinalStopLoss*DigitPoint,Digits);

      if(PutTakeProfit==true)

         TakeProfitOrder=NormalizeDouble(Ask+FinalTakeProfit*DigitPoint,Digits);

      OpenPrice=NormalizeDouble(Ask,Digits);

      OpenColor=clrBlue;

      TypeOfOrder="Buy";

     }

//------------------------------------------------------

//Sell stop loss and take profit in price

   if(PositionType==OP_SELL)

     {

      if(PutStopLoss==true)

         StopLossOrder=NormalizeDouble(Ask+FinalStopLoss*DigitPoint,Digits);

      if(PutTakeProfit==true)

         TakeProfitOrder=NormalizeDouble(Bid-FinalTakeProfit*DigitPoint,Digits);

      OpenPrice=NormalizeDouble(Bid,Digits);

      OpenColor=clrRed;

      TypeOfOrder="Sell";

     }

//------------------------------------------------------

//Send orders

   OpenOrderTicket=OrderSend(Symbol(),PositionType,LotSize,OpenPrice,3,StopLossOrder,TakeProfitOrder,ExpertName,IDorder,0,OpenColor);

//---

   if(OpenOrderTicket>0)

      if(SoundAlert==true)

         PlaySound(SoundOpen);

//---Market is closed

   if(GetLastError()==132)

      Print(ExpertName+": Could not open order, market is closed");

//---Trade is disabled

   if(GetLastError()==133)

      Print(ExpertName+": Could not open order, trade is disabled");

//---Not enough money

   if(GetLastError()==134)

      Print(ExpertName+": Could not open order, not enough money");

//---Broker is busy

   if(GetLastError()==137)

      Print(ExpertName+": Could not open order, broker is busy");

//---The amount of open and pending orders has reached the limit set by the broker

   if(GetLastError()==148)

      Print(ExpertName+": Could not open order, too many orders");

//---Invalid ticket

   if(GetLastError()==4108)

      Print(ExpertName+": Could not open order, invalid ticket");

//---Trade is not allowed. Enable checkbox "Allow live trading" in the Expert Advisor properties

   if(GetLastError()==4109)

      Print(ExpertName+": Could not open order, trade is not allowed");

//------------------------------------------------------

  }

//====================================================================================================================================================//

double CalculateLot()

  {

//------------------------------------------------------

   double OrdrLot=0;

//---

   if(UseAutoLotSize==true)

      OrdrLot=(AccountBalance()/MarketInfo(Symbol(),MODE_LOTSIZE))*RiskFactor;

   if(UseAutoLotSize==false)

      OrdrLot=LotSizeOrders;

//---

   return(MathMin(MathMax((MathRound(OrdrLot/MarketInfo(Symbol(),MODE_LOTSTEP))*MarketInfo(Symbol(),MODE_LOTSTEP)),MarketInfo(Symbol(),MODE_MINLOT)),MarketInfo(Symbol(),MODE_MAXLOT)));

//------------------------------------------------------

  }

//====================================================================================================================================================//

void OpenOrders(int TypeOrdersOpen)

  {

//------------------------------------------------------

   int TicketBuyStop=-1;

   int TicketSellStop=-1;

   int TicketBuyLimit=-1;

   int TicketSellLimit=-1;

//---------------------------------------------------------------------

//Set stop loss and take profit

   double SLbuy=0;

   double SLsell=0;

   double TPbuy=0;

   double TPsell=0;

   double PriceOpenBuyStop=0;

   double PriceOpenSellStop=0;

   double PriceOpenBuyLimit=0;

   double PriceOpenSellLimit=0;

//------------------------------------------------------

//Count orders

   CountOrders();

//---------------------------------------------------------------------

//Set levels for buy stop

   if((TypeOrdersOpen==0)||(TypeOrdersOpen==1))

     {

      if(CntBuyStop==0)

         PriceOpenBuyStop=NormalizeDouble(Ask+FinalDistance*DigitPoint,Digits);

      if(CntBuyStop>0)

         PriceOpenBuyStop=NormalizeDouble(PriceLastBuyStop+FinalDistance*DigitPoint,Digits);

      //---

      if(PutStopLoss==true)

         SLbuy=NormalizeDouble(PriceOpenBuyStop-(FinalStopLoss*DigitPoint)-(SpreadPair*DigitPoint),Digits);

      if(PutTakeProfit==true)

         TPbuy=NormalizeDouble(PriceOpenBuyStop+(FinalTakeProfit*DigitPoint),Digits);

     }

//---------------------------------------------------------------------

//Set levels for sell stop

   if((TypeOrdersOpen==0)||(TypeOrdersOpen==2))

     {

      if(CntSellStop==0)

         PriceOpenSellStop=NormalizeDouble(Bid-FinalDistance*DigitPoint,Digits);

      if(CntSellStop>0)

         PriceOpenSellStop=NormalizeDouble(PriceLastSellStop-FinalDistance*DigitPoint,Digits);

      //---

      if(PutStopLoss==true)

         SLsell=NormalizeDouble(PriceOpenSellStop+(FinalStopLoss*DigitPoint)+(SpreadPair*DigitPoint),Digits);

      if(PutTakeProfit==true)

         TPsell=NormalizeDouble(PriceOpenSellStop-(FinalTakeProfit*DigitPoint),Digits);

     }

//---------------------------------------------------------------------

//Set levels for buy limit

   if((TypeOrdersOpen==5)||(TypeOrdersOpen==3))

     {

      if(CntBuyLimit==0)

         PriceOpenBuyLimit=NormalizeDouble(Bid-FinalDistance*DigitPoint,Digits);

      if(CntBuyLimit>0)

         PriceOpenBuyLimit=NormalizeDouble(PriceLastBuyLimit-FinalDistance*DigitPoint,Digits);

      //---

      if(PutStopLoss==true)

         SLbuy=NormalizeDouble(PriceOpenBuyLimit-(FinalStopLoss*DigitPoint)-(SpreadPair*DigitPoint),Digits);

      if(PutTakeProfit==true)

         TPbuy=NormalizeDouble(PriceOpenBuyLimit+(FinalTakeProfit*DigitPoint),Digits);

     }

//---------------------------------------------------------------------

//Set levels for sell limit

   if((TypeOrdersOpen==5)||(TypeOrdersOpen==4))

     {

      if(CntSellLimit==0)

         PriceOpenSellLimit=NormalizeDouble(Ask+FinalDistance*DigitPoint,Digits);

      if(CntSellLimit>0)

         PriceOpenSellLimit=NormalizeDouble(PriceLastSellLimit+FinalDistance*DigitPoint,Digits);

      //---

      if(PutStopLoss==true)

         SLsell=NormalizeDouble(PriceOpenSellLimit+(FinalStopLoss*DigitPoint)+(SpreadPair*DigitPoint),Digits);

      if(PutTakeProfit==true)

         TPsell=NormalizeDouble(PriceOpenSellLimit-(FinalTakeProfit*DigitPoint),Digits);

     }

//---------------------------------------------------------------------

//---Send orders

//---Open buy stop and sell stop

   if(TypeOrdersOpen==0)

     {

      TicketBuyStop=OrderSend(Symbol(),OP_BUYSTOP,OrderLotSize,PriceOpenBuyStop,3,SLbuy,TPbuy,ExpertName,IDorder,0,clrBlue);

      TicketSellStop=OrderSend(Symbol(),OP_SELLSTOP,OrderLotSize,PriceOpenSellStop,3,SLsell,TPsell,ExpertName,IDorder,0,clrRed);

     }

//---Open buy limit and sell limit

   if(TypeOrdersOpen==5)

     {

      TicketBuyLimit=OrderSend(Symbol(),OP_BUYLIMIT,OrderLotSize,PriceOpenBuyLimit,3,SLbuy,TPbuy,ExpertName,IDorder,0,clrBlue);

      TicketSellLimit=OrderSend(Symbol(),OP_SELLLIMIT,OrderLotSize,PriceOpenSellLimit,3,SLsell,TPsell,ExpertName,IDorder,0,clrRed);

     }

//---Open buy stop

   if(TypeOrdersOpen==1)

     {

      TicketBuyStop=OrderSend(Symbol(),OP_BUYSTOP,OrderLotSize,PriceOpenBuyStop,3,SLbuy,TPbuy,ExpertName,IDorder,0,clrBlue);

     }

//---Open sell stop

   if(TypeOrdersOpen==2)

     {

      TicketSellStop=OrderSend(Symbol(),OP_SELLSTOP,OrderLotSize,PriceOpenSellStop,3,SLsell,TPsell,ExpertName,IDorder,0,clrRed);

     }

//---Open buy limit

   if(TypeOrdersOpen==3)

     {

      TicketBuyLimit=OrderSend(Symbol(),OP_BUYLIMIT,OrderLotSize,PriceOpenBuyLimit,3,SLbuy,TPbuy,ExpertName,IDorder,0,clrBlue);

     }

//---Open sell limit

   if(TypeOrdersOpen==4)

     {

      TicketSellLimit=OrderSend(Symbol(),OP_SELLLIMIT,OrderLotSize,PriceOpenSellLimit,3,SLsell,TPsell,ExpertName,IDorder,0,clrRed);

     }

//---Play sound

   if(SoundAlert==true)

     {

      if((TicketBuyStop>0)||(TicketSellStop>0)||(TicketBuyLimit>0)||(TicketSellLimit>0))

         PlaySound(SoundOpen);

     }

//------------------------------------------------------

  }

//====================================================================================================================================================//

void DeleteOrders(int TypeOrdersDelete,int PairOrdersDelete)

  {

//---------------------------------------------------------------------

   bool DeleteTicket=false;

   Print(TypeOrdersDelete);

//------------------------------------------------------

//Select order

   for(int i=OrdersTotal()-1; i>=0; i--)

     {

      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)

        {

         if((ManageOrders==1) || ((OrderMagicNumber()==MagicNumber) && (ManageOrders==0)) || ((OrderMagicNumber()==0) && (ManageOrders==2)) || ((OrderMagicNumber()==IDorder) && (ManageOrders==3)))

           {

            if(((OrderSymbol()==Symbol()) && (PairOrdersDelete==1)) || (PairOrdersDelete==0))

              {

               //---Delete buy stop

               if((TypeOrdersDelete==1) && (OrderType()==OP_BUYSTOP))

                 {

                  DeleteTicket=OrderDelete(OrderTicket(),clrNONE);

                  if((DeleteTicket>0) && (SoundAlert==true))

                     PlaySound(SoundDelete);

                 }

               //---Delete sell stop

               if((TypeOrdersDelete==2) && (OrderType()==OP_SELLSTOP))

                 {

                  DeleteTicket=OrderDelete(OrderTicket(),clrNONE);

                  if((DeleteTicket>0) && (SoundAlert==true))

                     PlaySound(SoundDelete);

                 }

               //---Delete buy limit

               if((TypeOrdersDelete==3) && (OrderType()==OP_BUYLIMIT))

                 {

                  DeleteTicket=OrderDelete(OrderTicket(),clrNONE);

                  if((DeleteTicket>0) && (SoundAlert==true))

                     PlaySound(SoundDelete);

                 }

               //---Delete sell limit

               if((TypeOrdersDelete==4) && (OrderType()==OP_SELLLIMIT))

                 {

                  DeleteTicket=OrderDelete(OrderTicket(),clrNONE);

                  if((DeleteTicket>0) && (SoundAlert==true))

                     PlaySound(SoundDelete);

                 }

               //---Delete all

               if((TypeOrdersDelete==0) && ((OrderType()==OP_BUYSTOP) || (OrderType()==OP_SELLSTOP) || (OrderType()==OP_BUYLIMIT) || (OrderType()==OP_SELLLIMIT)))

                 {

                  DeleteTicket=OrderDelete(OrderTicket(),clrNONE);

                  if((DeleteTicket>0) && (SoundAlert==true))

                     PlaySound(SoundDelete);

                 }

              }

           }

        }

     }

//---------------------------------------------------------------------

  }

//====================================================================================================================================================//

void ClosePositions(int PositionType,int PairOrdersClose)

  {

//------------------------------------------------------

   int TryCnt=0;

   bool WasOrderClosed;

//------------------------------------------------------

   for(int i=OrdersTotal()-1; i>=0; i--)

     {

      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)

        {

         if((ManageOrders==1) || ((OrderMagicNumber()==MagicNumber) && (ManageOrders==0)) || ((OrderMagicNumber()==0) && (ManageOrders==2)) || ((OrderMagicNumber()==IDorder) && (ManageOrders==3)))

           {

            if(((OrderSymbol()==Symbol()) && (PairOrdersClose==1)) || (PairOrdersClose==0))

              {

               //------------------------------------------------------

               //Close buy

               if((OrderType()==OP_BUY) && ((PositionType==1) || (PositionType==0)))

                 {

                  TryCnt=0;

                  WasOrderClosed=false;

                  while(true)

                    {

                     //---close order

                     WasOrderClosed=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),3,clrMediumAquamarine);

                     TryCnt++;

                     //---

                     if(WasOrderClosed>0)

                       {

                        if(SoundAlert==true)

                           PlaySound(SoundClose);

                        break;

                       }

                     //---Errors

                     if((GetLastError()==1) || (GetLastError()==132) || (GetLastError()==133) || (GetLastError()==137) || (GetLastError()==4108) || (GetLastError()==4109))

                        break;

                     //---try 3 times to close

                     if(TryCnt==3)

                       {

                        Print(StringConcatenate("Error: ",GetLastError()," || ",ExpertName,": Could not close, ticket: ",OrderTicket()));

                        break;

                       }

                     else

                       {

                        Print(StringConcatenate("Error: ",GetLastError()," || ",ExpertName,": receives new data and try again close order - ",OrderTicket()));

                        RefreshRates();

                       }

                    }//End while(...

                 }//End if(OrderType()==OP_BUY)

               //------------------------------------------------------

               //Close sell

               if((OrderType()==OP_SELL) && ((PositionType==2) || (PositionType==0)))

                 {

                  TryCnt=0;

                  WasOrderClosed=false;

                  while(true)

                    {

                     //---close order

                     WasOrderClosed=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),3,clrDarkSalmon);

                     TryCnt++;

                     //---

                     if(WasOrderClosed>0)

                       {

                        if(SoundAlert==true)

                           PlaySound(SoundClose);

                        break;

                       }

                     //---Errors

                     if((GetLastError()==1) || (GetLastError()==132) || (GetLastError()==133) || (GetLastError()==137) || (GetLastError()==4108) || (GetLastError()==4109))

                        break;

                     //---try 3 times to close

                     if(TryCnt==3)

                       {

                        Print(StringConcatenate("Error: ",GetLastError()," || ",ExpertName,": Could not close, ticket: ",OrderTicket()));

                        break;

                       }

                     else

                       {

                        Print(StringConcatenate("Error: ",GetLastError()," || ",ExpertName,": receives new data and try again close order - ",OrderTicket()));

                        RefreshRates();

                       }

                    }//End while(...

                 }//End if(OrderType()==OP_SELL)

               //------------------------------------------------------

              }//End if((OrderSymbol()...

           }//End OrderSelect(...

        }//End for(...

     }

//------------------------------------------------------

  }

//====================================================================================================================================================//

int UniqueMagic()

  {

//------------------------------------------------------

   int SymbolCharacter=StringLen(Symbol());

   int ExpertCharacter=StringLen(ExpertName);

   int ExpertID=0;

   int SymbolID=0;

   int cnt;

//---ID symbol

   for(cnt=0; cnt<SymbolCharacter; cnt++)

      SymbolID+=(StringGetChar(Symbol(),cnt-1)*(cnt+1));

//---ID expert

   for(cnt=0; cnt<ExpertCharacter; cnt++)

      ExpertID+=(StringGetChar(ExpertName,cnt-1)*(cnt+1));

//---

   return(SymbolID+ExpertID);

//------------------------------------------------------

  }

//====================================================================================================================================================//

void ChartText(string StringName, string Image, int FontSize, string TypeImage, color FontColor, int Xposition, int Yposition)

  {

//------------------------------------------------------

   if(ObjectFind(0,StringName)==-1)

     {

      ObjectCreate(0,StringName,OBJ_LABEL,0,0,0);

      ObjectSetInteger(0,StringName,OBJPROP_CORNER,0);

      ObjectSetInteger(0,StringName,OBJPROP_BACK,FALSE);

      ObjectSetInteger(0,StringName,OBJPROP_XDISTANCE,Xposition);

      ObjectSetInteger(0,StringName,OBJPROP_YDISTANCE,Yposition);

      ObjectSetInteger(0,StringName,OBJPROP_HIDDEN,1);

      ObjectSetText(StringName,Image,FontSize,TypeImage,FontColor);

     }

//------------------------------------------------------

  }

//====================================================================================================================================================//

void ChartBackground(string StringName, color ImageColor, int Xposition, int Yposition, int Xsize, int Ysize)

  {

//------------------------------------------------------

   if(ObjectFind(0,StringName)==-1)

     {

      ObjectCreate(0,StringName,OBJ_RECTANGLE_LABEL,0,0,0,0,0);

      ObjectSetInteger(0,StringName,OBJPROP_XDISTANCE,Xposition);

      ObjectSetInteger(0,StringName,OBJPROP_YDISTANCE,Yposition);

      ObjectSetInteger(0,StringName,OBJPROP_XSIZE,Xsize);

      ObjectSetInteger(0,StringName,OBJPROP_YSIZE,Ysize);

      ObjectSetInteger(0,StringName,OBJPROP_BGCOLOR,ColorBackground);

      ObjectSetInteger(0,StringName,OBJPROP_BORDER_TYPE,BORDER_FLAT);

      ObjectSetInteger(0,StringName,OBJPROP_BORDER_COLOR,clrBlack);

      ObjectSetInteger(0,StringName,OBJPROP_BACK,false);

      ObjectSetInteger(0,StringName,OBJPROP_SELECTABLE,false);

      ObjectSetInteger(0,StringName,OBJPROP_SELECTED,false);

      ObjectSetInteger(0,StringName,OBJPROP_HIDDEN,true);

      ObjectSetInteger(0,StringName,OBJPROP_ZORDER,0);

     }

//------------------------------------------------------

  }

//====================================================================================================================================================//

void MakeObjects(string ObjName, int CornerObject, int Xdistance, int Ydistance, int Xsize, int Ysize, color ObjBGColor, string ObjFont, color ObjColor, string ObjText, color ObjBorderColor)

  {

//------------------------------------------------------

   if(ObjectFind(0,ObjName)==-1)

     {

      ObjectCreate(0,ObjName,OBJ_BUTTON,0,0,0);

      ObjectSetInteger(0,ObjName,OBJPROP_CORNER,CornerObject);

      ObjectSetInteger(0,ObjName,OBJPROP_XDISTANCE,Xdistance);

      ObjectSetInteger(0,ObjName,OBJPROP_YDISTANCE,Ydistance);

      ObjectSetInteger(0,ObjName,OBJPROP_XSIZE,Xsize);

      ObjectSetInteger(0,ObjName,OBJPROP_YSIZE,Ysize);

      ObjectSetInteger(0,ObjName,OBJPROP_BGCOLOR,ObjBGColor);

      ObjectSetInteger(0,ObjName,OBJPROP_BORDER_COLOR,ObjBorderColor);

      ObjectSetInteger(0,ObjName,OBJPROP_STATE,false);

      ObjectSetString(0,ObjName,OBJPROP_FONT,ObjFont);

      ObjectSetInteger(0,ObjName,OBJPROP_FONTSIZE,ButtonFontSize);

      ObjectSetInteger(0,ObjName,OBJPROP_COLOR,ObjColor);

      ObjectSetInteger(0,ObjName,OBJPROP_SELECTABLE,false);

      ObjectSetInteger(0,ObjName,OBJPROP_HIDDEN,true);

      ObjectSetInteger(0,ObjName,OBJPROP_BACK,false);

      ObjectSetString(0,ObjName,OBJPROP_TEXT,ObjText);

     }

//------------------------------------------------------

  }

//====================================================================================================================================================//

void MakeBox(string BoxName, int BoxCorner, int Xdistance, int Ydistance, int Xsize, int Ysize, string BoxFont, color BoxColor, string BoxText, color BackgroundColor, color BorderColor)

  {

//------------------------------------------------------

   if(ObjectFind(0,BoxName)==-1)

     {

      ObjectCreate(0,BoxName,OBJ_EDIT,0,0,0);

      ObjectSetInteger(0,BoxName,OBJPROP_CORNER,BoxCorner);

      ObjectSetInteger(0,BoxName,OBJPROP_XDISTANCE,Xdistance);

      ObjectSetInteger(0,BoxName,OBJPROP_YDISTANCE,Ydistance);

      ObjectSetInteger(0,BoxName,OBJPROP_XSIZE,Xsize);

      ObjectSetInteger(0,BoxName,OBJPROP_YSIZE,Ysize);

      ObjectSetInteger(0,BoxName,OBJPROP_BGCOLOR,BackgroundColor);

      ObjectSetInteger(0,BoxName,OBJPROP_BORDER_COLOR,BorderColor);

      ObjectSetInteger(0,BoxName,OBJPROP_BACK,false);

      ObjectSetInteger(0,BoxName,OBJPROP_STATE,false);

      ObjectSetString(0,BoxName,OBJPROP_FONT,BoxFont);

      ObjectSetInteger(0,BoxName,OBJPROP_FONTSIZE,10);

      ObjectSetInteger(0,BoxName,OBJPROP_COLOR,BoxColor);

      ObjectSetInteger(0,BoxName,OBJPROP_SELECTABLE,0);

      ObjectSetInteger(0,BoxName,OBJPROP_HIDDEN,1);

      ObjectSetInteger(0,BoxName,OBJPROP_BACK,false);

      ObjectSetString(0,BoxName,OBJPROP_TEXT,BoxText);

     }

//------------------------------------------------------

  }

//====================================================================================================================================================//

void CallPanelButton()

  {

//------------------------------------------------------

   MakeObjects(Button1, 0, 0, 14, 200, 25, ColorCallButton, "Arial Black", ColorFontButton, "CALL ORDERS PANEL", CLR_NONE);

//------------------------------------------------------

  }

//====================================================================================================================================================//

void ManageOrdersBox()

  {

//------------------------------------------------------

//Manage ID

   MakeObjects(Button21, 0, 0, 200, 50, 30, ColorBackground, "Webdings", ColorButton21, "n", ColorButton21);

//------------------------------------------------------

//Manage all

   MakeObjects(Button22, 0, 50, 200, 50, 30, ColorBackground, "Webdings", ColorButton22, "n", ColorButton22);

//------------------------------------------------------

//Manage manual

   MakeObjects(Button23, 0, 100, 200, 50, 30, ColorBackground, "Webdings", ColorButton23, "n", ColorButton23);

//------------------------------------------------------

//Manage own

   MakeObjects(Button24, 0, 150, 200, 50, 30, ColorBackground, "Webdings", ColorButton24, "n", ColorButton24);

//------------------------------------------------------

  }

//====================================================================================================================================================//

void FullOrdersPanel()

  {

//------------------------------------------------------

//Open buy

   MakeObjects(Button2, CornerOfChart, Distance, (ButtonHeight*16)+(5*16), ButtonWidth, ButtonHeight, ColorOpenButton, "Tahoma", ColorFontButton, "Open Buy on "+StringSubstr(Symbol(),0,6), CLR_NONE);

//------------------------------------------------------

//Open sell

   MakeObjects(Button3, CornerOfChart, Distance, (ButtonHeight*15)+(5*15), ButtonWidth, ButtonHeight, ColorOpenButton, "Tahoma", ColorFontButton, "Open Sell on "+StringSubstr(Symbol(),0,6), CLR_NONE);

//------------------------------------------------------

//Place pending buy stop

   MakeObjects(Button4, CornerOfChart, Distance, (ButtonHeight*14)+(5*14), ButtonWidth, ButtonHeight, ColorPlaceStopButton, "Tahoma", ColorFontButton, "Place Buy Stop on "+StringSubstr(Symbol(),0,6), CLR_NONE);

//------------------------------------------------------

//Place pending sell stop

   MakeObjects(Button5, CornerOfChart, Distance, (ButtonHeight*13)+(5*13), ButtonWidth, ButtonHeight, ColorPlaceStopButton, "Tahoma", ColorFontButton, "Place Sell Stop on "+StringSubstr(Symbol(),0,6), CLR_NONE);

//------------------------------------------------------

//Place pending buy stop and sell stop

   MakeObjects(Button6, CornerOfChart, Distance, (ButtonHeight*12)+(5*12), ButtonWidth, ButtonHeight, ColorPlaceStopButton, "Tahoma", ColorFontButton, "Place B&S Stop on "+StringSubstr(Symbol(),0,6), CLR_NONE);

//------------------------------------------------------

//Place pending buy limit

   MakeObjects(Button25, CornerOfChart, Distance, (ButtonHeight*11)+(5*11), ButtonWidth, ButtonHeight, ColorPlaceLimitButton, "Tahoma", ColorFontButton, "Place Buy Limit on "+StringSubstr(Symbol(),0,6), CLR_NONE);

//------------------------------------------------------

//Place pending sell limit

   MakeObjects(Button26, CornerOfChart, Distance, (ButtonHeight*10)+(5*10), ButtonWidth, ButtonHeight, ColorPlaceLimitButton, "Tahoma", ColorFontButton, "Place Sell Limit on "+StringSubstr(Symbol(),0,6), CLR_NONE);

//------------------------------------------------------

//Place pending buy limit and sell limit

   MakeObjects(Button27, CornerOfChart, Distance, (ButtonHeight*9)+(5*9), ButtonWidth, ButtonHeight, ColorPlaceLimitButton, "Tahoma", ColorFontButton, "Place B&S Limit on "+StringSubstr(Symbol(),0,6), CLR_NONE);

//------------------------------------------------------

//Close buy

   MakeObjects(Button7, CornerOfChart, Distance, (ButtonHeight*8)+(5*8), ButtonWidth, ButtonHeight, ColorCloseButton, "Tahoma", ColorFontButton, "Close Buy on "+StringSubstr(Symbol(),0,6), CLR_NONE);

//------------------------------------------------------

//Close sell

   MakeObjects(Button8, CornerOfChart, Distance, (ButtonHeight*7)+(5*7), ButtonWidth, ButtonHeight, ColorCloseButton, "Tahoma", ColorFontButton, "Close Sell on "+StringSubstr(Symbol(),0,6), CLR_NONE);

//------------------------------------------------------

//Close all

   MakeObjects(Button9, CornerOfChart, Distance, (ButtonHeight*6)+(5*6), ButtonWidth, ButtonHeight, ColorCloseButton, "Tahoma", ColorFontButton, "Close All on "+StringSubstr(Symbol(),0,6), CLR_NONE);

//------------------------------------------------------

//Delete buy stop pending

   MakeObjects(Button10, CornerOfChart, Distance, (ButtonHeight*5)+(5*5), ButtonWidth, ButtonHeight, ColorDeleteStopButton, "Tahoma", ColorFontButton, "Delete BuyStop on "+StringSubstr(Symbol(),0,6), CLR_NONE);

//------------------------------------------------------

//Delete sell stop pending

   MakeObjects(Button11, CornerOfChart, Distance, (ButtonHeight*4)+(5*4), ButtonWidth, ButtonHeight, ColorDeleteStopButton, "Tahoma", ColorFontButton, "Delete SellStop on "+StringSubstr(Symbol(),0,6), CLR_NONE);

//------------------------------------------------------

//Delete buy limit pending

   MakeObjects(Button28, CornerOfChart, Distance, (ButtonHeight*3)+(5*3), ButtonWidth, ButtonHeight, ColorDeleteLimitButton, "Tahoma", ColorFontButton, "Delete BuyLimit on "+StringSubstr(Symbol(),0,6), CLR_NONE);

//------------------------------------------------------

//Delete sell limit pending

   MakeObjects(Button29, CornerOfChart, Distance, (ButtonHeight*2)+(5*2), ButtonWidth, ButtonHeight, ColorDeleteLimitButton, "Tahoma", ColorFontButton, "Delete SellLimit on "+StringSubstr(Symbol(),0,6), CLR_NONE);

//------------------------------------------------------

//Delete all pendings

   MakeObjects(Button12, CornerOfChart, Distance, (ButtonHeight*1)+(5*1), ButtonWidth, ButtonHeight, ColorDeleteAllButton, "Tahoma", ColorFontButton, "Delete All on "+StringSubstr(Symbol(),0,6), CLR_NONE);

//------------------------------------------------------

  }

//====================================================================================================================================================//

void LiteOrdersPanel()

  {

//------------------------------------------------------

//Close buy on pair

   MakeObjects(Button13, CornerOfChart, Distance, (ButtonHeight*12)+(5*12), ButtonWidth, ButtonHeight, ColorCloseButton, "Tahoma", ColorFontButton, "Close Buy on "+StringSubstr(Symbol(),0,6), CLR_NONE);

//------------------------------------------------------

//Close buy on account

   MakeObjects(Button14, CornerOfChart, Distance, (ButtonHeight*11)+(5*11), ButtonWidth, ButtonHeight, ColorCloseButton, "Tahoma", ColorFontButton, "Close Buy on All Pairs", CLR_NONE);

//------------------------------------------------------

//Close sell on pair

   MakeObjects(Button15, CornerOfChart, Distance, (ButtonHeight*10)+(5*10), ButtonWidth, ButtonHeight, ColorCloseButton, "Tahoma", ColorFontButton, "Close Sell on "+StringSubstr(Symbol(),0,6), CLR_NONE);

//------------------------------------------------------

//Close sell on account

   MakeObjects(Button16, CornerOfChart, Distance, (ButtonHeight*9)+(5*9), ButtonWidth, ButtonHeight, ColorCloseButton, "Tahoma", ColorFontButton, "Close Sell on All Pairs", CLR_NONE);

//------------------------------------------------------

//Delete pending buy stop on pair

   MakeObjects(Button17, CornerOfChart, Distance, (ButtonHeight*8)+(5*8), ButtonWidth, ButtonHeight, ColorDeleteStopButton, "Tahoma", ColorFontButton, "Delete BuyStop on "+StringSubstr(Symbol(),0,6), CLR_NONE);

//------------------------------------------------------

//Delete pending buy stop on account

   MakeObjects(Button18, CornerOfChart, Distance, (ButtonHeight*7)+(5*7), ButtonWidth, ButtonHeight, ColorDeleteStopButton, "Tahoma", ColorFontButton, "Delete BuyStop on All Pairs", CLR_NONE);

//------------------------------------------------------

//Delete pending sell stop on pair

   MakeObjects(Button19, CornerOfChart, Distance, (ButtonHeight*6)+(5*6), ButtonWidth, ButtonHeight, ColorDeleteStopButton, "Tahoma", ColorFontButton, "Delete SellStop on "+StringSubstr(Symbol(),0,6), CLR_NONE);

//------------------------------------------------------

//Delete pending sell stop on account

   MakeObjects(Button20, CornerOfChart, Distance, (ButtonHeight*5)+(5*5), ButtonWidth, ButtonHeight, ColorDeleteStopButton, "Tahoma", ColorFontButton, "Delete SellStop on All Pairs", CLR_NONE);

//------------------------------------------------------

//Delete pending buy limit on pair

   MakeObjects(Button30, CornerOfChart, Distance, (ButtonHeight*4)+(5*4), ButtonWidth, ButtonHeight, ColorDeleteLimitButton, "Tahoma", ColorFontButton, "Delete BuyLimit on "+StringSubstr(Symbol(),0,6), CLR_NONE);

//------------------------------------------------------

//Delete pending buy limit on account

   MakeObjects(Button31, CornerOfChart, Distance, (ButtonHeight*3)+(5*3), ButtonWidth, ButtonHeight, ColorDeleteLimitButton, "Tahoma", ColorFontButton, "Delete BuyLimit on All Pairs", CLR_NONE);

//------------------------------------------------------

//Delete pending sell limit on pair

   MakeObjects(Button32, CornerOfChart, Distance, (ButtonHeight*2)+(5*2), ButtonWidth, ButtonHeight, ColorDeleteLimitButton, "Tahoma", ColorFontButton, "Delete SellLimit on "+StringSubstr(Symbol(),0,6), CLR_NONE);

//------------------------------------------------------

//Delete pending sell limit on account

   MakeObjects(Button33, CornerOfChart, Distance, (ButtonHeight*1)+(5*1), ButtonWidth, ButtonHeight, ColorDeleteLimitButton, "Tahoma", ColorFontButton, "Delete SellLimit on All Pairs", CLR_NONE);

//------------------------------------------------------

  }

//====================================================================================================================================================//

Comments

Markdown supported. Formatting help

Markdown Formatting Guide

Element Markdown Syntax
Heading # H1
## H2
### H3
Bold **bold text**
Italic *italicized text*
Link [title](https://www.example.com)
Image ![alt text](image.jpg)
Code `code`
Code Block ```
code block
```
Quote > blockquote
Unordered List - Item 1
- Item 2
Ordered List 1. First item
2. Second item
Horizontal Rule ---