YuraZ_Book_All_PriceCH_v2

Author: Copyright 2022, MetaQuotes Software Corp.
Price Data Components
Orders Execution
Checks for the total of open orders
Miscellaneous
Uses files from the file systemIt reads information from a fileIt reads information from a fileIt writes information to file
0 Views
0 Downloads
0 Favorites
YuraZ_Book_All_PriceCH_v2
ÿþ //+------------------------------------------------------------------+

//|                                       YZ_Book_All_PriceCH_V2.mq5 |

//|                   Copyright 2020-2025, MetaQuotes Software Corp. |

//|                              https://www.mql5.com/ru/users/yuraz |

//| 16.01.2025 4>@01>B:0 2 A2O78 87<5=5=8O<8 ?;0BD>@<K               |

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

#property copyright "Copyright 2022, MetaQuotes Software Corp."

#property link      "https://www.mql5.com/ru/users/yuraz"

#property version   "1.02"

#property description   "8@652>9 8=48:0B>@ 2021"



#property indicator_chart_window

#property indicator_plots 1

#property indicator_buffers 1



// 2020.10.31 0B0 ?C1;8:0F88 https://www.mql5.com/ru/code/31706

// 

// 2022.02.12 A?@02;5=0 >H81:0 >B>1@065=8O F5=K ,  DLNG5@AK

//            8709= 87<5=5=8O A2O70==K5 A >1@01>B:>9 DLNG5@A>2

//            



#include <Trade\OrderInfo.mqh>



unsigned char mapSpinDec[]=

{

0x42 ,0x4D ,0x7A ,0x01 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x36 ,0x00 ,0x00 ,0x00 ,0x28 ,0x00

,0x00 ,0x00 ,0x0B ,0x00 ,0x00 ,0x00 ,0x09 ,0x00 ,0x00 ,0x00 ,0x01 ,0x00 ,0x18 ,0x00 ,0x00 ,0x00

,0x00 ,0x00 ,0x44 ,0x01 ,0x00 ,0x00 ,0x12 ,0x0B ,0x00 ,0x00 ,0x12 ,0x0B ,0x00 ,0x00 ,0x00 ,0x00

,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00

,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00

,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00

,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00

,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00

,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x24 ,0x1C ,0xED

,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00

,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x24 ,0x1C

,0xED ,0x24 ,0x1C ,0xED ,0x24 ,0x1C ,0xED ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00

,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x24

,0x1C ,0xED ,0x24 ,0x1C ,0xED ,0x24 ,0x1C ,0xED ,0x24 ,0x1C ,0xED ,0x24 ,0x1C ,0xED ,0x00 ,0x00

,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00

,0x24 ,0x1C ,0xED ,0x24 ,0x1C ,0xED ,0x24 ,0x1C ,0xED ,0x24 ,0x1C ,0xED ,0x24 ,0x1C ,0xED ,0x24

,0x1C ,0xED ,0x24 ,0x1C ,0xED ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00

,0x00 ,0x24 ,0x1C ,0xED ,0x24 ,0x1C ,0xED ,0x24 ,0x1C ,0xED ,0x24 ,0x1C ,0xED ,0x24 ,0x1C ,0xED

,0x24 ,0x1C ,0xED ,0x24 ,0x1C ,0xED ,0x24 ,0x1C ,0xED ,0x24 ,0x1C ,0xED ,0x00 ,0x00 ,0x00 ,0x00

,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00

,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00

,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00

,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00

,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00

};



unsigned char mapSpinInc[]=

{

0x42 ,0x4D ,0x56 ,0x01 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x36 ,0x00 ,0x00 ,0x00 ,0x28 ,0x00

,0x00 ,0x00 ,0x0C ,0x00 ,0x00 ,0x00 ,0x08 ,0x00 ,0x00 ,0x00 ,0x01 ,0x00 ,0x18 ,0x00 ,0x00 ,0x00

,0x00 ,0x00 ,0x20 ,0x01 ,0x00 ,0x00 ,0x12 ,0x0B ,0x00 ,0x00 ,0x12 ,0x0B ,0x00 ,0x00 ,0x00 ,0x00

,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00

,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00

,0x00 ,0x00 ,0x00 ,0x00 ,0x1E ,0x1E ,0x1E ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00

,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00

,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x05 ,0x05 ,0x05 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00

,0x00 ,0x00 ,0x00 ,0x00 ,0x1D ,0xE6 ,0xB5 ,0x1D ,0xE6 ,0xB5 ,0x1D ,0xE6 ,0xB5 ,0x1D ,0xE6 ,0xB5

,0x1D ,0xE6 ,0xB5 ,0x1D ,0xE6 ,0xB5 ,0x1D ,0xE6 ,0xB5 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00

,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x1D ,0xE6 ,0xB5 ,0x1D ,0xE6

,0xB5 ,0x1D ,0xE6 ,0xB5 ,0x1D ,0xE6 ,0xB5 ,0x1D ,0xE6 ,0xB5 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00

,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00

,0x00 ,0x00 ,0x1D ,0xE6 ,0xB5 ,0x1D ,0xE6 ,0xB5 ,0x1D ,0xE6 ,0xB5 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00

,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00

,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x1D ,0xE6 ,0xB5 ,0x00 ,0x00 ,0x00 ,0x00

,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00

,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00

,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00

,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00

,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00

,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00      

};



//#resource "SpinDec.png";

//#resource "SpinInc.png";



//#resource "CheckBoxOn.bmp";

//#resource "CheckBoxOff.bmp";

//string ButtonInfoID="yzInfoButtonSet";  // 8<O >1J5:B0 OBJ_BITMAP_LABEL



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

//|                                                                  |

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

enum  SelIndicator

  {

   NoSelect=0,

   Select=1

  };

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

//|                                                                  |

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

struct TYZTSParams

  {

   //   string            sSymbol;

   int               Select;

   int               SymDigits;



   

  };

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

//|                                                                  |

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

enum  myOpenChart

  {

   NoOneChart    =0, // 5 B:@K20BL G0@BK

   OpenChar      =1  // B:@KBL, 5A;8 =5 >B:@KB

  };



input myOpenChart        pChartOpen=NoOneChart; // '0@BK >B:@K20L 8;8 =5B

//input int pKontract=1;

//input int pSH=100;

input int pDay       = 60; // 8=8<0;L=> =5>1E>48<>5 :>;8G5AB2> 10@>2 ?> 8=AB@C<5=BC

input int pFONT_SIZE =  7; //  07<5@ H@8DB0



//input double pPrcMax=9;                    // '8B0BL ?@>F5=B 482845=4>2, A A09B0

input int pCORNER= CORNER_LEFT_UPPER ; // <5AB> @0A?>;>65=8O =0 M:@0=5

input bool pFlagOper = false;              // ?>:07K20BL , =5 ?>:07K20BL ?>78F88

input bool pFlagGetDividend = false;              // '8B0BL =5 G8B0BL 482845=4K





input color     color_up      = clrLime;

input color     color_down    = clrRed;





#define giPosBeg    75 // !B0@B>20O ?>78F8O





string sSymbol[];

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

//|                                                                  |

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

struct TYZTSvariable

  {

   //string            sSymbol;

   int               HandleInd;

   long              idChart;

   string            NameIndicator;

  };



int gCountSym;



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

//| Custom indicator initialization function                         |

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





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

//|                                                                  |

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

class CYZTS

  {

public:

                     CYZTS(

      bool _tradeDisabled=false

                          ,bool _drawDisabled=false

   );

                    ~CYZTS();

   void              myOnChartEvent(const int id,

                                    const long &lparam,

                                    const double &dparam,

                                    const string &sparam);



   void              ProcessTick(string sSym);

   void              OnEventTimer(void);

   void              myOnBookEvent(const string &symbol) ;



private:



   COrderInfo        m_order;                      

   color             clrColor;

   color             clrColorPrc;

   MqlTick           ticks_array[];

   string            GetTickDescription(MqlTick &tick) ;

   int               GetSrHistor(string sSymbol);

   void              ProcessTickSymbol(string sSym);

   void              CreateDataParams(int iSym);

   void              DeleteIndicators(void);

   void              startDisplay(void);

   string            GetDividend(string sSymbol);

   string            GetK?;0B0(string ssSymbol);

   void              @>25@8BLA;85B">B:@KBL'0@B(int iPos);



//    void              ReadDividend(void);

//   void              GetDividendFrom_www_dohod_ru(string sSymbol);



   void              OrderGetInfoSymbol(string ssSymbol, int iSym);



   double            sym_1[];

   double            sym_1s[];

   double            sym_1b[];

   double            sym_Contract[];

   double            sym_Cena[];

   double            sym_POSITION_VOLUME[];

   double            sym_Position_Summa[];

   double            sym_POSITION_PROFIT[];

   double            sym_POSITION_TP[];

   double            sym_POSITION_TPProfit[];

   double            sym_POSITION_PRICE_OPEN[];

   double            rb1[];

   double            rs1[];

   double            s1prc[];

   double            sym_Ask[];

   double            sym_Bid[];

   color             colors[];

   color             colorsBS[];

   color             colorss1prcSave[];

   double            s1prcSave[];

   string            symDiv[];

   string            symK?;0B0[];

   double            sym_>;8G5AB2>:F89[];

   double            sym_!C<<082845=4>2[];

   double            sym_Position_SummaAll;

   double            sym_!C<<082845=4>2A53>;

   double            sym_Summa@>D8B;





   double            TPProfit;

   double            sym_TPProfit;



   double            sym_Order_Volume[];

   double            sym_Order_PRICE_OPEN[];

   double            sym_Order_Summa[];

   double            sym_Order_>;8G5AB2>:F89[];

   double            sym_Order_!C<<082845=4>2[];

   string            sym_Order_K?;0B0[];





   //string ButtonInfoID[];



   TYZTSvariable     Variable[];

   TYZTSParams       params[];



   int               XD;

   int               YD;



   int               gCountSym;

  };



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

//|                                                                  |

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

void              CYZTS::myOnBookEvent(const string &symbol)

  {

   startDisplay();

  }





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

//|                                                                  |

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

void              CYZTS::myOnChartEvent(const int id,

                                        const long &lparam,

                                        const double &dparam,

                                        const string &sparam)

  {

// startDisplay();

  }



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

//|                                                                  |

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

void CYZTS::OnEventTimer(void)

  {

//startDisplay();

//MqlDateTime mdt;

//datetime t=TimeCurrent(mdt);

//MqlDateTime str1;

//TimeToStruct(t,str1);

//string strt=StringFormat("%02d.%02d.%4d %02d.%02d.%02d",str1.day,str1.mon,str1.year,str1.hour,str1.min,str1.sec);

//Comment(strt);

  }

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

//|                                                                  |

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

int CYZTS::GetSrHistor(string ssSymbol)

  {

   int max_bars=TerminalInfoInteger(TERMINAL_MAXBARS);

   int iBar=Bars(ssSymbol,PERIOD_D1);

   double  HighAsSeries[];

   double  LowAsSeries[];

   datetime TimeAsSeries[];



   ArraySetAsSeries(TimeAsSeries,true);

   ArraySetAsSeries(HighAsSeries,true);

   ArraySetAsSeries(LowAsSeries,true);



   if(iBar<=pDay)

      return(0);



   int iS;

   iS=ArrayResize(HighAsSeries,iBar);

   if(iS!=iBar)

      return(0);

   iS=ArrayResize(LowAsSeries,iBar);

   if(iS!=iBar)

      return(0);

   iS=ArrayResize(TimeAsSeries,iBar);

   if(iS!=iBar)

      return(0);

   int copied;

   copied=CopyTime(ssSymbol,PERIOD_D1,0,iBar,TimeAsSeries);

   if(copied!=iBar)

      return(0);

   copied=CopyHigh(ssSymbol,PERIOD_D1,0,iBar,HighAsSeries);

   if(copied!=iBar)

      return(0);

   copied=CopyLow(ssSymbol,PERIOD_D1,0,iBar,LowAsSeries);

   if(copied!=iBar)

      return(0);



// string sDAY=TimeToString(TimeAsSeries[1],TIME_DATE);

// double HL=HighAsSeries[1]-LowAsSeries[1];

   double sHR= 0;

   for(int i = 1; i <= pDay; i++)

     {

      sHR=sHR+(HighAsSeries[i]-LowAsSeries[i]);

      // sDAY=TimeToString(TimeAsSeries[i],TIME_DATE);

     }

   sHR=sHR/pDay;

   return(int(sHR));

  }

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

//|                                                                  |

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

CYZTS::CYZTS(

   bool _tradeDisabled

   ,bool _drawDisabled

)

  {

   int lReal=0;

   int i_SymbolsTotal=SymbolsTotal(true);  // false - A5 A8<2>;K , true   B>;L:> A8<2>;K 2 MarketWatch

   gCountSym=i_SymbolsTotal;



   sym_Position_SummaAll=0;

   sym_!C<<082845=4>2A53>=0;

   sym_Summa@>D8B=0;

   TPProfit=0;

   int i;

//string lsymDiv;

   string ssSymbol;

   for(i=0; i<gCountSym; i++)  // =0945< 8=AB@C<5=BK A :>=B@0:B>< pKontract

     {

      ssSymbol = SymbolName(i, true);

      //lsymDiv = GetDividend(ssSymbol);

      //StringReplace(lsymDiv,"%","");

      //if(StringToDouble(lsymDiv) >= pPrcMax)

      //  {

      //   SymbolSelect(ssSymbol,true); // 2:;NG8< A8<2>; 2  MarketWatch

      //  }

      //else

      //  {

      //   SymbolSelect(ssSymbol,false); // 2:;NG8< A8<2>; 2  MarketWatch

      //  }





      //int trade_mode=(int)SymbolInfoInteger(ssSymbol,SYMBOL_TRADE_MODE);

      //switch(trade_mode)

      //  {

      //   case SYMBOL_TRADE_MODE_DISABLED: SymbolSelect(ssSymbol,false);

      //   break;

      //   case SYMBOL_TRADE_MODE_LONGONLY: SymbolSelect(ssSymbol,false);

      //   break;

      //   case SYMBOL_TRADE_MODE_SHORTONLY: SymbolSelect(ssSymbol,false);

      //   break;

      //   case SYMBOL_TRADE_MODE_CLOSEONLY: SymbolSelect(ssSymbol,false);

      //   break;

      //   case SYMBOL_TRADE_MODE_FULL: SymbolSelect(ssSymbol,true);

      //   break;

      //  }



      SymbolSelect(ssSymbol,true);



     }



// 0 2KE>45 8<55< B>;L:> B5 0:F88 :>B>@K5 40NB 482845=4K 1>;55 G5< pPrcMax ?@>F5=B>2 - ?> C<>;G0=8N 10%

   i_SymbolsTotal=SymbolsTotal(true);   // false - A5 A8<2>;K , true   B>;L:> A8<2>;K 2 MarketWatch

   gCountSym=i_SymbolsTotal;

//   if ( pFlagGetDividend == true )

//      ReadDividend(); // 70G8B05< 482845=4K





   i=gCountSym;

   ArrayResize(sym_1,i+2);

   ArrayResize(sym_1s,i+2);

   ArrayResize(sym_1b,i+2);

   ArrayResize(rb1,i+2);

   ArrayResize(rs1,i+2);

   ArrayResize(s1prc,i+2);

   ArrayResize(colors,i+2);

   ArrayResize(colorsBS,i+2);

   ArrayResize(colorss1prcSave,i+2);

   ArrayResize(s1prcSave,i+2);

   ArrayResize(sSymbol,i+2,i+2);

   ArrayResize(symDiv,i+2);

   ArrayResize(sym_Contract,i+2);

   ArrayResize(sym_Cena,i+2);

   ArrayResize(symK?;0B0,i+2);



   ArrayResize(sym_>;8G5AB2>:F89,i+2);

   ArrayResize(sym_!C<<082845=4>2,i+2);



//   ArrayResize(sym_VolumeOrder,i+2);



   ArrayResize(sym_POSITION_VOLUME,i+2);

   ArrayResize(sym_Position_Summa,i+2);

   ArrayResize(sym_POSITION_PROFIT,i+2);

   ArrayResize(sym_POSITION_TP,i+2);

   ArrayResize(sym_POSITION_TPProfit,i+2);

   ArrayResize(sym_POSITION_PRICE_OPEN,i+2);



   ArrayResize(sym_Order_Volume,i+2);

   ArrayResize(sym_Order_PRICE_OPEN,i+2);

   ArrayResize(sym_Order_Summa,i+2);

   ArrayResize(sym_Order_>;8G5AB2>:F89,i+2);

   ArrayResize(sym_Order_!C<<082845=4>2,i+2);





   for(i=0; i<gCountSym; i++)  // =0945< 8=AB@C<5=BK A :>=B@0:B>< pKontract

     {

      sym_Order_Summa[i]=0;

      //SymbolSelect(SymbolName(i,true),false); // +:;NG8< A8<2>;   MarketWatch

      sSymbol[i]=SymbolName(i,true); // false); // 03>=8< A8<2>; 2 <0AA82







      //if(SymbolInfoDouble(SymbolName(i,true),SYMBOL_TRADE_CONTRACT_SIZE) <= pKontract && SymbolName(i,true) != "" && SymbolInfoDouble(SymbolName(i,true),SYMBOL_SESSION_VOLUME) > 0  && (int)SymbolInfoInteger(SymbolName(i,true),SYMBOL_TRADE_MODE) ==  SYMBOL_TRADE_MODE_FULL)  // && (int)SymbolInfoInteger(SymbolName(i,true),SYMBOL_TRADE_MODE) !=  SYMBOL_TRADE_MODE_LONGONLY )

        {



         //ArrayResize(sym_1,i+2);

         //ArrayResize(sym_1s,i+2);

         //ArrayResize(sym_1b,i+2);

         //ArrayResize(rb1,i+2);

         //ArrayResize(rs1,i+2);

         //ArrayResize(s1prc,i+2);

         //ArrayResize(colors,i+2);

         //ArrayResize(colorsBS,i+2);

         //ArrayResize(colorss1prcSave,i+2);

         //ArrayResize(s1prcSave,i+2);

         //ArrayResize(sSymbol,i+2,i+2);



         // printf("[%s] %f %f",sSymbol[i], SymbolInfoDouble(sSymbol[i],SYMBOL_TRADE_CONTRACT_SIZE), SymbolInfoDouble(sSymbol[i],SYMBOL_SESSION_VOLUME));



         sSymbol[i]=SymbolName(i,true); // false); // 03>=8< A8<2>; 2 <0AA82

         // int srHL = GetSrHistor(sSymbol[i]);

         // if ( srHL > pSH )

         // {

         SymbolSelect(sSymbol[i],true); // 2:;NG8< A8<2>; 2  MarketWatch

         // }

         lReal++;

         ssSymbol = sSymbol[i];

         StringToLower(ssSymbol);

         symDiv[i] = GetDividend(ssSymbol);

         symK?;0B0[i ]= GetK?;0B0(ssSymbol);



        }

     }



   gCountSym = lReal;





   CreateDataParams(gCountSym);

  }







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

//|                                                                  |

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

string CYZTS::GetDividend(string ssSymbol)

  {

   string str="<0%><0>";

   int filehandle=FileOpen("yz_Div_"+ssSymbol+".dat",FILE_READ|FILE_CSV,"|");

   if(filehandle!=INVALID_HANDLE)

     {

      //--- A>E@0=O5< A>45@68<>5 <0AA820 result[] 2 D09;

      int str_size=FileReadInteger(filehandle,INT_VALUE);

      str = FileReadString(filehandle,str_size);

      //--- 70:@K205< D09;

      FileClose(filehandle);

     }

   else

     {

      // printf(" H81:0 %s","yz_Div_"+ssSymbol+".dat");

     }

//printf("[%s]",ssSymbol+" "+str);

   int iPosBeg,iPosEnd ;

   iPosBeg = StringFind(str,"<",0);

   iPosEnd = StringFind(str,">",0);

   str=StringSubstr(str, iPosBeg+1,iPosEnd-iPosBeg-1);

   return str;

  }

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

//|                                                                  |

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

string CYZTS::GetK?;0B0(string ssSymbol)

  {

   string str="<0%><0>";

   int filehandle=FileOpen("yz_Div_"+ssSymbol+".dat",FILE_READ|FILE_CSV,"|");

   if(filehandle!=INVALID_HANDLE)

     {

      //--- A>E@0=O5< A>45@68<>5 <0AA820 result[] 2 D09;

      int str_size=FileReadInteger(filehandle,INT_VALUE);

      str = FileReadString(filehandle,str_size);

      //--- 70:@K205< D09;

      FileClose(filehandle);

     }

   else

     {

      // printf(" H81:0 %s","yz_Div_"+ssSymbol+".dat");

     }

//printf("[%s]",ssSymbol+" "+str);

   int iPosBeg,iPosEnd ;

   iPosBeg = StringFind(str,"<",1);

   iPosEnd = StringFind(str,">",iPosBeg);

   str=StringSubstr(str, iPosBeg+1,iPosEnd-iPosBeg-1);

   return str;

  }







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

//|                                                                  |

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

//void CYZTS::ReadDividend(void)

//  {

//

//   for(int i=0; i<gCountSym; i++)

//     {

//      string pSymbol =   SymbolName(i,true) ;  // false); // 03>=8< A8<2>; 2 <0AA82

//      StringToLower(pSymbol);

//      GetDividendFrom_www_dohod_ru(pSymbol);

//     }

//  }



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

//|                                                                  |

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

//void CYZTS::GetDividendFrom_www_dohod_ru(string pSymbol)

//  {

//   string cookie=NULL,headers;

//   char   post[],result[];

//   int iPos2;

//   int iPos1;

//   string strK?;?B00:F8N;

//   string url="https://www.dohod.ru/ik/analytics/dividend/" ;

//   url=url+pSymbol;

////--- 4;O @01>BK A A5@25@>< =5>1E>48<> 4>1028BL URL "https://www.dohod.ru"

////--- 2 A?8A>: @07@5H5==KE URL (;02=>5 <5=N->!5@28A->0AB@>9:8, 2:;04:0 "!>25B=8:8"):

////--- >1=C;O5< :>4 ?>A;54=59 >H81:8

//   ResetLastError();

////--- 703@C7:0 html-AB@0=8FK A Yahoo Finance

//   int res=WebRequest("GET",url,cookie,NULL,500,post,0,result,headers);

//   if(res==-1)

//     {

//      Print("H81:0 2 WebRequest. >4 >H81:8  =",GetLastError());

//      //--- 2>7<>6=>, URL >BACBAB2C5B 2 A?8A:5, 2K2>48< A>>1I5=85 > =5>1E>48<>AB8 53> 4>102;5=8O

//      MessageBox("5>1E>48<> 4>1028BL 04@5A '"+url+"' 2 A?8A>: @07@5H5==KE URL 2> 2:;04:5 '!>25B=8:8'","H81:0",MB_ICONINFORMATION);

//     }

//   else

//     {

//      if(res==200)

//        {

//         //  0A?0@A8< @57C;LB0B

//         // =09B8  482845=4K

//

//         //        <table id="dividends-brief">

//         //            <tr class="frow">

//         //                <td class="greendark">11.54%</td>                <td class="dlmtr"></td>

//         //                <td class="gray">2.14%</td>                <td class="dlmtr"></td>

//         //                <td class="greenlight">0.79</td>            </tr>

//         //            <tr class="srow">

//         //                <td>B5:CI0O 4>E>4=>ABL</td><td class="dlmtr"></td>

//         //                <td>4>;O >B ?@81K;8</td><td class="dlmtr"></td>

//         //                                <td><a id="dsi-link" title="5B>48:0 @0AG5B0 8=45:A0 AB018;L=>AB8 482845=4=KE 2K?;0B (DSI)" href="/ik/analytics/dividend/pdf/dsi.pdf">8=45:A DSI</a></td>

//         //            </tr>

//         //        </table>

//         string strPars = CharArrayToString(result,0,-1,CP_UTF8);

//         string Div;

//

//         iPos1 = StringFind(strPars,"<table id=\"dividends-brief\">",0); // 0945< =0G0;> B01;8FK 482845=4>2

//

//         if(iPos1 !=0)

//           {

//            //string strPars;

//

//            iPos1 = StringFind(strPars,"<p>!>2>:C?=K5 482845=4K 2 A;54CNI85 12m: <strong><span class=",0);

//            //            //printf(" %d %d ",iPos1,iPos2   );

//            iPos1 = iPos1+StringLen("<p>!>2>:C?=K5 482845=4K 2 A;54CNI85 12m: <strong><span class=");

//            //            //printf(" %d %d ",iPos1,iPos2   );

//            iPos1 = StringFind(strPars,">",iPos1)+1;

//            //            //printf(" %d %d ",iPos1,iPos2   );

//            iPos2 = StringFind(strPars,"</span>",iPos1);

//            //            //printf(" %d %d ",iPos1,iPos2   );

//            //

//            strK?;?B00:F8N = StringSubstr(strPars, iPos1, iPos2-iPos1);  //iPos2-iPos1  );

//            printf("%s %d %d  %d [%s] ",pSymbol, iPos2-iPos1,iPos1,iPos2, strK?;?B00:F8N);

//

//            iPos1 = StringFind(strPars,"<table id=\"dividends-brief\">",0); // 0945< =0G0;> B01;8FK 482845=4>2

//            strPars = StringSubstr(strPars, iPos1, 500);

//            iPos1 = StringFind(strPars,"<tr class=\"frow\">",0);  // =0945< <tr class="frow">

//            strPars = StringSubstr(strPars, iPos1+1, 500);

//            iPos1 = StringFind(strPars,"<td class=",0)+1;  //  <td class=  BCB <>65B 1KBL @07=K9 F25B

//            strPars = StringSubstr(strPars, iPos1, 500);

//            iPos1 = StringFind(strPars,">",0); // 0E48< >3@0=8G8B5;L F25B0

//            iPos2 = StringFind(strPars,"</td>",0); // =0945< 7025@H5=85  </td>   ?@8<5@ ---}}}}    >11.54%</td>

//            Div = StringSubstr(strPars,iPos1+1,iPos2 - 1 - iPos1) ; // 2K@5705< 482845=4K

//            printf("[%s] [%s] [%s]",pSymbol, Div, strK?;?B00:F8N);

//

//

//            int filehandle=FileOpen("yz_Div_"+pSymbol+".dat",FILE_WRITE|FILE_SHARE_WRITE|FILE_CSV,"|");

//            if(filehandle!=INVALID_HANDLE)

//              {

//               //--- A>E@0=O5< A>45@68<>5 <0AA820 result[] 2 D09;

//               FileWrite(filehandle,"<"+Div+"><"+strK?;?B00:F8N+">");

//               //--- 70:@K205< D09;

//               FileClose(filehandle);

//              }

//           }

//         //--- CA?5H=0O 703@C7:0

//         //  PrintFormat("$09; CA?5H=> 703@C65=, @07<5@ %d 109B.",ArraySize(result));

//         //PrintFormat("03>;>2:8 A5@25@0: %s",headers);

//         //--- A>E@0=O5< 40==K5 2 D09;

//         int filehandle=FileOpen("yz_Div_"+pSymbol+".htm",FILE_WRITE|FILE_BIN);

//         if(filehandle!=INVALID_HANDLE)

//           {

//            //--- A>E@0=O5< A>45@68<>5 <0AA820 result[] 2 D09;

//            FileWriteArray(filehandle,result,0,ArraySize(result));

//            //--- 70:@K205< D09;

//            FileClose(filehandle);

//           }

//         else

//           {

//            Print("H81:0 2 FileOpen. >4 >H81:8 =",GetLastError());

//           }

//        }

//      else

//        {

//         //PrintFormat("H81:0 703@C7:8 '%s', :>4 %d",url,res);

//        }

//     }

//  }



void CYZTS::@>25@8BLA;85B">B:@KBL'0@B(int iPos)

{

   bool C6=>B@KBL=true;

   long currChart,prevChart=ChartFirst();

   int i=0,limit=100;

   while(i<limit)// C =0A =025@=O:0 =5 1>;LH5 100 >B:@KBKE 3@0D8:>2

     {

      currChart=ChartNext(prevChart); // =0 >A=>20=88 ?@54K4CI53> ?>;CG8< =>2K9 3@0D8:

      if(currChart<0)

         break;          // 4>AB83;8 :>=F0 A?8A:0 3@0D8:>2

      if ( ChartSymbol(currChart) == sSymbol[iPos] )

      {

         C6=>B@KBL=false; // @0D8: C65 >B:@KB

      }

      prevChart=currChart;// 70?><=8< 845=B8D8:0B>@ B5:CI53> 3@0D8:0 4;O ChartNext()

      i++;// =5 701C45< C25;8G8BL AG5BG8:

     }

   if ( C6=>B@KBL == true )

   {

      Variable[i].idChart=ChartOpen(sSymbol[i],PERIOD_CURRENT);

      ChartSetInteger(Variable[i].idChart,CHART_BRING_TO_TOP,true);

      Sleep(1000);

   }

}



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

//|                                                                  |

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

void CYZTS::CreateDataParams(int iCount)

  {

   ArrayResize(params,gCountSym+2,gCountSym+2);

   ArrayResize(Variable,gCountSym+2,gCountSym+2);

   YD=10;

   XD=3;

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

     {

      //Variable[i].HandleInd=iCustom(sSymbol[i],PERIOD_CURRENT,"YuraZ_GetSymbolTick",ChartID(),i);



      MarketBookAdd(sSymbol[i]);



      if(pChartOpen==OpenChar)

        {

         @>25@8BLA;85B">B:@KBL'0@B(i);

         //ChartIndicatorAdd(Variable[i].idChart,0,Variable[i].HandleInd);

        }

     }



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

     {

      if(!SymbolInfoInteger(sSymbol[i],SYMBOL_SELECT))

        {

         if(GetLastError()==ERR_MARKET_UNKNOWN_SYMBOL)

            return; //(-1);

         SymbolSelect(sSymbol[i-1],true);

        }

      params[i].Select=1;

      params[i].SymDigits = (int)SymbolInfoInteger(sSymbol[i],SYMBOL_DIGITS);

      

      

      if(params[i].Select==1)

        {

         if(pChartOpen==OpenChar)

           {

           }

         /////////

         if(ObjectFind(0,sSymbol[i]+"prcsbDirect")<0)//--- A>74048< :=>?:C OBJ_BITMAP_LABEL, 5A;8 55 5I5 =5B

           {

            bool created=myObjectCreate(0,sSymbol[i]+"prcsbDirect",OBJ_BITMAP_LABEL,0,0,0);//--- ?>?@>1C5< A>740BL >1J5:B OBJ_BITMAP_LABEL

            if(created)

              {

               ObjectSetInteger(0,sSymbol[i]+"prcsbDirect",OBJPROP_SELECTABLE,false);

               ChartRedraw(0); //--- >B4048< 3@0D8:C :><0=4C =0 >1=>2;5=85, GB>1K :=>?:0 ?>O28;0AL A@07C 65, =5 4>6840OAL B8:0

              }

            else

              {

               //--- >1J5:B A>740BL =5 C40;>AL, A>>1I8< >1 MB><

               PrintFormat("5 C40;>AL A>740BL >1J5:B OBJ_BITMAP_LABEL. Error code %d",GetLastError());

              }

           }

         ////////



         YD=YD+10;





         //         if(_Symbol == sSymbol[i])

         //           {

         //            HLineCreate(0,                                     // ID 3@0D8:0

         //                        sSymbol[i]+"symSR",              // 8<O ;8=88

         //                        0,                              // =><5@ ?>4>:=0

         //                        0,           // F5=0 ;8=88

         //                        clrYellow,        // F25B ;8=88

         //                        STYLE_SOLID, // AB8;L ;8=88

         //                        1,           // B>;I8=0 ;8=88

         //                        false,        // =0 704=5< ?;0=5

         //                        true,    // 2K45;8BL 4;O ?5@5<5I5=89

         //                        true,       // A:@KB 2 A?8A:5 >1J5:B>2

         //                        0);         // ?@8>@8B5B =0 =060B85 <KHLN

         //

         //           }

         SymbolSelect(sSymbol[i],true);

         PositionSelect(sSymbol[i]);







         PositionGetDouble(POSITION_VOLUME, sym_POSITION_VOLUME[i]);

         PositionGetDouble(POSITION_PRICE_OPEN, sym_POSITION_PRICE_OPEN[i]);

         //         PositionGetDouble( POSITION_PRICE_CURRENT  ,);

         PositionGetDouble(POSITION_PROFIT, sym_POSITION_PROFIT[i]);

         PositionGetDouble(POSITION_TP, sym_POSITION_TP[i]);



         //         PositionGetDouble( POSITION_TYPE_BUY       ,);

         //         PositionGetDouble( POSITION_TYPE_SELL      ,);



         sym_Contract[i]=SymbolInfoDouble(sSymbol[i],SYMBOL_TRADE_CONTRACT_SIZE);

         sym_Contract[i]=SymbolInfoDouble(sSymbol[i],SYMBOL_TRADE_CONTRACT_SIZE);



         sym_Position_Summa[i] = (sym_POSITION_VOLUME[i]*sym_Contract[i]) * sym_POSITION_PRICE_OPEN[i];



         sym_POSITION_TPProfit[i] = (sym_POSITION_VOLUME[i]*sym_Contract[i]) * sym_POSITION_TP[i];



         sym_>;8G5AB2>:F89[i] = sym_POSITION_VOLUME[i]*sym_Contract[i];

         sym_!C<<082845=4>2[i] = StringToDouble(symK?;0B0[i])*sym_>;8G5AB2>:F89[i];





         myObjectCreate(0,sSymbol[i]+"sym",OBJ_LABEL,0,0,0,0,0);

         ObjectSetInteger(0,sSymbol[i]+"sym",OBJPROP_SELECTABLE,false);

         myObjectSetTextNew(0,sSymbol[i]+"sym",sSymbol[i],pFONT_SIZE,"Arial",Lime);

         myObjectSet(0,sSymbol[i]+"sym",OBJPROP_CORNER,pCORNER);

         myObjectSet(0,sSymbol[i]+"sym",OBJPROP_XDISTANCE,XD);

         myObjectSet(0,sSymbol[i]+"sym",OBJPROP_YDISTANCE,YD);



         myObjectCreate(0,sSymbol[i]+"div",OBJ_LABEL,0,0,0,0,0);

         ObjectSetInteger(0,sSymbol[i]+"div",OBJPROP_SELECTABLE,false);

         // printf("[%s] %s",sSymbol[i],symDiv[i]);

         myObjectSetTextNew(0,sSymbol[i]+"div",symDiv[i],pFONT_SIZE,"Arial",Lime);

         myObjectSet(0,sSymbol[i]+"div",OBJPROP_CORNER,pCORNER);

         myObjectSet(0,sSymbol[i]+"div",OBJPROP_XDISTANCE,XD+giPosBeg);

         myObjectSet(0,sSymbol[i]+"div",OBJPROP_YDISTANCE,YD);



         myObjectCreate(0,sSymbol[i]+"divv",OBJ_LABEL,0,0,0,0,0);

         ObjectSetInteger(0,sSymbol[i]+"divv",OBJPROP_SELECTABLE,false);

         // printf("[%s] %s",sSymbol[i],symDiv[i]);

         myObjectSetTextNew(0,sSymbol[i]+"divv",symK?;0B0[i],pFONT_SIZE,"Arial",Lime);

         myObjectSet(0,sSymbol[i]+"divv",OBJPROP_CORNER,pCORNER);

         myObjectSet(0,sSymbol[i]+"divv",OBJPROP_XDISTANCE,XD+giPosBeg+43);

         myObjectSet(0,sSymbol[i]+"divv",OBJPROP_YDISTANCE,YD);



         myObjectCreate(0,sSymbol[i]+"Contract",OBJ_LABEL,0,0,0,0,0);

         ObjectSetInteger(0,sSymbol[i]+"Contract",OBJPROP_SELECTABLE,false);

         // printf("[%s] %s",sSymbol[i],symDiv[i]);

         myObjectSetTextNew(0,sSymbol[i]+"Contract",DoubleToString(sym_Contract[i],0),pFONT_SIZE,"Arial",Lime);

         myObjectSet(0,sSymbol[i]+"Contract",OBJPROP_CORNER,pCORNER);

         myObjectSet(0,sSymbol[i]+"Contract",OBJPROP_XDISTANCE,XD+giPosBeg+50+43);

         myObjectSet(0,sSymbol[i]+"Contract",OBJPROP_YDISTANCE,YD);





         myObjectCreate(0,sSymbol[i]+"Cena",OBJ_LABEL,0,0,0,0,0);

         ObjectSetInteger(0,sSymbol[i]+"Cena",OBJPROP_SELECTABLE,false);

         // printf("[%s] %s",sSymbol[i],symDiv[i]);

//       myObjectSetTextNew(0,sSymbol[i]+"Cena",DoubleToString(        sym_Contract[i]*SymbolInfoDouble(sSymbol[i],SYMBOL_LAST),2),pFONT_SIZE,"Arial",clrYellow);

         myObjectSetTextNew(0,sSymbol[i]+"Cena",DoubleToString(SymbolInfoDouble(sSymbol[i],SYMBOL_LAST), params[i].SymDigits ),pFONT_SIZE,"Arial",clrYellow);





         myObjectSet(0,sSymbol[i]+"Cena",OBJPROP_CORNER,pCORNER);

         myObjectSet(0,sSymbol[i]+"Cena",OBJPROP_XDISTANCE,XD+giPosBeg+50+40+43);

         myObjectSet(0,sSymbol[i]+"Cena",OBJPROP_YDISTANCE,YD);







         myObjectCreate(0,sSymbol[i]+"prc",OBJ_LABEL,0,0,0,0,0);

         ObjectSetInteger(0,sSymbol[i]+"prc",OBJPROP_SELECTABLE,false);

         myObjectSet(0,sSymbol[i]+"prc",OBJPROP_CORNER,pCORNER);

         myObjectSet(0,sSymbol[i]+"prc",OBJPROP_XDISTANCE,XD+giPosBeg+50+50+50+43);

         myObjectSet(0,sSymbol[i]+"prc",OBJPROP_YDISTANCE,YD);



         myObjectCreate(0,sSymbol[i]+"SV",OBJ_LABEL,0,0,0,0,0);

         ObjectSetInteger(0,sSymbol[i]+"SV",OBJPROP_SELECTABLE,false);

         myObjectSet(0,sSymbol[i]+"SV",OBJPROP_XDISTANCE,XD+giPosBeg+110+50+50+50+43);

         myObjectSet(0,sSymbol[i]+"SV",OBJPROP_YDISTANCE,YD);

         myObjectSet(0,sSymbol[i]+"SV",OBJPROP_CORNER,pCORNER);



         myObjectCreate(0,sSymbol[i]+"BV",OBJ_LABEL,0,0,0,0,0);

         ObjectSetInteger(0,sSymbol[i]+"BV",OBJPROP_SELECTABLE,false);

         myObjectSet(0,sSymbol[i]+"BV",OBJPROP_XDISTANCE,XD+giPosBeg+70+50+50+50+43);

         myObjectSet(0,sSymbol[i]+"BV",OBJPROP_YDISTANCE,YD);

         myObjectSet(0,sSymbol[i]+"BV",OBJPROP_CORNER,pCORNER);



         myObjectCreate(0,sSymbol[i]+"sb",OBJ_LABEL,0,0,0,0,0);

         ObjectSetInteger(0,sSymbol[i]+"sb",OBJPROP_SELECTABLE,false);

         myObjectSet(0,sSymbol[i]+"sb",OBJPROP_XDISTANCE,XD+giPosBeg+150+50+50+50+43);

         myObjectSet(0,sSymbol[i]+"sb",OBJPROP_YDISTANCE,YD);

         myObjectSet(0,sSymbol[i]+"sb",OBJPROP_CORNER,pCORNER);



         myObjectCreate(0,sSymbol[i]+"prcsb",OBJ_LABEL,0,0,0,0,0);

         ObjectSetInteger(0,sSymbol[i]+"prcsb",OBJPROP_SELECTABLE,false);

         myObjectSet(0,sSymbol[i]+"prcsb",OBJPROP_XDISTANCE,XD+giPosBeg+190+50+50+50+43);

         myObjectSet(0,sSymbol[i]+"prcsb",OBJPROP_YDISTANCE,YD);

         myObjectSet(0,sSymbol[i]+"prcsb",OBJPROP_CORNER,pCORNER);



         ObjectSetInteger(0,sSymbol[i]+"prcsbDirect",OBJPROP_XDISTANCE,XD+giPosBeg+205+50+50+50+43);//--- B5?5@L =0AB@>8< A2>9AB20 >1J5:B0

         ObjectSetInteger(0,sSymbol[i]+"prcsbDirect",OBJPROP_YDISTANCE,YD);

         myObjectSet(0,sSymbol[i]+"prcsbDirect",OBJPROP_CORNER,pCORNER);





         myObjectCreate(0,sSymbol[i]+"BUY",OBJ_LABEL,0,0,0,0,0);

         ObjectSetInteger(0,sSymbol[i]+"BUY",OBJPROP_SELECTABLE,false);

         myObjectSet(0,sSymbol[i]+"BUY",OBJPROP_XDISTANCE,XD+giPosBeg+221+50+50+50+43);

         myObjectSet(0,sSymbol[i]+"BUY",OBJPROP_YDISTANCE,YD);

         myObjectSet(0,sSymbol[i]+"BUY",OBJPROP_CORNER,pCORNER);



         myObjectCreate(0,sSymbol[i]+"SELL",OBJ_LABEL,0,0,0,0,0);

         ObjectSetInteger(0,sSymbol[i]+"SELL",OBJPROP_SELECTABLE,false);

         myObjectSet(0,sSymbol[i]+"SELL",OBJPROP_XDISTANCE,XD+giPosBeg+275+50+50+50+43);

         myObjectSet(0,sSymbol[i]+"SELL",OBJPROP_YDISTANCE,YD);

         myObjectSet(0,sSymbol[i]+"SELL",OBJPROP_CORNER,pCORNER);







         myObjectCreate(0,sSymbol[i]+"prcSellBay",OBJ_LABEL,0,0,0,0,0);

         ObjectSetInteger(0,sSymbol[i]+"prcSellBay",OBJPROP_SELECTABLE,false);

         myObjectSet(0,sSymbol[i]+"prcSellBay",OBJPROP_XDISTANCE,XD+giPosBeg+329+50+50+50+43);

         myObjectSet(0,sSymbol[i]+"prcSellBay",OBJPROP_YDISTANCE,YD);

         myObjectSet(0,sSymbol[i]+"prcSellBay",OBJPROP_CORNER,pCORNER);



         if(pFlagOper == true)

           {

            if(sym_Position_Summa[i] != 0)

              {

               myObjectCreate(0,sSymbol[i]+"PosSumma",OBJ_LABEL,0,0,0,0,0);

               ObjectSetInteger(0,sSymbol[i]+"PosSumma",OBJPROP_SELECTABLE,false);

               // printf("[%s] %s",sSymbol[i],symDiv[i]);

               myObjectSetTextNew(0,sSymbol[i]+"PosSumma",DoubleToString(sym_Position_Summa[i],2),pFONT_SIZE,"Arial",clrYellow);

               myObjectSet(0,sSymbol[i]+"PosSumma",OBJPROP_CORNER,pCORNER);

               myObjectSet(0,sSymbol[i]+"PosSumma",OBJPROP_XDISTANCE,XD+giPosBeg+315+50+50+50+50+43);

               myObjectSet(0,sSymbol[i]+"PosSumma",OBJPROP_YDISTANCE,YD);



               myObjectCreate(0,sSymbol[i]+"PosProfit",OBJ_LABEL,0,0,0,0,0);

               ObjectSetInteger(0,sSymbol[i]+"PosProfit",OBJPROP_SELECTABLE,false);

               // printf("[%s] %s",sSymbol[i],symDiv[i]);

               if(sym_POSITION_PROFIT[i] >= 0)

                  myObjectSetTextNew(0,sSymbol[i]+"PosProfit",DoubleToString(sym_POSITION_PROFIT[i],2),pFONT_SIZE,"Arial",clrLimeGreen);

               if(sym_POSITION_PROFIT[i] < 0)

                  myObjectSetTextNew(0,sSymbol[i]+"PosProfit",DoubleToString(sym_POSITION_PROFIT[i],2),pFONT_SIZE,"Arial",clrRed);



               myObjectSet(0,sSymbol[i]+"PosProfit",OBJPROP_CORNER,pCORNER);

               myObjectSet(0,sSymbol[i]+"PosProfit",OBJPROP_XDISTANCE,XD+giPosBeg+315+80+50+50+50+50+43);

               myObjectSet(0,sSymbol[i]+"PosProfit",OBJPROP_YDISTANCE,YD);



               sym_Summa@>D8B = sym_Summa@>D8B + sym_POSITION_PROFIT[i];



               //// %  >AB0 8;8 ?045=8O



               myObjectCreate(0,sSymbol[i]+"sym_Prc",OBJ_LABEL,0,0,0,0,0);

               ObjectSetInteger(0,sSymbol[i]+"sym_Prc",OBJPROP_SELECTABLE,false);

               double Prc = sym_POSITION_PROFIT[i] / sym_Position_Summa[i] * 100;

               myObjectSetTextNew(0,sSymbol[i]+"sym_Prc",DoubleToString(Prc, 2),pFONT_SIZE,"Arial",clrYellow);

               myObjectSet(0,sSymbol[i]+"sym_Prc",OBJPROP_CORNER,pCORNER);

               myObjectSet(0,sSymbol[i]+"sym_Prc",OBJPROP_XDISTANCE,XD+giPosBeg+315+110+50+50+50+50+43+50);

               myObjectSet(0,sSymbol[i]+"sym_Prc",OBJPROP_YDISTANCE,YD);



               myObjectCreate(0,sSymbol[i]+"sym_TPProfit",OBJ_LABEL,0,0,0,0,0);

               ObjectSetInteger(0,sSymbol[i]+"sym_TPProfit",OBJPROP_SELECTABLE,false);



               myObjectSetTextNew(0,sSymbol[i]+"sym_TPProfit",DoubleToString(sym_POSITION_TPProfit[i], 2),pFONT_SIZE,"Arial",clrYellow);

               myObjectSet(0,sSymbol[i]+"sym_TPProfit",OBJPROP_CORNER,pCORNER);

               myObjectSet(0,sSymbol[i]+"sym_TPProfit",OBJPROP_XDISTANCE,XD+giPosBeg+315+110+50+50+50+50+43+50+50);

               myObjectSet(0,sSymbol[i]+"sym_TPProfit",OBJPROP_YDISTANCE,YD);









               myObjectCreate(0,sSymbol[i]+"sym_>;8G5AB2>:F89",OBJ_LABEL,0,0,0,0,0);

               ObjectSetInteger(0,sSymbol[i]+"sym_>;8G5AB2>:F89",OBJPROP_SELECTABLE,false);

               // printf("[%s] %s",sSymbol[i],symDiv[i]);

               myObjectSetTextNew(0,sSymbol[i]+"sym_>;8G5AB2>:F89",DoubleToString(sym_>;8G5AB2>:F89[i],0),pFONT_SIZE,"Arial",clrYellow);

               myObjectSet(0,sSymbol[i]+"sym_>;8G5AB2>:F89",OBJPROP_CORNER,pCORNER);

               myObjectSet(0,sSymbol[i]+"sym_>;8G5AB2>:F89",OBJPROP_XDISTANCE,XD+giPosBeg+315+110+50+50+50+50+43+50+50+50);

               myObjectSet(0,sSymbol[i]+"sym_>;8G5AB2>:F89",OBJPROP_YDISTANCE,YD);





               myObjectCreate(0,sSymbol[i]+"sym_!C<<082845=4>2",OBJ_LABEL,0,0,0,0,0);

               ObjectSetInteger(0,sSymbol[i]+"sym_!C<<082845=4>2",OBJPROP_SELECTABLE,false);

               // printf("[%s] %s",sSymbol[i],symDiv[i]);

               myObjectSetTextNew(0,sSymbol[i]+"sym_!C<<082845=4>2",DoubleToString(sym_!C<<082845=4>2[i],2),pFONT_SIZE,"Arial",clrYellow);

               myObjectSet(0,sSymbol[i]+"sym_!C<<082845=4>2",OBJPROP_CORNER,pCORNER);

               myObjectSet(0,sSymbol[i]+"sym_!C<<082845=4>2",OBJPROP_XDISTANCE,XD+giPosBeg+315+120+50+50+50+50+43+50+50+50+50);

               myObjectSet(0,sSymbol[i]+"sym_!C<<082845=4>2",OBJPROP_YDISTANCE,YD);





               sym_!C<<082845=4>2A53>  = sym_!C<<082845=4>2A53> +sym_!C<<082845=4>2[i];

               sym_Position_SummaAll = sym_Position_SummaAll +sym_Position_Summa[i];

              }



            OrderGetInfoSymbol(sSymbol[i], i);  // >;CG8BL 40==K ?> >B;>6:0<



            if(sym_Order_Summa[i] > 0)

              {



               myObjectCreate(0,sSymbol[i]+"OrderSumma",OBJ_LABEL,0,0,0,0,0);

               ObjectSetInteger(0,sSymbol[i]+"OrderSumma",OBJPROP_SELECTABLE,false);

               myObjectSetTextNew(0,sSymbol[i]+"OrderSumma",DoubleToString(sym_Order_Summa[i],2),pFONT_SIZE,"Arial",clrYellow);

               myObjectSet(0,sSymbol[i]+"OrderSumma",OBJPROP_CORNER,pCORNER);

               myObjectSet(0,sSymbol[i]+"OrderSumma",OBJPROP_XDISTANCE,XD+giPosBeg+315+120+50+50+50+50+43+50+50+50);

               myObjectSet(0,sSymbol[i]+"OrderSumma",OBJPROP_YDISTANCE,YD);



               myObjectCreate(0,sSymbol[i]+"sym_O>;8G5AB2>:F89",OBJ_LABEL,0,0,0,0,0);

               ObjectSetInteger(0,sSymbol[i]+"sym_O>;8G5AB2>:F89",OBJPROP_SELECTABLE,false);

               myObjectSetTextNew(0,sSymbol[i]+"sym_O>;8G5AB2>:F89",DoubleToString(sym_Order_>;8G5AB2>:F89[i],0),pFONT_SIZE,"Arial",clrYellow);

               myObjectSet(0,sSymbol[i]+"sym_O>;8G5AB2>:F89",OBJPROP_CORNER,pCORNER);

               myObjectSet(0,sSymbol[i]+"sym_O>;8G5AB2>:F89",OBJPROP_XDISTANCE,XD+giPosBeg+315+120+50+50+50+50+43+50+50+50+50+50);

               myObjectSet(0,sSymbol[i]+"sym_O>;8G5AB2>:F89",OBJPROP_YDISTANCE,YD);





               myObjectCreate(0,sSymbol[i]+"sym_O!C<<082845=4>2",OBJ_LABEL,0,0,0,0,0);

               ObjectSetInteger(0,sSymbol[i]+"sym_O!C<<082845=4>2",OBJPROP_SELECTABLE,false);

               myObjectSetTextNew(0,sSymbol[i]+"sym_O!C<<082845=4>2",DoubleToString(sym_Order_!C<<082845=4>2[i],2),pFONT_SIZE,"Arial",clrYellow);

               myObjectSet(0,sSymbol[i]+"sym_O!C<<082845=4>2",OBJPROP_CORNER,pCORNER);

               myObjectSet(0,sSymbol[i]+"sym_O!C<<082845=4>2",OBJPROP_XDISTANCE,XD+giPosBeg+315+120+50+50+50+50+43+50+50+50+50+50+50);

               myObjectSet(0,sSymbol[i]+"sym_O!C<<082845=4>2",OBJPROP_YDISTANCE,YD);



              }







            myObjectCreate(0,"PosSummaAll",OBJ_LABEL,0,0,0,0,0);

            ObjectSetInteger(0,"PosSummaAll",OBJPROP_SELECTABLE,false);

            // printf("[%s] %s",sSymbol[i],symDiv[i]);

            myObjectSetTextNew(0,"PosSummaAll",DoubleToString(sym_Position_SummaAll,2),pFONT_SIZE,"Arial",clrYellow);

            myObjectSet(0,"PosSummaAll",OBJPROP_CORNER,pCORNER);

            myObjectSet(0,"PosSummaAll",OBJPROP_XDISTANCE,XD+giPosBeg+315+50+50+50+50+43);

            myObjectSet(0,"PosSummaAll",OBJPROP_YDISTANCE,YD+10+10);



            myObjectCreate(0,"PosSumma",OBJ_LABEL,0,0,0,0,0);

            ObjectSetInteger(0,"PosSumma",OBJPROP_SELECTABLE,false);

            // printf("[%s] %s",sSymbol[i],symDiv[i]);

            myObjectSetTextNew(0,"PosSumma",DoubleToString(sym_Summa@>D8B,2),pFONT_SIZE,"Arial",clrYellow);

            myObjectSet(0,"PosSumma",OBJPROP_CORNER,pCORNER);

            myObjectSet(0,"PosSumma",OBJPROP_XDISTANCE,XD+giPosBeg+315+80+50+50+50+50+43);

            myObjectSet(0,"PosSumma",OBJPROP_YDISTANCE,YD+10+10);



            myObjectCreate(0,"PosTPProfit",OBJ_LABEL,0,0,0,0,0);

            ObjectSetInteger(0,"PosTPProfit",OBJPROP_SELECTABLE,false);

            // printf("[%s] %s",sSymbol[i],symDiv[i]);

            myObjectSetTextNew(0,"PosTPProfit",DoubleToString(sym_Summa@>D8B,2),pFONT_SIZE,"Arial",clrYellow);

            myObjectSet(0,"PosTPProfit",OBJPROP_CORNER,pCORNER);

            myObjectSet(0,"PosTPProfit",OBJPROP_XDISTANCE,XD+giPosBeg+315+110+50+50+50+50+43+50+50);

            myObjectSet(0,"PosTPProfit",OBJPROP_YDISTANCE,YD+10+10);



            myObjectCreate(0,"82SummaAll",OBJ_LABEL,0,0,0,0,0);

            ObjectSetInteger(0,"82SummaAll",OBJPROP_SELECTABLE,false);

            // printf("[%s] %s",sSymbol[i],symDiv[i]);

            myObjectSetTextNew(0,"82SummaAll",DoubleToString(sym_!C<<082845=4>2A53>,2),pFONT_SIZE,"Arial",clrYellow);

            myObjectSet(0,"82SummaAll",OBJPROP_CORNER,pCORNER);

            myObjectSet(0,"82SummaAll",OBJPROP_XDISTANCE,XD+giPosBeg+315+120+50+50+50+50+43+50+50+50+50);

            myObjectSet(0,"82SummaAll",OBJPROP_YDISTANCE,YD+10+10);

           }

        }

     }

  }

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

//|                                                                  |

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

CYZTS::~CYZTS()

  {

   DeleteIndicators();

   for(int i=0; i<gCountSym; i++) // '8AB8< A2>8 >1J5:BK

     {

      ObjectDelete(0,sSymbol[i]+"symSR");

      ObjectDelete(0,sSymbol[i]+"sym");

      ObjectDelete(0,sSymbol[i]+"div");

      ObjectDelete(0,sSymbol[i]+"divv");

      ObjectDelete(0,sSymbol[i]+"Contract");

      ObjectDelete(0,sSymbol[i]+"Cena");

      ObjectDelete(0,sSymbol[i]+"prc");

      ObjectDelete(0,sSymbol[i]+"SV");

      ObjectDelete(0,sSymbol[i]+"BV");

      ObjectDelete(0,sSymbol[i]+"sb");

      ObjectDelete(0,sSymbol[i]+"prcsb");

      ObjectDelete(0,sSymbol[i]+"prcsbDirect");





      ObjectDelete(0,sSymbol[i]+"SV1");

      ObjectDelete(0,sSymbol[i]+"BV1");

      ObjectDelete(0,sSymbol[i]+"sb1");

      ObjectDelete(0,sSymbol[i]+"prcsb1");



      ObjectDelete(0, sSymbol[i]+"PosSumma");

      ObjectDelete(0, sSymbol[i]+"PosProfit");

      ObjectDelete(0, sSymbol[i]+"sym_Prc");



      ObjectDelete(0, sSymbol[i]+"sym_>;8G5AB2>:F89");



      ObjectDelete(0, sSymbol[i]+"sym_!C<<082845=4>2");



      ObjectDelete(0, sSymbol[i]+"sym_O!C<<082845=4>2");



      ObjectDelete(0, sSymbol[i]+"sym_TPProfit");





      ObjectDelete(0, sSymbol[i]+"SELL");

      ObjectDelete(0, sSymbol[i]+"BUY");

      ObjectDelete(0, sSymbol[i]+"prcSellBay");





     }

   ObjectDelete(0, "PosSummaAll");

   ObjectDelete(0, "PosSumma");

   ObjectDelete(0, "82SummaAll");

   ObjectDelete(0, "PosTPProfit");





   ChartRedraw();



  }

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

//|                                                                  |

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

void   CYZTS::DeleteIndicators(void)

  {



   for(int iSym=1; iSym<=gCountSym; iSym++)

     {

      MarketBookRelease(sSymbol[iSym]);







      if(params[iSym].Select!=0)

        {

         //            ChartIndicatorDelete(0,0,"YuraZ_GetSymbolTick");







        }

     }

  }











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

//|                                                                  |

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

void CYZTS::ProcessTick(string sSym)

  {

   ProcessTickSymbol(sSym);

//   dlg.FromParamsToView();

  }

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

//|                                                                  |

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

void CYZTS::ProcessTickSymbol(string sSym)

  {

//startDisplay();

  }



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

//|                                                                  |

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

void CYZTS::OrderGetInfoSymbol(string ssSymbol, int iSym)

  {



   sym_Order_Volume[iSym] = 0;

   sym_Order_PRICE_OPEN[iSym] =  0;

   sym_Order_Summa[iSym] = 0;

   sym_Order_>;8G5AB2>:F89[iSym] = 0;

   sym_Order_!C<<082845=4>2[iSym] = 0;







   int total=OrdersTotal();

   if(total!=0)

     {

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

        {

         m_order.SelectByIndex(i);

         if(m_order.Symbol()!= ssSymbol)

            continue;



         if(m_order.OrderType()==ORDER_TYPE_BUY_LIMIT || m_order.OrderType()==ORDER_TYPE_BUY_STOP)

           {



            sym_Order_Volume[iSym]=sym_Order_Volume[iSym] + m_order.VolumeInitial();

            sym_Order_PRICE_OPEN[iSym] =  m_order.PriceOpen();



            sym_Order_Summa[iSym] = (sym_Order_Volume[iSym]*sym_Contract[iSym]) * sym_Order_PRICE_OPEN[iSym];

            sym_Order_>;8G5AB2>:F89[iSym] = sym_Order_Volume[iSym]*sym_Contract[iSym];

            sym_Order_!C<<082845=4>2[iSym] = StringToDouble(symK?;0B0[iSym])*sym_Order_>;8G5AB2>:F89[iSym];

           }

         else

           {



           }

         //--- return without operations

         return ;

        }

     }

  }



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

//| 2>72@0I05B AB@>:>2>5 >?8A0=85 B8:0                               |

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

string CYZTS::GetTickDescription(MqlTick &tick)

  {



   string desc=StringFormat("%s.%03d ",

                            TimeToString(tick.time),tick.time_msc%1000);

//--- ?@>25@8< D;038

   bool buy_tick=((tick.flags&TICK_FLAG_BUY)==TICK_FLAG_BUY);

   bool sell_tick=((tick.flags&TICK_FLAG_SELL)==TICK_FLAG_SELL);

   bool ask_tick=((tick.flags&TICK_FLAG_ASK)==TICK_FLAG_ASK);

   bool bid_tick=((tick.flags&TICK_FLAG_BID)==TICK_FLAG_BID);

   bool last_tick=((tick.flags&TICK_FLAG_LAST)==TICK_FLAG_LAST);

   bool volume_tick=((tick.flags&TICK_FLAG_VOLUME)==TICK_FLAG_VOLUME);

//--- ?@>25@8< A=0G0;0 B8: =0 B>@3>2K5 D;038

   if(buy_tick || sell_tick)

     {

      //--- AD>@<8@C5< 2K2>4 4;O B>@3>2>3> B8:0

      desc=desc+(buy_tick?StringFormat("Buy Tick: Last=%G Volume=%d ",tick.last,tick.volume):"");

      desc=desc+(sell_tick?StringFormat("Sell Tick: Last=%G Volume=%d ",tick.last,tick.volume):"");

      desc=desc+(ask_tick?StringFormat("Ask=%G ",tick.ask):"");

      desc=desc+(bid_tick?StringFormat("Bid=%G ",tick.ask):"");

      desc=desc+"(Trade tick)";

     }

   else

     {

      //--- 4;O 8=D> B8:0 AD>@<8@C5< 2K2>4 =5<=>3> 8=0G5

      desc=desc+(ask_tick?StringFormat("Ask=%G ",tick.ask):"");

      desc=desc+(bid_tick?StringFormat("Bid=%G ",tick.ask):"");

      desc=desc+(last_tick?StringFormat("Last=%G ",tick.last):"");

      desc=desc+(volume_tick?StringFormat("Volume=%d ",tick.volume):"");

      desc=desc+"(Info tick)";

     }

//--- 25@=5< >?8A0=85 B8:0

   return desc;

  }





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

//|                                                                  |

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

void CYZTS::startDisplay()

  {

   double close_array[4];



// YD=10;



   int YD_BASE_DEC=10;

   int YD_BASE_INC=10;



   int XD_BASE_DEC=3;

   int XD_BASE_INC=3 ; //400;



   sym_Summa@>D8B=0;

   TPProfit=0;

   sym_TPProfit=0;



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

     {

      colorss1prcSave[i]=clrDarkViolet;

      colorsBS[i]=clrDarkViolet;

      ENUM_TIMEFRAMES timeframe=PERIOD_D1;

      int start_pos=1;

      int count=2;

      int  j=CopyClose(

                sSymbol[i],        // 8<O A8<2>;0

                timeframe,         // ?5@8>4

                start_pos,         // >B:C40 =0G=5<

                count,             // A:>;L:> :>?8@C5<

                close_array        // <0AA82 4;O :>?8@>20=8O F5= 70:@KB8O

             );

      //



      ulong to=TimeCurrent()*1000;

      ulong from=  to-PeriodSeconds(PERIOD_D1)*1000;





      MqlDateTime today;

      datetime current_time=TimeCurrent();//-86400;

      TimeToStruct(current_time,today);

      today.hour=0;

      today.min=0;

      today.sec=0;

      datetime startday=StructToTime(today);

      datetime endday=TimeCurrent(); // startday+24*60*60;



      to=    endday*1000;

      from=  startday*1000;



      //PrintFormat("startday=%s",TimeToString(startday));

      // Comment( TimeToString(startday) );

      int CountTicks = CopyTicksRange(sSymbol[i],ticks_array,COPY_TICKS_ALL,from,to);

      double dBUY=0;

      double dSELL=0;

      if(CountTicks > 0)

        {

         //   int ticks=ArraySize(ticks_array);

         //

         //   datetime firstticktime=ticks_array[ticks-1].time;

         //   PrintFormat("Last tick time = %s.%03I64u",

         //               TimeToString(firstticktime,TIME_DATE|TIME_MINUTES|TIME_SECONDS),ticks_array[ticks-1].time_msc%1000);

         //   datetime lastticktime=ticks_array[0].time;

         //   PrintFormat("First tick time = %s.%03I64u",

         //               TimeToString(lastticktime,TIME_DATE|TIME_MINUTES|TIME_SECONDS),ticks_array[0].time_msc%1000);

         for(int iTicks = 0; iTicks < CountTicks; iTicks++)

           {

            if((ticks_array[iTicks].flags&TICK_FLAG_BUY)==TICK_FLAG_BUY)

               dBUY  = ticks_array[iTicks].volume_real + dBUY;

            if((ticks_array[iTicks].flags&TICK_FLAG_SELL)==TICK_FLAG_SELL)

               dSELL = ticks_array[iTicks].volume_real + dSELL;

            //PrintFormat("%d. %s",iTicks,GetTickDescription(ticks_array[iTicks]));

           }

        }



      PositionSelect(sSymbol[i]);



      PositionGetDouble(POSITION_PROFIT, sym_POSITION_PROFIT[i]);

      PositionGetDouble(POSITION_TP, sym_POSITION_TP[i]);



      if(close_array[1] !=0)

         sym_1[i]  =(SymbolInfoDouble(sSymbol[i],SYMBOL_LAST)-close_array[1])*100/close_array[1];

      sym_1s[i] =SymbolInfoDouble(sSymbol[i],SYMBOL_SESSION_SELL_ORDERS_VOLUME);

      sym_1b[i] =SymbolInfoDouble(sSymbol[i],SYMBOL_SESSION_BUY_ORDERS_VOLUME);





      sym_POSITION_TPProfit[i] = (sym_POSITION_VOLUME[i]*sym_Contract[i]) * sym_POSITION_TP[i];

      sym_TPProfit = sym_TPProfit+ sym_POSITION_TPProfit[i];





      double pPrcSellBuy=0;



      clrColor = clrYellow;



      if(dBUY >= dSELL)

        {

         clrColorPrc = clrLimeGreen;

         if(dBUY !=0)

            pPrcSellBuy = ((dBUY - dSELL) * 100) / dBUY;

        }

      else

        {

         clrColorPrc = clrRed;

         if(dSELL !=0)

            pPrcSellBuy = ((dSELL - dBUY) * 100)/ dSELL;

         pPrcSellBuy=pPrcSellBuy-pPrcSellBuy-pPrcSellBuy;

        }



      myObjectSetTextNew(0,sSymbol[i]+"prcSellBay",DoubleToString(pPrcSellBuy,2),pFONT_SIZE,"Arial",clrColorPrc);

      myObjectSetTextNew(0,sSymbol[i]+"BUY",DoubleToString(dBUY,0),pFONT_SIZE,"Arial",clrColor);

      myObjectSetTextNew(0,sSymbol[i]+"SELL",DoubleToString(dSELL,0),pFONT_SIZE,"Arial",clrColor);







      if(sym_POSITION_PROFIT[i] > 0 && sym_Position_Summa[i] != 0)

        {

         myObjectSetTextNew(0,sSymbol[i]+"PosProfit",DoubleToString(sym_POSITION_PROFIT[i],2),pFONT_SIZE,"Arial",clrLimeGreen);

         myObjectSetTextNew(0,sSymbol[i]+"sym_Prc",DoubleToString(sym_POSITION_PROFIT[i] / sym_Position_Summa[i] * 100,2),pFONT_SIZE,"Arial",clrLimeGreen);



        }

      if(sym_POSITION_PROFIT[i] < 0 && sym_Position_Summa[i] != 0)

        {

         myObjectSetTextNew(0,sSymbol[i]+"PosProfit",DoubleToString(sym_POSITION_PROFIT[i],2),pFONT_SIZE,"Arial",clrRed);

         myObjectSetTextNew(0,sSymbol[i]+"sym_Prc",DoubleToString(sym_POSITION_PROFIT[i] / sym_Position_Summa[i] * 100,2),pFONT_SIZE,"Arial",clrRed);

        }

      sym_Summa@>D8B = sym_Summa@>D8B + sym_POSITION_PROFIT[i];



      OrderGetInfoSymbol(sSymbol[i], i);  // >;CG8BL 40==K ?> >B;>6:0<



      rs1[i]=0;

      rb1[i]=0;

      if(sym_1[i]>0)

         colors[i]=color_up;

      else

         colors[i]=color_down;

      if(sym_1b[i] !=0 && sym_1s[i] != 0)

         s1prc[i]=NormalizeDouble(100-(sym_1b[i]>sym_1s[i]?(sym_1s[i]*100)/sym_1b[i]:(sym_1b[i]*100)/sym_1s[i]),0);

      if(s1prc[i]>s1prcSave[i])

         colorss1prcSave[i]=color_up;

      if(s1prc[i]<s1prcSave[i])

         colorss1prcSave[i]=color_down;

      if(sym_1s[i]>sym_1b[i])

        {

         rs1[i]=sym_1s[i]-sym_1b[i];

         colorsBS[i]=color_down;

        }

      if(sym_1s[i]<sym_1b[i])

        {

         rb1[i]=sym_1b[i]-sym_1s[i];

         colorsBS[i]=color_up;

        }

      myObjectSet(0,sSymbol[i]+"sym",OBJPROP_COLOR,colors[i]);



      myObjectSetTextNew(0,sSymbol[i]+"prc",DoubleToString(sym_1[i],2),pFONT_SIZE,"Arial",Lime);

      myObjectSet(0,sSymbol[i]+"prc",OBJPROP_COLOR,sym_1[i]>0?color_up:color_down);



      myObjectSetTextNew(0,sSymbol[i]+"BV",DoubleToString(sym_1b[i],0),pFONT_SIZE,"Arial",Lime);

      myObjectSet(0,sSymbol[i]+"BV",OBJPROP_COLOR,color_up);



      myObjectSetTextNew(0,sSymbol[i]+"SV",DoubleToString(sym_1s[i],0),pFONT_SIZE,"Arial",Lime);

      myObjectSet(0,sSymbol[i]+"SV",OBJPROP_COLOR,color_down);



      myObjectSetTextNew(0,sSymbol[i]+"sb",DoubleToString(rb1[i]>rs1[i]?rb1[i]:rs1[i],0),pFONT_SIZE,"Arial",Lime);

      myObjectSet(0,sSymbol[i]+"sb",OBJPROP_COLOR,rb1[i]>rs1[i]?color_up:color_down);



      myObjectSetTextNew(0,sSymbol[i]+"prcsb",DoubleToString(s1prc[i],0),pFONT_SIZE,"Arial",Lime);

      myObjectSet(0,sSymbol[i]+"prcsb",OBJPROP_COLOR,rb1[i]>rs1[i]? color_up:color_down);



      if(rb1[i]<rs1[i])

        {

         YD_BASE_DEC = YD_BASE_DEC + 10;

         YD_BASE_INC = YD_BASE_INC + 10;



         myObjectSet(0,sSymbol[i]+"sym",OBJPROP_XDISTANCE,XD_BASE_DEC);

         myObjectSet(0,sSymbol[i]+"sym",OBJPROP_YDISTANCE,YD_BASE_DEC);





         myObjectSet(0,sSymbol[i]+"div",OBJPROP_XDISTANCE,XD_BASE_DEC+giPosBeg);

         myObjectSet(0,sSymbol[i]+"div",OBJPROP_YDISTANCE,YD_BASE_DEC);



         myObjectSet(0,sSymbol[i]+"Contract",OBJPROP_XDISTANCE,XD_BASE_DEC+giPosBeg+50+43);

         myObjectSet(0,sSymbol[i]+"Contract",OBJPROP_YDISTANCE,YD_BASE_DEC);



         myObjectSet(0,sSymbol[i]+"Cena",OBJPROP_XDISTANCE,XD_BASE_DEC+giPosBeg+50+40+43);

         myObjectSet(0,sSymbol[i]+"Cena",OBJPROP_YDISTANCE,YD_BASE_DEC);





         myObjectSet(0,sSymbol[i]+"prc",OBJPROP_XDISTANCE,XD_BASE_DEC+giPosBeg+50+50+50+43);

         myObjectSet(0,sSymbol[i]+"prc",OBJPROP_YDISTANCE,YD_BASE_DEC);



         myObjectSet(0,sSymbol[i]+"SV",OBJPROP_XDISTANCE,XD_BASE_DEC+giPosBeg+110+50+50+50+43);

         myObjectSet(0,sSymbol[i]+"SV",OBJPROP_YDISTANCE,YD_BASE_DEC);



         myObjectSet(0,sSymbol[i]+"BV",OBJPROP_XDISTANCE,XD_BASE_DEC+giPosBeg+70+50+50+50+43);

         myObjectSet(0,sSymbol[i]+"BV",OBJPROP_YDISTANCE,YD_BASE_DEC);



         myObjectSet(0,sSymbol[i]+"sb",OBJPROP_XDISTANCE,XD_BASE_DEC+giPosBeg+150+50+50+50+43);

         myObjectSet(0,sSymbol[i]+"sb",OBJPROP_YDISTANCE,YD_BASE_DEC);



         myObjectSet(0,sSymbol[i]+"prcsb",OBJPROP_XDISTANCE,XD_BASE_DEC+giPosBeg+190+50+50+50+43);

         myObjectSet(0,sSymbol[i]+"prcsb",OBJPROP_YDISTANCE,YD_BASE_DEC);



         ObjectSetInteger(0,sSymbol[i]+"prcsbDirect",OBJPROP_XDISTANCE,XD_BASE_DEC+giPosBeg+205+50+50+50+43);

         ObjectSetInteger(0,sSymbol[i]+"prcsbDirect",OBJPROP_YDISTANCE,YD_BASE_DEC);

        }

      if(rb1[i]>=rs1[i])

        { 

         YD_BASE_DEC = YD_BASE_DEC + 10;

         YD_BASE_INC = YD_BASE_INC + 10;



         myObjectSet(0,sSymbol[i]+"sym",OBJPROP_XDISTANCE,XD_BASE_INC);

         myObjectSet(0,sSymbol[i]+"sym",OBJPROP_YDISTANCE,YD_BASE_INC);



         myObjectSet(0,sSymbol[i]+"div",OBJPROP_XDISTANCE,XD_BASE_INC+giPosBeg);

         myObjectSet(0,sSymbol[i]+"div",OBJPROP_YDISTANCE,YD_BASE_INC);



         myObjectSet(0,sSymbol[i]+"Contract",OBJPROP_XDISTANCE,XD_BASE_INC+giPosBeg+50+43);

         myObjectSet(0,sSymbol[i]+"Contract",OBJPROP_YDISTANCE,YD_BASE_INC);



         myObjectSet(0,sSymbol[i]+"Cena",OBJPROP_XDISTANCE,XD_BASE_INC+giPosBeg+50+40+43);

         myObjectSet(0,sSymbol[i]+"Cena",OBJPROP_YDISTANCE,YD_BASE_INC);



         myObjectSet(0,sSymbol[i]+"prc",OBJPROP_XDISTANCE,XD_BASE_INC+giPosBeg+50+50+50+43);

         myObjectSet(0,sSymbol[i]+"prc",OBJPROP_YDISTANCE,YD_BASE_INC);



         myObjectSet(0,sSymbol[i]+"SV",OBJPROP_XDISTANCE,XD_BASE_INC+giPosBeg+110+50+50+50+43);

         myObjectSet(0,sSymbol[i]+"SV",OBJPROP_YDISTANCE,YD_BASE_INC);



         myObjectSet(0,sSymbol[i]+"BV",OBJPROP_XDISTANCE,XD_BASE_INC+giPosBeg+70+50+50+50+43);

         myObjectSet(0,sSymbol[i]+"BV",OBJPROP_YDISTANCE,YD_BASE_INC);



         myObjectSet(0,sSymbol[i]+"sb",OBJPROP_XDISTANCE,XD_BASE_INC+giPosBeg+150+50+50+50+43);

         myObjectSet(0,sSymbol[i]+"sb",OBJPROP_YDISTANCE,YD_BASE_INC);



         myObjectSet(0,sSymbol[i]+"prcsb",OBJPROP_XDISTANCE,XD_BASE_INC+giPosBeg+190+50+50+50+43);

         myObjectSet(0,sSymbol[i]+"prcsb",OBJPROP_YDISTANCE,YD_BASE_INC);



         ObjectSetInteger(0,sSymbol[i]+"prcsbDirect",OBJPROP_XDISTANCE,XD_BASE_INC+giPosBeg+205+50+50+50+43);

         ObjectSetInteger(0,sSymbol[i]+"prcsbDirect",OBJPROP_YDISTANCE,YD_BASE_INC);



        }

      if(rb1[i]<rs1[i])

         BitmapLabelSetImage(0,sSymbol[i]+"prcsbDirect",0,"\\Files\\SpinDec.bmp");

      if(rb1[i]>=rs1[i])

         BitmapLabelSetImage(0,sSymbol[i]+"prcsbDirect",0,"\\Files\\SpinInc.bmp");

      s1prcSave[i]=s1prc[i];

      ChartRedraw(0);                                        // ?5@5@8AC5< >:=>

     }

   myObjectSetTextNew(0,"PosSumma",DoubleToString(sym_Summa@>D8B,2),pFONT_SIZE,"Arial",clrYellow);

   myObjectSetTextNew(0,"PosTPProfit",DoubleToString(sym_TPProfit,2),pFONT_SIZE,"Arial",clrYellow);

   return;

  }









CYZTS *ts=NULL;



string FileSpinDec ="SpinDec.bmp";

string FileSpinInc ="SpinInc.bmp";

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

//|                                                                  |

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

int OnInit()

  {





if(!FileIsExist(FileSpinDec))// >;=K9 ?CBL :C40 1C45B A>740= D09; \B5@<8=0;\MQL5\Files\000\8<O_D09;0

  {

   int handle = FileOpen(FileSpinDec, FILE_WRITE|FILE_BIN);// @8 A>740=88 D09;0 ?>G5<C-B> 4>;65= 1KBL B0:>9 ?CBL.

   if(handle == INVALID_HANDLE)

    Print(": =5 C40;>AL A>740BL D09;! >4 >H81:8 = ",GetLastError());

   FileWriteArray(handle, mapSpinDec);

   FileClose(handle);

  }



if(!FileIsExist(FileSpinInc))// >;=K9 ?CBL :C40 1C45B A>740= D09; \B5@<8=0;\MQL5\Files\000\8<O_D09;0

  {

   int handle = FileOpen(FileSpinInc, FILE_WRITE|FILE_BIN);// @8 A>740=88 D09;0 ?>G5<C-B> 4>;65= 1KBL B0:>9 ?CBL.

   if(handle == INVALID_HANDLE)

    Print(": =5 C40;>AL A>740BL D09;! >4 >H81:8 = ",GetLastError());

   FileWriteArray(handle, mapSpinInc);

   FileClose(handle);

  }





// EventSetMillisecondTimer(1);

//EventSetTimer(10);

   CreateYZTS();



   ulong tick_counter=::GetTickCount();

//---

//program.OnInitEvent();

//--- #AB0=>28< B>@3>2CN ?0=5;L

//if(!program.CreateGUI())

//  {

//   ::Print(__FUNCTION__," > 5 C40;>AL A>740BL 3@0D8G5A:89 8=B5@D59A!");

//   return(INIT_FAILED);

//  }

//---

// ::Print(__FUNCTION__," > objects total: ",::ObjectsTotal(0),"; total ms: ",::GetTickCount()-tick_counter);

//--- =8F80;870F8O ?@>H;0 CA?5H=>



   return(INIT_SUCCEEDED);

  }

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

//|                                                                  |

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

void OnTimer()

  {

// if(ts!=NULL)

//    ts.OnEventTimer();

//program.OnTimerEvent();

  }

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

//|                                                                  |

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

void OnDeinit(const int reason)

  {

   if(ts!=NULL)

     {

      delete ts;

     }

//program.OnDeinitEvent(reason);

  }

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

//| Custom indicator iteration function                              |

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

int OnCalculate(const int rates_total,

                const int prev_calculated,

                const datetime &time[],

                const double &open[],

                const double &high[],

                const double &low[],

                const double &close[],

                const long &tick_volume[],

                const long &volume[],

                const int &spread[])

  {

//---

   if(ts!=NULL)

     {

      ts.ProcessTick(_Symbol);

     }



//startDisplay();

//--- return value of prev_calculated for next call

   return(rates_total);

  }

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

//| Timer function                                                   |

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

//void OnTimer()

//  {

////---

//   startDisplay();

//  }

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

//| ChartEvent function                                              |

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

void OnChartEvent(const int id,

                  const long &lparam,

                  const double &dparam,

                  const string &sparam)

  {

//---

// program.ChartEvent(id,lparam,dparam,sparam);

   ts.myOnChartEvent(id,lparam,dparam,sparam);



  }



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

//|                                                                  |

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

void OnBookEvent(const string &symbol)

  {

   ts.myOnBookEvent(symbol);



  }



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



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

//|                                                                  |

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

void CreateYZTS()

  {

   if(ts!=NULL)

      delete ts;

   ts=new CYZTS();

  }

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

//|                                                                  |

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

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

//|                                                                  |

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

bool  myObjectCreate(

   long          chart_id,       // 845=B8D8:0B>@ 3@0D8:0

   string        object_name,    // 8<O >1J5:B0

   ENUM_OBJECT   object_type,    // B8? >1J5:B0

   int           sub_window,     // 8=45:A >:=0

   datetime      time1,          // 2@5<O ?5@2>9 B>G:8 ?@82O7:8

   double        price1,         // F5=0 ?5@2>9 B>G:8 ?@82O7:8

   datetime      time2  = 0,     // 2@5<O N-B>G:8 ?@82O7:8

   double        price2 = 0,     // F5=0 N-B>G:8 ?@82O7:8

   datetime      time3  = 0,     // 2@5<O N-B>G:8 ?@82O7:8

   double        price3=0     // F5=0 N-B>G:8 ?@82O7:8



)

  {

   bool CodeReturn=ObjectCreate(

                      chart_id,            // 845=B8D8:0B>@ 3@0D8:0

                      object_name,         // 8<O >1J5:B0

                      object_type,         // B8? >1J5:B0

                      sub_window,          // 8=45:A >:=0

                      time1,               // 2@5<O ?5@2>9 B>G:8 ?@82O7:8

                      price1,              // F5=0 ?5@2>9 B>G:8 ?@82O7:8

                      time2,               // 2@5<O N-B>G:8 ?@82O7:8

                      price2,              // F5=0 N-B>G:8 ?@82O7:8

                      time3,               // 2@5<O N-B>G:8 ?@82O7:8

                      price3               // F5=0 N-B>G:8 ?@82O7:8

                   )

                   ;



   ObjectSetInteger(chart_id,object_name,OBJPROP_HIDDEN,true);

   ObjectSetInteger(chart_id,object_name,OBJPROP_SELECTED,false);

//   ObjectSetInteger(chart_id,object_name,OBJPROP_READONLY,true);

   ObjectSetInteger(chart_id,object_name,OBJPROP_SELECTABLE,true); // 0?@5B8< 2K45;OBL >1J5B =0 3@0D8:5 4O; :@0A>BK



   return (CodeReturn);

  }

//

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

////|                                                                  |

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

//bool  myObjectCreate(

//                     long          chart_id    ,   // 845=B8D8:0B>@ 3@0D8:0

//                     string        object_name ,   // 8<O >1J5:B0

//                     ENUM_OBJECT   object_type ,   // B8? >1J5:B0

//                     int           sub_window  ,   // 8=45:A >:=0

//                     datetime      time1       ,   // 2@5<O ?5@2>9 B>G:8 ?@82O7:8

//                     double        price1      ,   // F5=0 ?5@2>9 B>G:8 ?@82O7:8

//                     datetime      time2  = 0  ,   // 2@5<O N-B>G:8 ?@82O7:8

//                     double        price2 = 0  ,   // F5=0 N-B>G:8 ?@82O7:8

//                     datetime      time3  = 0  ,   // 2@5<O N-B>G:8 ?@82O7:8

//                     double        price3=0     // F5=0 N-B>G:8 ?@82O7:8

//

//                     )

//  {

//   bool CodeReturn=ObjectCreate(

//                                chart_id        ,    // 845=B8D8:0B>@ 3@0D8:0

//                                object_name     ,    // 8<O >1J5:B0

//                                object_type     ,    // B8? >1J5:B0

//                                sub_window      ,    // 8=45:A >:=0

//                                time1           ,    // 2@5<O ?5@2>9 B>G:8 ?@82O7:8

//                                price1          ,    // F5=0 ?5@2>9 B>G:8 ?@82O7:8

//                                time2           ,    // 2@5<O N-B>G:8 ?@82O7:8

//                                price2          ,    // F5=0 N-B>G:8 ?@82O7:8

//                                time3           ,    // 2@5<O N-B>G:8 ?@82O7:8

//                                price3               // F5=0 N-B>G:8 ?@82O7:8

//                                )

//   ;

//

//   ObjectSetInteger(chart_id,object_name,OBJPROP_HIDDEN,true);

//   ObjectSetInteger(chart_id,object_name,OBJPROP_SELECTED,false);

////   ObjectSetInteger(chart_id,object_name,OBJPROP_READONLY,true);

//   ObjectSetInteger(chart_id,object_name,OBJPROP_SELECTABLE,false); // 0?@5B8< 2K45;OBL >1J5B =0 3@0D8:5 4O; :@0A>BK

//

//   return ( CodeReturn );

//  }

//



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

//|                                                                  |

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

bool myObjectSetText(

   long          chart_id,// 845=B8D8:0B>@ 3@0D8:0

   string  object_name,            // 8<O >1J5:B0

   string  text,                   // B5:AB >?8A0=8O

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

   string  font_name=NULL,         // =08<5=>20=85 H@8DB0

   color   text_color=clrNONE      // F25B B5:AB0

)

/**

bool  ObjectSetString(

   long     chart_id,       // 845=B8D8:0B>@ 3@0D8:0

   string   object_name,    // 8<O

   int      prop_id,        // A2>9AB2>

   int      prop_modifier,  // <>48D8:0B>@

   string   prop_value      // 7=0G5=85

   );

*/

  {

// if(ObjectGetInteger(0,ButtonLevelChartID,OBJPROP_STATE)==false)

//   {

//     text="";

//    }

   bool CodeReturn=ObjectSetString(chart_id,object_name,OBJPROP_TEXT,text); //  , font_name , text_color );

   ObjectSetString(chart_id,object_name,OBJPROP_FONT,font_name);

//   ObjectSetInteger( chart_id, object_name ,OBJPROP_COLOR , text_color  );

   return (CodeReturn);

  }

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

//|                                                                  |

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

bool myObjectSetTextNew(

   long          chart_id,// 845=B8D8:0B>@ 3@0D8:0

   string  object_name,            // 8<O >1J5:B0

   string  text,                   // B5:AB >?8A0=8O

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

   string  font_name=NULL,         // =08<5=>20=85 H@8DB0

   color   text_color=clrNONE      // F25B B5:AB0

)

/**

bool  ObjectSetString(

   long     chart_id,       // 845=B8D8:0B>@ 3@0D8:0

   string   object_name,    // 8<O

   int      prop_id,        // A2>9AB2>

   int      prop_modifier,  // <>48D8:0B>@

   string   prop_value      // 7=0G5=85

   );

*/

  {

//   if(ObjectGetInteger(0,ButtonLevelChartID,OBJPROP_STATE)==false)

//     {

//      text="";

//     }

   bool CodeReturn=ObjectSetString(chart_id,object_name,OBJPROP_TEXT,text); //  , font_name , text_color );

   ObjectSetString(chart_id,object_name,OBJPROP_FONT,font_name);

   ObjectSetInteger(chart_id,object_name,OBJPROP_COLOR,text_color);

   ObjectSetInteger(chart_id,object_name,OBJPROP_FONTSIZE,font_size);



   return (CodeReturn);

  }

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

//|                                                                  |

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

bool  myObjectSet(

   long          chart_id,// 845=B8D8:0B>@ 3@0D8:0

   string                           object_name,// 8<O >1J5:B0

   ENUM_OBJECT_PROPERTY_INTEGER     prop_id,     // !2>9AB2>

   int     i                                     // =0G5=85

)

  {

   return (ObjectSetInteger(chart_id,object_name,prop_id,i));



  }

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

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

                    const string name="Bitmap", // 8<O @8AC=:0

                    const string file="")       // ?CBL : D09;C

  {

//--- A1@>A8< 7=0G5=85 >H81:8

   ResetLastError();

//--- CAB0=>28< ?CBL : D09;C A :0@B8=:>9

   if(!ObjectSetString(chart_ID,name,OBJPROP_BMPFILE,file))

     {

      Print(__FUNCTION__,

            ": =5 C40;>AL 703@C78BL :0@B8=:C! >4 >H81:8 = ",GetLastError());

      return(false);

     }

//--- CA?5H=>5 2K?>;=5=85

   return(true);

  }

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

//| #AB0=02;8205B =>2CN :0@B8=:C 4;O >1J5:B0 "@0D8G5A:0O <5B:0"     |

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

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

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

                         const int    on_off=0,        // <>48D8:0B>@ (On 8;8 Off)

                         const string file="")         // ?CBL : D09;C

  {

//--- A1@>A8< 7=0G5=85 >H81:8

   ResetLastError();

//--- CAB0=>28< ?CBL : D09;C A :0@B8=:>9

   if(!ObjectSetString(chart_ID,name,OBJPROP_BMPFILE,on_off,file))

     {

      Print(__FUNCTION__,

            ": =5 C40;>AL 703@C78BL :0@B8=:C! >4 >H81:8 = ",GetLastError());

      return(false);

     }

//--- CA?5H=>5 2K?>;=5=85

   return(true);

  }

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



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

//| !>7405B 3>@87>=B0;L=CN ;8=8N                                     |

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

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

                 const string          name="HLine",      // 8<O ;8=88

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

                 double                price=0,           // F5=0 ;8=88

                 const color           clr=clrRed,        // F25B ;8=88

                 const ENUM_LINE_STYLE style=STYLE_SOLID, // AB8;L ;8=88

                 const int             width=1,           // B>;I8=0 ;8=88

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

                 const bool            selection=true,    // 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

  {

//--- 5A;8 F5=0 =5 7040=0, B> CAB0=>28< 55 =0 C@>2=5 B5:CI59 F5=K Bid

//   if(!price)

//      price=SymbolInfoDouble(Symbol(),SYMBOL_BID);

//--- A1@>A8< 7=0G5=85 >H81:8

   ResetLastError();

//--- A>74048< 3>@87>=B0;L=CN ;8=8N

   if(!ObjectCreate(chart_ID,name,OBJ_HLINE,sub_window,0,price))

     {

      Print(__FUNCTION__,

            ": =5 C40;>AL A>740BL 3>@87>=B0;L=CN ;8=8N! >4 >H81:8 = ",GetLastError());

      return(false);

     }

//--- CAB0=>28< F25B ;8=88

   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);

//--- CAB0=>28< AB8;L >B>1@065=8O ;8=88

   ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);

//--- CAB0=>28< B>;I8=C ;8=88

   ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);

//--- >B>1@078< =0 ?5@54=5< (false) 8;8 704=5< (true) ?;0=5

   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);

//--- 2:;NG8< (true) 8;8 >B:;NG8< (false) @568< ?5@5<5I5=8O ;8=88 <KHLN

//--- ?@8 A>740=88 3@0D8G5A:>3> >1J5:B0 DC=:F859 ObjectCreate, ?> C<>;G0=8N >1J5:B

//--- =5;L7O 2K45;8BL 8 ?5@5<5I0BL. =CB@8 65 MB>3> <5B>40 ?0@0<5B@ selection

//--- ?> C<>;G0=8N @025= true, GB> ?>72>;O5B 2K45;OBL 8 ?5@5<5I0BL MB>B >1J5:B

   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);

   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);

//--- A:@>5< (true) 8;8 >B>1@078< (false) 8<O 3@0D8G5A:>3> >1J5:B0 2 A?8A:5 >1J5:B>2

   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);

//--- CAB0=>28< ?@8>@8B5B =0 ?>;CG5=85 A>1KB8O =060B8O <KH8 =0 3@0D8:5

   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);

//--- CA?5H=>5 2K?>;=5=85

   return(true);

  }

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

Comments