cm ea manual grid

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