cm ea manual grid

Orders Execution
Checks for the total of open ordersIt Closes Orders by itself It automatically opens orders when conditions are reached
Miscellaneous
It issuies visual alerts to the screen
0 Views
0 Downloads
0 Favorites
cm ea manual grid
ÿþ//+------------------------------------------------------------------+

//|                               Copyright © 2016, %;KAB>2 ;048<8@ |

//|                                                cmillion@narod.ru |

//+------------------------------------------------------------------+

#property copyright "Copyright © 2019, http://cmillion.ru"

#property link      "cmillion@narod.ru"

#property strict

#property description "!>25B=8: 2KAB02;O5B A5B8 8 ?><>305B A>18@0BL ?@>D8B A ;N1>3> 42865=8O"



/*!>25B=8: A5B52>9 ?><>I=8:



=>?:8 A>25B=8:0

"Buy Stop" - >B:@K20BL A5BL >B;>65==KE AB>? >@45@>2 =0 ?@>406C

"Sell Stop" - >B:@K20BL A5BL >B;>65==KE AB>? >@45@>2 =0 ?>:C?:C

"Buy Limit"- >B:@K20BL A5BL >B;>65==KE ;8<8B >@45@>2 =0 ?@>406C

"Sell Limit" - >B:@K20BL A5BL >B;>65==KE ;8<8B >@45@>2 =0 ?>:C?:C

"Close Buy" - :=>?:0 70:@KB8O 2A59 A5B8 8 2A5E >B:@KBKE ?>78F89 =0 ?>:C?:C

"Close Sell" - :=>?:0 70:@KB8O 2A59 A5B8 8 2A5E >B:@KBKE ?>78F89 =0 ?@>406C

"Close" - :=>?:0 70:@KB8O 2A59 A5B8 8 2A5E >B:@KBKE ?>78F89

"Tral Profit" - :=>?:0 ?@8 =060B88 :>B>@>9 A>25B=8: 1C45B B@0;8BL ?@>D8B 2A5E ?>78F89 =0G8=0O >B TralStart 



 =0AB@>9:0E A>25B=8:0

MaxBuy            -<0:A8<0;L=>5 :>;-2> Buy

MaxSell           -<0:A8<0;L=>5 :>;-2> Sell

OrdersBuyStop     - :>;-2> >@45@>2 A5B8 BuyStop

OrdersSellStop    - :>;-2> >@45@>2 A5B8 SellStop

OrdersBuyLimit    - :>;-2> >@45@>2 A5B8 BuyLimit

OrdersSellLimit   - :>;-2> >@45@>2 A5B8 SellLimit

StepBuyStop       - H03 >@45@>2 A5B8 BuyStop

StepSellStop      - H03 >@45@>2 A5B8 SellStop

StepBuyLimit      - H03 >@45@>2 A5B8 BuyLimit

StepSellLimit     - H03 >@45@>2 A5B8 SellLimit

Lot               - ;>B ?5@2>3> >@45@0 >B F5=K, 40;55 ?> D>@<C;5

LotPlus           - 4>102:0 : =0G0;L=><C ;>BC

K_Lot             - >MDD8F85=B C25;8G5=8O

CloseProfitB      - 70:@K205< buy ?@8 4>AB865=88 ?@>D8B0

CloseProfitS      - 70:@K205< sell ?@8 4>AB865=88 ?@>D8B0

ProfitClose       - 70:@K205< 2A5 ?@8 4>AB865=88 ?@>D8B0

TralStart         - AB0@B B@0;0 ?@8 4>AB865=88 ?@>D8B0

TralClose         - 70:@K20BL 2A5 ?>A;5 >B:0B0 =0

slippage          - ?@>A:0;L7K20=85

Magic             - <038: >@45@>2, 5A;8 -1 B> ?>4E20B8B 2A5

X                 - A<5I5=85 ?0=5;8 ?> 3>@87>=B0;8

Y                 - A<5I5=85 ?0=5;8 ?> 25@B8:0;8

TradeOFF          - >B:;NG5=85 B>@3>2;8 ?>A;5 27OB8O ?@81K;8



0?@8<5@ 

Lot = 0.1

LotPlus = 0.1



?5@2K9 ;>B 0.1    

2B>@>9     0.1+0.1=0.2 

B@5B89     0.2+0.1=0.3 

G5B2Q@BK9  0.3+0.1=0.4  

---------------------

FirstLevel -  0AB>O=85 >B F5=K 4> ?5@2>3> >@45@0 ( 5A;8 0 B> >B:@K205BAO A C@>2=5< AB>?;525; )

========================================

$8:A0F8O ?@81K;8 2-20 A?>A>10:

ProfitClose - ?@81K;L 2 20;NB5 45?>78B0 ( =0?@8<5@ AB028< 100$?@8 4>AB865=88 >1I59 ?@81K;8 A5B:8 100$ , >=0 70:@>5BAO)

TralStart  - ?@>D8B 4;O AB0@B0 B@0;0 2 20;NB5 45?>78B0 =0?@8<5@ 50$

TralClose  -  70:@K205BAO ?@8 A=865=88 ?@81K;8 =0?@8<5@ B5 65 20$

@81K;L 4>AB83;0 50, 2:;NG8;AO B@0;, ?@81K;L ?@>4>;68;0 @0AB8 4> 60, ?>B>< >B:0B8;0AL =0 20 8 2A5 70:@K;>AAL ?@8 40$ ?@>D8B0

>B;>6:8 C40;ONBAO, 2KA:0:8205B 0;5@B A 2>?@>A>< ?@>4>;68BL @01>BC? @8 >B25B5   - 2KAB02;O5BAO A=>20. 

=========================================

A>15==>AB8 70:@KB8O >@45@>2

!=0G0;0 A>25B=8: ?KB05BAO 70:@KBL 2A5 >@45@0 2AB@5G=>, ?>B>< 70:@K205< @K=>G=K5, =0G8=0O A A0<KE 1>;LH8E >1J5<>2 0 ?>B>< >B;>6:8..

//--------------------------------------------------------------------*/

extern int     MaxBuy            = 50;    //<0:A8<0;L=>5 :>;-2>  Buy

extern int     MaxSell           = 50;    //<0:A8<0;L=>5 :>;-2> Sell



extern int     OrdersBuyStop     = 5;     //:>;-2> >@45@>2 A5B8 BuyStop

extern int     OrdersSellStop    = 5;     //:>;-2> >@45@>2 A5B8 SellStop

extern int     OrdersBuyLimit    = 5;     //:>;-2> >@45@>2 A5B8 BuyLimit

extern int     OrdersSellLimit   = 5;     //:>;-2> >@45@>2 A5B8 SellLimit

extern string _="";

extern int     FirstLevelStop    = 50;    // 0AB>O=85 >B F5=K 4> ?5@2>3> Stop >@45@0 ( 5A;8 0 B> >B:@K205BAO A C@>2=5< AB>?;525; )

extern int     StepBuyStop       = 100;   //H03 >@45@>2 A5B8 BuyStop

extern int     StepSellStop      = 100;   //H03 >@45@>2 A5B8 SellStop

extern int     FirstLevelLimit   = 110;   // 0AB>O=85 >B F5=K 4> ?5@2>3> Limit >@45@0 ( 5A;8 0 B> >B:@K205BAO A C@>2=5< AB>?;525; )

extern int     StepBuyLimit      = 100;   //H03 >@45@>2 A5B8 BuyLimit

extern int     StepSellLimit     = 100;   //H03 >@45@>2 A5B8 SellLimit



extern string __="";



extern double  Lot               = 0.10;  //;>B ?5@2>3> >@45@0 >B F5=K, 40;55 ?> D>@<C;5

extern double  LotPlus           = 0.00;  //4>102:0 : =0G0;L=><C ;>BC

extern double  K_Lot             = 1.00;  //>MDD8F85=B C25;8G5=8O



extern string ___="";



extern double  CloseProfitB      = 10;    //70:@K205< buy ?@8 4>AB865=88 ?@>D8B0

extern double  CloseProfitS      = 10;    //70:@K205< sell ?@8 4>AB865=88 ?@>D8B0

extern double  ProfitClose       = 10;    //70:@K205< 2A5 ?@8 4>AB865=88 ?@>D8B0

extern double  TralStart         = 10;    //AB0@B B@0;0 ?@8 4>AB865=88 ?@>D8B0

extern double  TralClose         = 5;     //70:@K20BL 2A5 ?>A;5 >B:0B0 =0



extern int     slippage          = 5;     // ?@>A:0;L7K20=85

extern int     Magic             = -1;    //<038: >@45@>2, 5A;8 -1 B> ?>4E20B8B 2A5

extern int     X                 = 0;     //A<5I5=85 ?0=5;8 ?> 3>@87>=B0;8

extern int     Y                 = 25;    //A<5I5=85 ?0=5;8 ?> 25@B8:0;8

extern bool    TradeOFF          = true;  //>B:;NG5=85 B>@3>2;8 ?>A;5 27OB8O ?@81K;8

extern bool    CloseByON         = true;  //8A?>;L7>20BL 2AB@5G=>5 70:@KB85

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

double STOPLEVEL;

double StopProfit=0;

string val,GV_kn_BS,GV_kn_SS,GV_kn_BL,GV_kn_SL,GV_kn_TrP,GV_kn_CBA,GV_kn_CSA,GV_kn_CA;

bool D,LANGUAGE;

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

int OnInit()

  {

   int AN=AccountNumber();

   string FIO=AccountName();

   EditCreate(0,"cm ©11",0,1,0,120,20,"mail: ea@cmillion.ru","Arial",8,ALIGN_CENTER,false,CORNER_LEFT_LOWER);



   EventSetTimer(1);

   LANGUAGE=TerminalInfoString(TERMINAL_LANGUAGE)=="Russian";

   if(IsTesting()) ObjectsDeleteAll(0);

   val=AccountCurrency();

   string GVn=StringConcatenate("cm mg ",AN," ",Symbol());

   if(IsTesting()) GVn=StringConcatenate("Test ",GVn);

   GV_kn_BS=StringConcatenate(GVn," BS");

   GV_kn_SS=StringConcatenate(GVn," SS");

   GV_kn_BL=StringConcatenate(GVn," BL");

   GV_kn_SL=StringConcatenate(GVn," SL");

   GV_kn_TrP=StringConcatenate(GVn," TrP");

   GV_kn_CBA=StringConcatenate(GVn," CBA");

   GV_kn_CSA=StringConcatenate(GVn," CSA");

   GV_kn_CA=StringConcatenate(GVn," CA");



   RectLabelCreate(0,"cm F",0,229,2,220,304,clrIvory);

   DrawLABEL("cm HB",Text(LANGUAGE,"HB","pcs"),95,10,clrBlack,ANCHOR_CENTER);

   DrawLABEL("cm H03",Text(LANGUAGE,"H03","step"),40,10,clrBlack,ANCHOR_CENTER);

   int y=40;

   DrawLABEL("cm fs",Text(LANGUAGE,"@0AAB>O=85 4> ?5@2>3> Stop","distance to the first Stop"),220,26,clrBlack,ANCHOR_LEFT);

   ButtonCreate(0,"cm Buy Stop",0,225,y,100,20,"Buy Stop","Arial",8,clrBlack,clrLightGray,clrLightGray,clrNONE,GlobalVariableCheck(GV_kn_BS));y+=22;

   ButtonCreate(0,"cm Sell Stop",0,225,y,100,20,"Sell Stop","Arial",8,clrBlack,clrLightGray,clrLightGray,clrNONE,GlobalVariableCheck(GV_kn_SS));y+=22;

   DrawLABEL("cm fl",Text(LANGUAGE,"@0AAB>O=85 4> ?5@2>3> Limit","distance to the first Limit"),220,y+10,clrBlack,ANCHOR_LEFT);y+=22;

   ButtonCreate(0,"cm Buy Limit",0,225,y,100,20,"Buy Limit","Arial",8,clrBlack,clrLightGray,clrLightGray,clrNONE,GlobalVariableCheck(GV_kn_BL));y+=22;

   ButtonCreate(0,"cm Sell Limit",0,225,y,100,20,"Sell Limit","Arial",8,clrBlack,clrLightGray,clrLightGray,clrNONE,GlobalVariableCheck(GV_kn_SL));



   y=40;

   EditCreate(0,"cm OrdersBuyStop",0,120,y,50,20,IntegerToString(OrdersBuyStop),"Arial",8,ALIGN_CENTER,false);y+=22;

   EditCreate(0,"cm OrdersSellStop" ,0,120,y,50,20,IntegerToString(OrdersSellStop),"Arial",8,ALIGN_CENTER,false);y+=44;

   EditCreate(0,"cm OrdersBuyLimit" ,0,120,y,50,20,IntegerToString(OrdersBuyLimit),"Arial",8,ALIGN_CENTER,false);y+=22;

   EditCreate(0,"cm OrdersSellLimit",0,120,y,50,20,IntegerToString(OrdersSellLimit),"Arial",8,ALIGN_CENTER,false);



   y=18;

   EditCreate(0,"cm FirstLevelStop",0,65,y,50,20,IntegerToString(FirstLevelStop),"Arial",8,ALIGN_CENTER,false);y+=22;

   EditCreate(0,"cm StepBuyStop",0,65,y,50,20,IntegerToString(StepBuyStop),"Arial",8,ALIGN_CENTER,false);y+=22;

   EditCreate(0,"cm StepSellStop",0,65,y,50,20,IntegerToString(StepSellStop),"Arial",8,ALIGN_CENTER,false);y+=22;

   EditCreate(0,"cm FirstLevelLimit",0,65,y,50,20,IntegerToString(FirstLevelLimit),"Arial",8,ALIGN_CENTER,false);y+=22;

   EditCreate(0,"cm StepBuyLimit",0,65,y,50,20,IntegerToString(StepBuyLimit),"Arial",8,ALIGN_CENTER,false);y+=22;

   EditCreate(0,"cm StepSellLimit",0,65,y,50,20,IntegerToString(StepSellLimit),"Arial",8,ALIGN_CENTER,false);y+=22;



   DrawLABEL("cm lot",Text(LANGUAGE,">B","Lot"),220,y+10,clrBlack,ANCHOR_LEFT);

   EditCreate(0,"cm Lot",0,175,y,50,20,DoubleToString(Lot,2),"Arial",8,ALIGN_CENTER,false);

   EditCreate(0,"cm LotPlus",0,120,y,50,20,DoubleToString(LotPlus,2),"Arial",8,ALIGN_CENTER,false);

   EditCreate(0,"cm K_Lot",0,65,y,50,20,DoubleToString(K_Lot,2),"Arial",8,ALIGN_CENTER,false);

   DrawLABEL("cm +","+",125,y+10,clrBlack,ANCHOR_LEFT);

   DrawLABEL("cm x","x",70,y+10,clrBlack,ANCHOR_LEFT);y+=22;



   DrawLABEL("cm prof",Text(LANGUAGE,"7OB85 ?@81K;8","Profit taking"),220,y+10,clrBlack,ANCHOR_LEFT);

   DrawLABEL("cm val",val,95,y+10,clrBlack,ANCHOR_CENTER);y+=22;



   ButtonCreate(0,"cm Close Buy",0,225,y,100,20,"Close Buy");

   EditCreate(0,"cm CloseProfitB",0,120,y,50,20,DoubleToString(CloseProfitB,2),"Arial",8,ALIGN_CENTER,false);

   ButtonCreate(0,"cm Close Buy A",0,65,y,50,20,"auto","Arial",8,clrBlack,clrLightGray,clrLightGray,clrNONE,GlobalVariableCheck(GV_kn_CBA));y+=22;



   ButtonCreate(0,"cm Close Sell",0,225,y,100,20,"Close Sell");

   EditCreate(0,"cm CloseProfitS",0,120,y,50,20,DoubleToString(CloseProfitS,2),"Arial",8,ALIGN_CENTER,false);

   ButtonCreate(0,"cm Close Sell A",0,65,y,50,20,"auto","Arial",8,clrBlack,clrLightGray,clrLightGray,clrNONE,GlobalVariableCheck(GV_kn_CSA));y+=22;



   ButtonCreate(0,"cm Close",0,225,y,100,20,"Close");

   EditCreate(0,"cm ProfitClose",0,120,y,50,20,DoubleToString(ProfitClose,2),"Arial",8,ALIGN_CENTER,false);

   ButtonCreate(0,"cm Close A",0,65,y,50,20,"auto","Arial",8,clrBlack,clrLightGray,clrLightGray,clrNONE,GlobalVariableCheck(GV_kn_CA));y+=22;



   ButtonCreate(0,"cm Tral Profit",0,225,y,100,20,Text(LANGUAGE,""@0; ?@>D8B0","Tral profit"),"Arial",8,clrBlack,clrLightGray,clrLightGray,clrNONE,GlobalVariableCheck(GV_kn_TrP));

   EditCreate(0,"cm TralStart",0,120,y,50,20,DoubleToString(TralStart,2),"Arial",8,ALIGN_CENTER,false);

   EditCreate(0,"cm TralClose",0,65,y,50,20,DoubleToString(TralClose,2),"Arial",8,ALIGN_CENTER,false);y+=22;



   ButtonCreate(0,"cm off",0,225,y,210,20,Text(LANGUAGE,"B:;NG5=85 ?>A;5 27OB8O ?@>D8B0","Shutdown after taking profit"),"Arial",8,clrBlack,clrLightGray,clrLightGray,clrNONE,TradeOFF);



   ButtonCreate(0,"cm Clear",0,75-X,25-Y,70,20,Text(LANGUAGE,"G8AB:0","Clear"),"Times New Roman",8,clrBlack,clrGray,clrLightGray,clrNONE,false,CORNER_RIGHT_LOWER);

   return(INIT_SUCCEEDED);

  }

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

void OnTick() {OnTimer();}

//+------------------------------------------------------------------+

//|                                                                  |

//+------------------------------------------------------------------+

void OnTimer()

  {

   if(!IsTradeAllowed()) return;

   STOPLEVEL=MarketInfo(Symbol(),MODE_STOPLEVEL);



   OrdersBuyStop=(int)StringToInteger(ObjectGetString(0,"cm OrdersBuyStop",OBJPROP_TEXT));

   OrdersSellStop=(int)StringToInteger(ObjectGetString(0,"cm OrdersSellStop",OBJPROP_TEXT));

   OrdersBuyLimit=(int)StringToInteger(ObjectGetString(0,"cm OrdersBuyLimit",OBJPROP_TEXT));

   OrdersSellLimit=(int)StringToInteger(ObjectGetString(0,"cm OrdersSellLimit",OBJPROP_TEXT));



   FirstLevelStop=(int)StringToInteger(ObjectGetString(0,"cm FirstLevelStop",OBJPROP_TEXT));

   FirstLevelLimit=(int)StringToInteger(ObjectGetString(0,"cm FirstLevelLimit",OBJPROP_TEXT));

   StepBuyStop=(int)StringToInteger(ObjectGetString(0,"cm StepBuyStop",OBJPROP_TEXT));

   StepSellStop=(int)StringToInteger(ObjectGetString(0,"cm StepSellStop",OBJPROP_TEXT));

   StepBuyLimit=(int)StringToInteger(ObjectGetString(0,"cm StepBuyLimit",OBJPROP_TEXT));

   StepSellLimit=(int)StringToInteger(ObjectGetString(0,"cm StepSellLimit",OBJPROP_TEXT));



   CloseProfitB=StringToDouble(ObjectGetString(0,"cm CloseProfitB",OBJPROP_TEXT));

   CloseProfitS=StringToDouble(ObjectGetString(0,"cm CloseProfitS",OBJPROP_TEXT));

   ProfitClose=StringToDouble(ObjectGetString(0,"cm ProfitClose",OBJPROP_TEXT));

   TralStart=StringToDouble(ObjectGetString(0,"cm TralStart",OBJPROP_TEXT));

   TralClose=StringToDouble(ObjectGetString(0,"cm TralClose",OBJPROP_TEXT));



   Lot=StringToDouble(ObjectGetString(0,"cm Lot",OBJPROP_TEXT));

   LotPlus=StringToDouble(ObjectGetString(0,"cm LotPlus",OBJPROP_TEXT));

   K_Lot=StringToDouble(ObjectGetString(0,"cm K_Lot",OBJPROP_TEXT));

   TradeOFF=ObjectGetInteger(0,"cm off",OBJPROP_STATE);

//---

   double OL,OOP,Profit=0,ProfitB=0,ProfitS=0;

   double OOPBS=0,OOPSS=0,OOPBL=0,OOPSL=0,OLBS=0,OLSS=0,OLBL=0,OLSL=0;

   int OTBS=0,OTSS=0,OTBL=0,OTSL=0;

   int Ticket,i,b=0,s=0,bs=0,ss=0,bl=0,sl=0,tip;

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

     {

      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))

        {

         if(OrderSymbol()==Symbol() && (Magic==-1 || Magic==OrderMagicNumber()))

           {

            tip = OrderType();

            OOP = NormalizeDouble(OrderOpenPrice(),Digits);

            Profit=OrderProfit()+OrderSwap()+OrderCommission();

            Ticket=OrderTicket();

            OL=OrderLots();

            if(tip==OP_BUY)

              {

               ProfitB+=Profit;

               b++;

              }

            if(tip==OP_SELL)

              {

               ProfitS+=Profit;

               s++;

              }

            if(tip==OP_BUYSTOP)

              {

               if(OOPBS<OOP) {OOPBS=OOP;OTBS=Ticket;OLBS=OL;}

               bs++;

              }

            if(tip==OP_SELLSTOP)

              {

               if(OOPSS>OOP || OOPSS==0) {OOPSS=OOP;OTSS=Ticket;OLSS=OL;}

               ss++;

              }

            if(tip==OP_BUYLIMIT)

              {

               if(OOPBL>OOP || OOPBL==0) {OOPBL=OOP;OTBL=Ticket;OLBL=OL;}

               bl++;

              }

            if(tip==OP_SELLLIMIT)

              {

               if(OOPSL<OOP) {OOPSL=OOP;OTSL=Ticket;OLSL=OL;}

               sl++;

              }

           }

        }

     }

   Profit=ProfitB+ProfitS;

   ObjectSetString(0,"cm Close Buy",OBJPROP_TEXT,StringConcatenate("CloseBuy ",DoubleToStr(ProfitB,2)));

   ObjectSetString(0,"cm Close Sell",OBJPROP_TEXT,StringConcatenate("CloseSell ",DoubleToStr(ProfitS,2)));

   ObjectSetString(0,"cm Close",OBJPROP_TEXT,StringConcatenate("Close ",DoubleToStr(Profit,2)));

   ObjectSetInteger(0,"cm Close Buy",OBJPROP_COLOR,Color(ProfitB));

   ObjectSetInteger(0,"cm Close Sell",OBJPROP_COLOR,Color(ProfitS));

   ObjectSetInteger(0,"cm Close",OBJPROP_COLOR,Color(Profit));



   ObjectSetString(0,"cm Buy Stop",OBJPROP_TEXT,StringConcatenate("BuyStop ",bs));

   ObjectSetString(0,"cm Sell Stop",OBJPROP_TEXT,StringConcatenate("SellStop ",ss));

   ObjectSetString(0,"cm Buy Limit",OBJPROP_TEXT,StringConcatenate("BuyLimit ",bl));

   ObjectSetString(0,"cm Sell Limit",OBJPROP_TEXT,StringConcatenate("SellLimit ",sl));

//---

   if(ObjectGetInteger(0,"cm Clear",OBJPROP_STATE))

     {

      ObjectsDeleteAll(0,OBJ_TEXT);

      ObjectsDeleteAll(0,"#");

      ObjectsDeleteAll(0,OBJ_ARROW);

      ObjectsDeleteAll(0,OBJ_TREND);

      ObjectSetInteger(0,"cm Clear",OBJPROP_STATE,false);

     }

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

//----- 70:@KB85 ?> ?@>D8BC  --------

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

//--- buy

   if(ObjectGetInteger(0,"cm Close Buy A",OBJPROP_STATE))

     {

      GlobalVariableSet(GV_kn_CBA,1);

      ObjectSetInteger(0,"cm CloseProfitB",OBJPROP_COLOR,clrRed);

      if(b!=0 && ProfitB>=CloseProfitB) ObjectSetInteger(0,"cm Close Buy",OBJPROP_STATE,true);

     }

   else {ObjectSetInteger(0,"cm CloseProfitB",OBJPROP_COLOR,clrLightGray);GlobalVariableDel(GV_kn_CBA);}

   if(ObjectGetInteger(0,"cm Close Buy",OBJPROP_STATE))

     {

      if(b!=0) if(!CloseAll(OP_BUY)) Print("Error Order Close ",GetLastError());

      else

        {

         if(TradeOFF) ObjectSetInteger(0,"cm Buy Stop",OBJPROP_STATE,false);

         if(TradeOFF) ObjectSetInteger(0,"cm Buy Limit",OBJPROP_STATE,false);

         ObjectSetInteger(0,"cm Close Buy",OBJPROP_STATE,false);

        }

     }

//--- sell 

   if(ObjectGetInteger(0,"cm Close Sell A",OBJPROP_STATE))

     {

      GlobalVariableSet(GV_kn_CSA,1);

      ObjectSetInteger(0,"cm CloseProfitS",OBJPROP_COLOR,clrRed);

      if(s!=0 && ProfitS>=CloseProfitS) ObjectSetInteger(0,"cm Close Sell",OBJPROP_STATE,true);

     }

   else {ObjectSetInteger(0,"cm CloseProfitS",OBJPROP_COLOR,clrLightGray);GlobalVariableDel(GV_kn_CSA);}

   if(ObjectGetInteger(0,"cm Close Sell",OBJPROP_STATE))

     {

      if(s!=0) if(!CloseAll(OP_SELL)) Print("Error Order Close ",GetLastError());

      else

        {

         if(TradeOFF) ObjectSetInteger(0,"cm Sell Stop",OBJPROP_STATE,false);

         if(TradeOFF) ObjectSetInteger(0,"cm Sell Limit",OBJPROP_STATE,false);

         ObjectSetInteger(0,"cm Close Sell",OBJPROP_STATE,false);

        }

     }

//--- 2A5 

   if(ObjectGetInteger(0,"cm Close A",OBJPROP_STATE))

     {

      GlobalVariableSet(GV_kn_CA,1);

      ObjectSetInteger(0,"cm ProfitClose",OBJPROP_COLOR,clrRed);

      if(b+s!=0 && Profit>=ProfitClose) ObjectSetInteger(0,"cm Close",OBJPROP_STATE,true);

     }

   else {ObjectSetInteger(0,"cm ProfitClose",OBJPROP_COLOR,clrLightGray);GlobalVariableDel(GV_kn_CA);}

   if(ObjectGetInteger(0,"cm Close",OBJPROP_STATE))

     {

      if(s+b!=0) if(!CloseByOrders()) Print("Error Order Close By ",GetLastError());

      else

        {

         if(TradeOFF) ObjectSetInteger(0,"cm Buy Stop",OBJPROP_STATE,false);

         if(TradeOFF) ObjectSetInteger(0,"cm Buy Limit",OBJPROP_STATE,false);

         if(TradeOFF) ObjectSetInteger(0,"cm Sell Stop",OBJPROP_STATE,false);

         if(TradeOFF) ObjectSetInteger(0,"cm Sell Limit",OBJPROP_STATE,false);

         ObjectSetInteger(0,"cm Close",OBJPROP_STATE,false);

        }

     }

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

//--- >B:@KB85 >@45@>2 ---------

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

   double lots,price;

   if(ObjectGetInteger(0,"cm Buy Stop",OBJPROP_STATE))

     {

      if(bs<OrdersBuyStop)

        {

         if(bs==0)

           {

            lots=Lot; price=NormalizeDouble(Ask+FirstLevelStop*Point,Digits);

            if(FirstLevelStop==0 && b==0)

              {

               if(SendOrder(OP_BUY,lots,NormalizeDouble(Ask,Digits),0,0)) lots=0;

              }

           }

         else {lots=OLBS*K_Lot+LotPlus; price=NormalizeDouble(OOPBS+StepBuyStop*Point,Digits);}

         if(lots!=0 && b+bl+bs<MaxBuy)

            SendOrder(OP_BUYSTOP,lots,price,0,0);

        }

      GlobalVariableSet(GV_kn_BS,1);

     }

   else

     {

      GlobalVariableDel(GV_kn_BS);

      if(bs>0) if(!OrderDelete(OTBS)) Print("Error <<",GetLastError(),">>  ");

     }

//---

   if(ObjectGetInteger(0,"cm Sell Stop",OBJPROP_STATE))

     {

      if(ss<OrdersSellStop)

        {

         if(ss==0)

           {

            lots=Lot; price=NormalizeDouble(Bid-FirstLevelStop*Point,Digits);

            if(FirstLevelStop==0 && s==0)

              {

               if(SendOrder(OP_SELL,lots,NormalizeDouble(Bid,Digits),0,0)) lots=0;

              }

           }

         else {lots=OLSS*K_Lot+LotPlus; price=NormalizeDouble(OOPSS-StepSellStop*Point,Digits);}

         if(lots!=0 && s+sl+ss<MaxSell)

            SendOrder(OP_SELLSTOP,lots,price,0,0);

        }

      GlobalVariableSet(GV_kn_SS,1);

     }

   else

     {

      GlobalVariableDel(GV_kn_SS);

      if(ss>0) if(!OrderDelete(OTSS)) Print("Error <<",GetLastError(),">>  ");

     }

//---

   if(ObjectGetInteger(0,"cm Buy Limit",OBJPROP_STATE))

     {

      if(bl<OrdersBuyLimit)

        {

         if(bl==0)

           {

            lots=Lot; price=NormalizeDouble(Bid-FirstLevelLimit*Point,Digits);

            if(FirstLevelLimit==0 && b==0)

              {

               if(SendOrder(OP_BUY,lots,NormalizeDouble(Ask,Digits),0,0)) lots=0;

              }

           }

         else {lots=OLBL*K_Lot+LotPlus; price=NormalizeDouble(OOPBL-StepBuyLimit*Point,Digits);}

         if(lots!=0 && b+bl+bs<MaxBuy)

            SendOrder(OP_BUYLIMIT,lots,price,0,0);

        }

      GlobalVariableSet(GV_kn_BL,1);

     }

   else

     {

      GlobalVariableDel(GV_kn_BL);

      if(bl>0) if(!OrderDelete(OTBL)) Print("Error <<",GetLastError(),">>  ");

     }

//---

   if(ObjectGetInteger(0,"cm Sell Limit",OBJPROP_STATE))

     {

      if(sl<OrdersSellLimit)

        {

         if(sl==0)

           {

            lots=Lot; price=NormalizeDouble(Ask+FirstLevelLimit*Point,Digits);

            if(FirstLevelLimit==0 && s==0)

              {

               if(SendOrder(OP_SELL,lots,NormalizeDouble(Bid,Digits),0,0)) lots=0;

              }

           }

         else {lots=OLSL*K_Lot+LotPlus; price=NormalizeDouble(OOPSL+StepSellLimit*Point,Digits);}

         if(lots!=0 && s+sl+ss<MaxSell)

            SendOrder(OP_SELLLIMIT,lots,price,0,0);

        }

      GlobalVariableSet(GV_kn_SL,1);

     }

   else

     {

      GlobalVariableDel(GV_kn_SL);

      if(sl>0) if(!OrderDelete(OTSL)) Print("Error <<",GetLastError(),">>  ");

     }

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

//--------- B@0; ?@>D8B0 ----------

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

   if(ObjectGetInteger(0,"cm Tral Profit",OBJPROP_STATE)) //B@0; 

     {

      ObjectSetInteger(0,"cm TralStart",OBJPROP_COLOR,clrRed);

      ObjectSetInteger(0,"cm TralClose",OBJPROP_COLOR,clrRed);

      GlobalVariableSet(GV_kn_TrP,1);

      if(TralClose>TralStart) TralClose=TralStart;

      if(Profit>=TralStart && StopProfit==0) StopProfit=Profit;

      if(Profit>=StopProfit  && StopProfit!=0) StopProfit=Profit;

      if(StopProfit!=0) ObjectSetString(0,"cm Tral Profit",OBJPROP_TEXT,StringConcatenate("Tral ",DoubleToStr(StopProfit-TralClose,2)));

      else ObjectSetString(0,"cm Tral Profit",OBJPROP_TEXT,Text(LANGUAGE,""@0; ?@>D8B0","Tral profit"));

      if(Profit<=StopProfit-TralClose && StopProfit!=0)

        {

         if(CloseByOrders())

           {

            if(TradeOFF) ObjectSetInteger(0,"cm Buy Stop",OBJPROP_STATE,false);

            if(TradeOFF) ObjectSetInteger(0,"cm Buy Limit",OBJPROP_STATE,false);

            if(TradeOFF) ObjectSetInteger(0,"cm Sell Stop",OBJPROP_STATE,false);

            if(TradeOFF) ObjectSetInteger(0,"cm Sell Limit",OBJPROP_STATE,false);

           }

         StopProfit=0;

         drawtext(StringConcatenate("rl ",TimeToStr(TimeCurrent(),TIME_DATE|TIME_MINUTES)),Time[0],Bid,StringConcatenate("Close all ",DoubleToStr(Profit,2)),clrGreen);

         return;

        }

     }

   else

     {

      GlobalVariableDel(GV_kn_TrP);

      StopProfit=0;ObjectSetInteger(0,"cm TralStart",OBJPROP_COLOR,clrLightGray);

      ObjectSetInteger(0,"cm TralClose",OBJPROP_COLOR,clrLightGray);

      ObjectSetString(0,"cm Tral Profit",OBJPROP_TEXT,Text(LANGUAGE,""@0; ?@>D8B0","Tral profit"));

     }

  }

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

color Color(double P)

  {

   if(P>0) return(clrGreen);

   if(P<0) return(clrRed);

   return(clrGray);

  }

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

void DrawLABEL(string name,string Name,int x,int y,color clr,ENUM_ANCHOR_POINT align=ANCHOR_RIGHT,int CORNER=1)

  {

   if(ObjectFind(name)==-1)

     {

      ObjectCreate(name,OBJ_LABEL,0,0,0);

      ObjectSet(name,OBJPROP_CORNER,CORNER);

      ObjectSet(name,OBJPROP_XDISTANCE,x+X);

      ObjectSet(name,OBJPROP_YDISTANCE,y+Y);

      ObjectSetInteger(0,name,OBJPROP_SELECTABLE,false);

      ObjectSetInteger(0,name,OBJPROP_SELECTED,false);

      ObjectSetInteger(0,name,OBJPROP_HIDDEN,true);

      ObjectSetInteger(0,name,OBJPROP_ANCHOR,align);

     }

   ObjectSetText(name,Name,8,"Arial",clr);

  }

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

void OnDeinit(const int reason)

  {

   if(!IsTesting())

     {

      ObjectsDeleteAll(0,"cm");

     }

   Comment("");

   EventKillTimer();

  }

//+------------------------------------------------------------------+

bool CloseByOrders()

  {

   bool error=true;

   int b=0,s=0,TicketApponent=0,Ticket,OT,j,LaslApp=-1;

   int closeby=0;

   while(!IsStopped())

     {

      if(CloseByON)

        {

         for(j=OrdersTotal()-1; j>=0; j--)

           {

            if(OrderSelect(j,SELECT_BY_POS))

              {

               if(OrderSymbol()==Symbol() && (Magic==-1 || Magic==OrderMagicNumber()))

                 {

                  OT=OrderType();

                  Ticket=OrderTicket();

                  if(OT>1) {error=OrderDelete(Ticket);continue;}

                  if(TicketApponent==0) {TicketApponent=Ticket;LaslApp=OT;}

                  else

                    {

                     if(LaslApp==OT) continue;

                     if(OrderCloseBy(Ticket,TicketApponent,Green)) TicketApponent=0;

                     else {closeby++;Print("H81:0 ",GetLastError()," 70:@KB8O >@45@0 N ",Ticket," <-> ",TicketApponent);}

                    }

                 }

              }

           }

         if(closeby>5) break;

         b=0;s=0;

         for(j=OrdersTotal()-1; j>=0; j--)

           {

            if(OrderSelect(j,SELECT_BY_POS,MODE_TRADES))

              {

               if(OrderSymbol()==Symbol() && (Magic==-1 || Magic==OrderMagicNumber()))

                 {

                  OT=OrderType();

                  if(OT==OP_BUY) b++;

                  if(OT==OP_SELL) s++;

                 }

              }

           }

         if(b==0 || s==0) break;

        }

     }

   CloseAll(-1);

   return(true);

  }

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

bool CloseAll(int tip)

  {

   bool error=true;

   int j,err,nn=0,OT;

   while(true)

     {

      for(j=OrdersTotal()-1; j>=0; j--)

        {

         if(OrderSelect(j,SELECT_BY_POS))

           {

            if(OrderSymbol()==Symbol() && (Magic==-1 || Magic==OrderMagicNumber()))

              {

               OT=OrderType();

               if(tip!=-1 && tip!=OT) continue;

               if(OT==OP_BUY)

                 {

                  error=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),slippage,Blue);

                 }

               if(OT==OP_SELL)

                 {

                  error=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),slippage,Red);

                 }

               if(!error)

                 {

                  err=GetLastError();

                  if(err<2) continue;

                  if(err==129)

                    {

                     RefreshRates();

                     continue;

                    }

                  if(err==146)

                    {

                     if(IsTradeContextBusy()) Sleep(2000);

                     continue;

                    }

                  Print("H81:0 ",err," 70:@KB8O >@45@0 N ",OrderTicket(),"     ",TimeToStr(TimeCurrent(),TIME_SECONDS));

                 }

              }

           }

        }

      int n=0;

      for(j= 0; j<OrdersTotal(); j++)

        {

         if(OrderSelect(j,SELECT_BY_POS))

           {

            if(OrderSymbol()==Symbol() && (Magic==-1 || Magic==OrderMagicNumber()))

              {

               OT=OrderType();

               if(OT>1)

                 {

                  int Ticket=OrderTicket();

                  if(tip==-1) error=OrderDelete(Ticket);

                  else

                    {

                     if(tip==OP_BUY && (OT==OP_BUYLIMIT || OT==OP_BUYSTOP)) error=OrderDelete(Ticket);

                     if(tip==OP_SELL && (OT==OP_SELLLIMIT || OT==OP_SELLSTOP)) error=OrderDelete(Ticket);

                    }

                  continue;

                 }

               if(tip!=-1 && tip!=OT) continue;

               n++;

              }

           }

        }

      if(n==0) break;

      nn++;

      if(nn>10)

        {

         Alert(Symbol()," 5 C40;>AL 70:@KBL 2A5 A45;:8, >AB0;>AL 5I5 ",n);

         return(false);

        }

      Sleep(1000);

      RefreshRates();

     }

   return(true);

  }

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

bool ButtonCreate(const long              chart_ID=0,               // ID 3@0D8:0

                  const string            name="Button",            // 8<O :=>?:8

                  const int               sub_window=0,             // =><5@ ?>4>:=0

                  const long               x=0,                      // :>>@48=0B0 ?> >A8 X

                  const long               y=0,                      // :>>@48=0B0 ?> >A8 Y

                  const int               width=50,                 // H8@8=0 :=>?:8

                  const int               height=18,                // 2KA>B0 :=>?:8

                  const string            text="Button",            // B5:AB

                  const string            font="Arial",             // H@8DB

                  const int               font_size=8,// @07<5@ H@8DB0

                  const color             clr=clrBlack,// F25B B5:AB0

                  const color             clrON=clrLightGray,// F25B D>=0

                  const color             clrOFF=clrLightGray,// F25B D>=0

                  const color             border_clr=clrNONE,// F25B 3@0=8FK

                  const bool              state=false,       //

                  const ENUM_BASE_CORNER  CORNER=CORNER_RIGHT_UPPER)

  {

   if(ObjectFind(chart_ID,name)==-1)

     {

      ObjectCreate(chart_ID,name,OBJ_BUTTON,sub_window,0,0);

      ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width);

      ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height);

      ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,CORNER);

      ObjectSetString(chart_ID,name,OBJPROP_FONT,font);

      ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,font_size);

      ObjectSetInteger(chart_ID,name,OBJPROP_BACK,0);

      ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,0);

      ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,0);

      ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,1);

      ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,1);

      ObjectSetInteger(chart_ID,name,OBJPROP_STATE,state);

     }

   ObjectSetInteger(chart_ID,name,OBJPROP_BORDER_COLOR,border_clr);

   color back_clr;

   if(ObjectGetInteger(chart_ID,name,OBJPROP_STATE)) back_clr=clrON; else back_clr=clrOFF;

   ObjectSetInteger(chart_ID,name,OBJPROP_BGCOLOR,back_clr);

   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);

   ObjectSetString(chart_ID,name,OBJPROP_TEXT,text);

   ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x+X);

   ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y+Y);

   return(true);

  }

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

bool RectLabelCreate(const long             chart_ID=0,               // ID 3@0D8:0

                     const string           name="RectLabel",         // 8<O <5B:8

                     const int              sub_window=0,             // =><5@ ?>4>:=0

                     const long              x=0,                     // :>>@48=0B0 ?> >A8 X

                     const long              y=0,                     // :>>@48=0B0 ?> >A8 y

                     const int              width=50,                 // H8@8=0

                     const int              height=18,                // 2KA>B0

                     const color            back_clr=clrWhite,        // F25B D>=0

                     const color            clr=clrBlack,             // F25B ?;>A:>9 3@0=8FK (Flat)

                     const ENUM_LINE_STYLE  style=STYLE_SOLID,        // AB8;L ?;>A:>9 3@0=8FK

                     const int              line_width=1,             // B>;I8=0 ?;>A:>9 3@0=8FK

                     const bool             back=false,               // =0 704=5< ?;0=5

                     const bool             selection=false,          // 2K45;8BL 4;O ?5@5<5I5=89

                     const bool             hidden=true,              // A:@KB 2 A?8A:5 >1J5:B>2

                     const long             z_order=0)                // ?@8>@8B5B =0 =060B85 <KHLN

  {

   ResetLastError();

   if(ObjectFind(chart_ID,name)==-1)

     {

      ObjectCreate(chart_ID,name,OBJ_RECTANGLE_LABEL,sub_window,0,0);

      ObjectSetInteger(chart_ID,name,OBJPROP_BORDER_TYPE,BORDER_FLAT);

      ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,CORNER_RIGHT_UPPER);

      ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);

      ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,line_width);

      ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);

      ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);

      ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);

      ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);

      ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);

      //ObjectSetInteger(chart_ID,name,OBJPROP_ALIGN,ALIGN_RIGHT); 

     }

   ObjectSetInteger(chart_ID,name,OBJPROP_BGCOLOR,back_clr);

   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);

   ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width);

   ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height);

   ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x+X);

   ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y+Y);

   return(true);

  }

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

string Error(int code)

  {

   switch(code)

     {

      case 0:   return("5B >H81>:");

      case 1:   return("5B >H81:8, => @57C;LB0B =58725AB5=");

      case 2:   return("1I0O >H81:0");

      case 3:   return("5?@028;L=K5 ?0@0<5B@K");

      case 4:   return("">@3>2K9 A5@25@ 70=OB");

      case 5:   return("!B0@0O 25@A8O :;85=BA:>3> B5@<8=0;0");

      case 6:   return("5B A2O78 A B>@3>2K< A5@25@><");

      case 7:   return("54>AB0B>G=> ?@02");

      case 8:   return("!;8H:>< G0ABK5 70?@>AK");

      case 9:   return("54>?CAB8<0O >?5@0F8O =0@CH0NI0O DC=:F8>=8@>20=85 A5@25@0");

      case 64:  return("!G5B 701;>:8@>20=");

      case 65:  return("5?@028;L=K9 =><5@ AG5B0");

      case 128: return("AB5: A@>: >6840=8O A>25@H5=8O A45;:8");

      case 129: return("5?@028;L=0O F5=0");

      case 130: return("5?@028;L=K5 AB>?K");

      case 131: return("5?@028;L=K9 >1J5<");

      case 132: return(" K=>: 70:@KB");

      case 133: return("">@3>2;O 70?@5I5=0");

      case 134: return("54>AB0B>G=> 45=53 4;O A>25@H5=8O >?5@0F88");

      case 135: return("&5=0 87<5=8;0AL");

      case 136: return("5B F5=");

      case 137: return("@>:5@ 70=OB");

      case 138: return(">2K5 F5=K");

      case 139: return("@45@ 701;>:8@>20= 8 C65 >1@010BK205BAO");

      case 140: return(" 07@5H5=0 B>;L:> ?>:C?:0");

      case 141: return("!;8H:>< <=>3> 70?@>A>2");

      case 145: return(">48D8:0F8O 70?@5I5=0, B0: :0: >@45@ A;8H:>< 1;87>: : @K=:C");

      case 146: return(">4A8AB5<0 B>@3>2;8 70=OB0");

      case 147: return("A?>;L7>20=85 40BK 8AB5G5=8O >@45@0 70?@5I5=> 1@>:5@><");

      case 148: return(">;8G5AB2> >B:@KBKE 8 >B;>65==KE >@45@>2 4>AB83;> ?@545;0, CAB0=>2;5==>3> 1@>:5@><.");

      default:   return(StringConcatenate("H81:0 ",code," =58725AB=0 "));

     }

  }

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

bool EditCreate(const long             chart_ID=0,               // ID 3@0D8:0 

                const string           name="Edit",              // 8<O >1J5:B0 

                const int              sub_window=0,             // =><5@ ?>4>:=0 

                const int              x=0,                      // :>>@48=0B0 ?> >A8 X 

                const int              y=0,                      // :>>@48=0B0 ?> >A8 Y 

                const int              width=50,                 // H8@8=0 

                const int              height=18,                // 2KA>B0 

                const string           text="Text",              // B5:AB 

                const string           font="Arial",             // H@8DB 

                const int              font_size=8,             // @07<5@ H@8DB0 

                const ENUM_ALIGN_MODE  align=ALIGN_RIGHT,       // A?>A>1 2K@02=820=8O 

                const bool             read_only=true,// 2>7<>6=>ABL @540:B8@>20BL 

                const ENUM_BASE_CORNER corner=CORNER_RIGHT_UPPER,// C3>; 3@0D8:0 4;O ?@82O7:8 

                const color            clr=clrBlack,             // F25B B5:AB0 

                const color            back_clr=clrWhite,        // F25B D>=0 

                const color            border_clr=clrNONE,       // F25B 3@0=8FK 

                const bool             back=false,               // =0 704=5< ?;0=5 

                const bool             selection=false,          // 2K45;8BL 4;O ?5@5<5I5=89 

                const bool             hidden=true,              // A:@KB 2 A?8A:5 >1J5:B>2 

                const long             z_order=0)                // ?@8>@8B5B =0 =060B85 <KHLN 

  {

   ResetLastError();

   if(!ObjectCreate(chart_ID,name,OBJ_EDIT,sub_window,0,0))

     {

      Print(__FUNCTION__,

            ": =5 C40;>AL A>740BL >1J5:B ",name,"! >4 >H81:8 = ",GetLastError());

      return(false);

     }

   ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x+X);

   ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y+Y);

   ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width);

   ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height);

   ObjectSetString(chart_ID,name,OBJPROP_TEXT,text);

   ObjectSetString(chart_ID,name,OBJPROP_FONT,font);

   ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,font_size);

   ObjectSetInteger(chart_ID,name,OBJPROP_ALIGN,align);

   ObjectSetInteger(chart_ID,name,OBJPROP_READONLY,read_only);

   ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner);

   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);

   ObjectSetInteger(chart_ID,name,OBJPROP_BGCOLOR,back_clr);

   ObjectSetInteger(chart_ID,name,OBJPROP_BORDER_COLOR,border_clr);

   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);

   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);

   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);

   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);

   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);

   return(true);

  }

//+------------------------------------------------------------------+ 

string Text(bool P,string a,string b)

  {

   if(P) return(a);

   else return(b);

  }

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

void drawtext(string Name,datetime T1,double Y1,string lt,color c)

  {

   ObjectDelete(Name);

   ObjectCreate(Name,OBJ_TEXT,0,T1,Y1,0,0,0,0);

   ObjectSetText(Name,lt,8,"Arial");

   ObjectSetInteger(0,Name,OBJPROP_COLOR,c);

   ObjectSetInteger(0,Name,OBJPROP_ANCHOR,ANCHOR_LOWER);

  }

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

bool SendOrder(int tip,double lots,double price,double sl=0,double tp=0)

  {

   if(tip<2)

     {

      if(AccountFreeMarginCheck(Symbol(),tip,lots)<0)

        {

         Alert("54>AB0B>G=> A@54AB2");

         return(false);

        }

     }

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

     {

      if(OrderSend(Symbol(),tip, lots,price,slippage,sl,tp,NULL,Magic,0,clrNONE)!=-1) return(true);

      Alert(" ?>?KB:0 ",i," H81:0 >B:@KB8O >@45@0 ",Strtip(tip)," <<",Error(GetLastError()),">>  lot=",lots,"  pr=",price," sl=",sl," tp=",tp);

      Sleep(500);

      RefreshRates();

      if(IsStopped()) return(false);

     }

   return(false);

  }

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

string StrPer(int per)

  {

   if(per == PERIOD_CURRENT) per=Period();

   if(per == PERIOD_M1) return("M1");

   if(per == PERIOD_M5) return("M5");

   if(per == PERIOD_M15) return("M15");

   if(per == PERIOD_M30) return("M30");

   if(per == PERIOD_H1) return("H1");

   if(per == PERIOD_H4) return("H4");

   if(per == PERIOD_D1) return("D1");

   if(per == PERIOD_W1) return("W1");

   if(per == PERIOD_MN1) return("MN1");

   return(">H81:0 ?5@8>40");

  }

//+------------------------------------------------------------------+

string Strtip(int tip)

  {

   switch(tip)

     {

      case OP_BUY:

         return("BUY");

      case OP_SELL:

         return("SELL");

      case OP_BUYSTOP:

         return("BUYSTOP");

      case OP_SELLSTOP:

         return("SELLSTOP");

      case OP_BUYLIMIT:

         return("BUYLIMIT");

      case OP_SELLLIMIT:

         return("SELLLIMIT");

     }

   return("error");

  }

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

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 ---