Yuraz_CH_moex

Author: Copyright 2020,YuraZ
0 Views
0 Downloads
0 Favorites
Yuraz_CH_moex
ÿþ//+------------------------------------------------------------------+

//|                                                Yuraz_CH_moex.mq5 |

//|                                             Copyright 2020,YuraZ |

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

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

#property copyright "Copyright 2020,YuraZ"

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

#property version   "1.02"

#property indicator_chart_window

#property indicator_plots   1

#property indicator_buffers 1





//////////////////////////////////////////////////////////////////////////////////////////////////////////////////

// :;0AA @0AG5B CH%

//

struct SymbolStruct

  {

   // bool              work;

   string            sSymbol;

   int               y;

   int               x;

   double            CH;

   int               HandleInd; // Handl  8=48:0B>@0 4;O ?>;CG5=8O :>B8@>2>: A 4@C3>3> 3@0D8:0

   long              chart_id;

  };

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

//|                                                                  |

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

class CChmcYZ

  {

public:

   SymbolStruct      sSymb[];

   color             lColorSym;

   color             lColorChPlus;

   color             lColorChMinus;

   color             lColorCH;



   int               indicatorWindow; // @01>B05< 2 3;02=>< >:=5

   void              CChmcYZ()

     {

      indicatorWindow=0;

      lColorSym     = clrBlack;

      lColorCH      = clrWhite;

      lColorChPlus  = clrLimeGreen;

      lColorChMinus = clrRed;

     } // :>=AB@C:B>@

   void              CreateSymbol(void);

   void              DeleteSymbolFromCrafic(void);

   void              MyOnCalculate(void);

   void              MyOnTimer();



private:

   void              RCH(int iPos, string sSymbol,datetime DATEBEG,datetime DATEEND);

   void              RCHsay(int iPos, string sSym,datetime db,datetime de,int X,int Y); // >;=K9 @0AGB >4=>9 ?0@K 8 >B>1@065=85 55

   color             lColor;

   double            dClose[3];                    // <0AA82 4;O :>?8@>20=8O <0:A8<0;L=KE F5=

   int               i_SymbolsTotal;

  };





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

//|                                                                  |

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

void CChmcYZ::CreateSymbol(void)

  {

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

   int i;

   int yPos=12;

   ArrayResize(sSymb,i_SymbolsTotal+1,i_SymbolsTotal+1);   // 03>=8< 2 <0AA82 A8<2>;K 87 MarketWatch

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

     {

      sSymb[i].sSymbol = SymbolName(i, true);

      Sleep(1000);

      chmc.RCHsay(i, sSymb[i].sSymbol,TimeCurrent()-86400*5,TimeCurrent(),5,16+yPos); // @0AG8B05< B5: 45=L CH%

      yPos += 12;

     }

   long  id_ChartFirst = ChartFirst();

   long  idC = ChartFirst();

  }







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

//|                                                                  |

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

void CChmcYZ::MyOnTimer(void)

  {

   MyOnCalculate();

  }



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

//|                                                                  |

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

void CChmcYZ::MyOnCalculate(void)

  {

   int yPos=12;

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

     {

      chmc.RCHsay(i, sSymb[i].sSymbol,TimeCurrent()-86400*5,TimeCurrent(),5,16+yPos);    // @0AG8B05< B5: 45=L CH%

      yPos += 12;

     }

  }



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

//|                                                                  |

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

void CChmcYZ::DeleteSymbolFromCrafic(void)

  {

   int i=ObjectsTotal(0,-1,-1);

   while(i>0)

     {

      string sObjYZ = ObjectName(0,i);

      if(StringSubstr(sObjYZ,0,3)=="oYZ") // C40;O5< B>;L:> A2>8 >1J5:BK A 3@0D8:0

        {

         ObjectDelete(0,sObjYZ);

        }

      i--;

     }

   ChartRedraw();

  }





void CChmcYZ::RCH(int iPos, string sSymbol,datetime DATEBEG,datetime DATEEND)

  {

   sSymb[iPos].CH=0;

   int CountBar;

//   DATEBEG = StringToTime( TimeToString(DATEBEG,TIME_DATE));

   DATEEND = StringToTime( TimeToString(DATEEND,TIME_DATE));

   CountBar= CopyClose(sSymb[iPos].sSymbol,PERIOD_D1,DATEEND,2,dClose);

   if(CountBar>=0)

     {

      if(NormalizeDouble(dClose[1],5)!=0.0 && NormalizeDouble(dClose[0],5)!=0.0)

        {

         sSymb[iPos].CH=(dClose[1]*100)/dClose[0]-100;

        }

     }

  }



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

//|  0AG5B A 2K2>4><

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

void CChmcYZ::RCHsay(int iPos, string sSym,datetime db,datetime de,int XD,int YD) // >;=K9 @0AGB B>;L:> >4=>9 ?0@K

  {

   RCH(iPos, sSym,db,de);



   if(ObjectFind(indicatorWindow,"oYZ"+sSym)==-1)

     {

      ObjectCreate(indicatorWindow,"oYZ"+sSym,OBJ_LABEL,indicatorWindow,0,0);

      ObjectSetInteger(indicatorWindow,"oYZ"+sSym,OBJPROP_XDISTANCE,XD);

      ObjectSetInteger(indicatorWindow,"oYZ"+sSym,OBJPROP_YDISTANCE,YD);

      ObjectSetInteger(indicatorWindow,"oYZ"+sSym,OBJPROP_CORNER,CORNER_LEFT_UPPER);

      ObjectSetString(indicatorWindow,"oYZ"+sSym,OBJPROP_TEXT,sSym);

      ObjectSetString(indicatorWindow,"oYZ"+sSym,OBJPROP_FONT,"Arial");

      ObjectSetInteger(indicatorWindow,"oYZ"+sSym,OBJPROP_FONTSIZE,7);

      ObjectSetInteger(indicatorWindow,"oYZ"+sSym,OBJPROP_COLOR,lColorSym);

      ObjectSetInteger(indicatorWindow,"oYZ"+sSym,OBJPROP_SELECTABLE,true);

     }

   if(ObjectFind(indicatorWindow,"oYZ_"+sSym)==-1)

     {

      ObjectCreate(indicatorWindow,"oYZ_"+sSym,OBJ_LABEL,indicatorWindow,0,0);

      ObjectSetInteger(indicatorWindow,"oYZ_"+sSym,OBJPROP_XDISTANCE,XD+45);

      ObjectSetInteger(indicatorWindow,"oYZ_"+sSym,OBJPROP_YDISTANCE,YD);

      ObjectSetInteger(indicatorWindow,"oYZ_"+sSym,OBJPROP_CORNER,CORNER_LEFT_UPPER);

      ObjectSetString(indicatorWindow,"oYZ_"+sSym,OBJPROP_TEXT,sSym);

      ObjectSetString(indicatorWindow,"oYZ_"+sSym,OBJPROP_FONT,"Arial");

      ObjectSetInteger(indicatorWindow,"oYZ_"+sSym,OBJPROP_FONTSIZE,7);

      ObjectSetInteger(indicatorWindow,"oYZ_"+sSym,OBJPROP_COLOR,lColorCH);

      ObjectSetInteger(indicatorWindow,"oYZ_"+sSym,OBJPROP_SELECTABLE,true);

     }

   YD=YD+11;

   lColor=lColorCH;

   if(sSymb[iPos].CH>=0)

     {

      lColor=lColorChPlus;

      ObjectSetString(indicatorWindow,"oYZ_"+sSym,OBJPROP_TEXT," "+DoubleToString(sSymb[iPos].CH,2));

      ObjectSetInteger(indicatorWindow,"oYZ_"+sSym,OBJPROP_XDISTANCE,XD+45);

     }

   if(sSymb[iPos].CH<0)

     {

      lColor=lColorChMinus;

      ObjectSetString(indicatorWindow,"oYZ_"+sSym,OBJPROP_TEXT,DoubleToString(sSymb[iPos].CH,2));

      ObjectSetInteger(indicatorWindow,"oYZ_"+sSym,OBJPROP_XDISTANCE,XD+46);

     }

   ObjectSetInteger(indicatorWindow,"oYZ_"+sSym,OBJPROP_COLOR,lColor);

  }

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////

CChmcYZ chmc;



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

//| Custom indicator initialization function                         |

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

int OnInit()

  {

//--- indicator buffers mapping

   chmc.CreateSymbol(); // !>74048< A8<2>;K 87 >:@C65=8O

//---

   EventSetMillisecondTimer(1);

   return(INIT_SUCCEEDED);

  }

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

//|                                                                  |

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

void OnTimer()

  {

   chmc.MyOnTimer();

  }

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

//| 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[])

  {

   chmc.MyOnCalculate();

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

   return(rates_total);

  }

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

//| ChartEvent function                                              |

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

void OnChartEvent(const int id,

                  const long &lparam,

                  const double &dparam,

                  const string &sparam)

  {

//---

  }

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



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

//|                                                                  |

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

void OnDeinit(const int reason)

  {

   chmc.DeleteSymbolFromCrafic();

  }

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

Comments