//+------------------------------------------------------------------+
//|                                                Alien mini db.mq4 |
//|                        Copyright 2015, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015-2016, Zahid Mahmood / Branly_76"
#property link      "https://www.mql5.com"
#property version   "1.06"
#property strict
#property indicator_chart_window

#include <NewsInc_V2.0.mqh> 
//sinput string symbol="EURUSD";

//Symbol
enum ENUM_SYMBOL_SELECTION
  {
   AUDCAD,AUDCHF,AUDJPY,AUDNZD,AUDUSD,
   CADCHF,CADJPY,
   CHFJPY,
   EURAUD,EURCAD,EURCHF,EURGBP,EURJPY,EURNZD,EURUSD,
   GBPAUD,GBPCAD,GBPCHF,GBPJPY,GBPNZD,GBPUSD,
   NZDCAD,NZDCHF,NZDJPY,NZDUSD,
   USDCAD,USDCHF,USDJPY
  };
string symbol;
input ENUM_SYMBOL_SELECTION  Sym=GBPUSD;
input string                 Symbol_Prefix="";

sinput string _Comment_2="Preamble must be unique for evere instance in chart";
sinput string objectpreamble="alien_mini_db_";
sinput int UpdateTimerInSeconds=5;
input ENUM_TIMEFRAMES  timeFrame=PERIOD_H1; // TF for support/resistance
sinput long chartId=0;
//sinput bool showMonth = false;
sinput bool showWeek= true;
sinput bool showDay = true;
sinput bool showH4 = true;
sinput bool showH1 = true;
sinput bool showM30 = false;
sinput bool showM15 = true;
sinput bool showM5 = true;
sinput bool showM1 = false;

//sinput bool show_stoch_1 = true;
sinput int kPeriod_1 = 8;
sinput int Slowing_1 = 3;
sinput int dPeriod_1 = 3;
sinput int maMethod_1= 0;
sinput int priceField_1=1;

//sinput bool show_stoch_2 = true;
sinput int kPeriod_2 = 21;
sinput int Slowing_2 = 10;
sinput int dPeriod_2 = 10;
sinput int maMethod_2= 0;
sinput int priceField_2=1;

//sinput bool show_stoch_3 = true;
sinput int kPeriod_3 = 100;
sinput int Slowing_3 = 10;
sinput int dPeriod_3 = 10;
sinput int maMethod_3= 0;
sinput int priceField_3=1;

//bbs
sinput int       bolPrd=20;
sinput double    bolDev=2.0;
sinput int       keltPrd=20;
sinput double    keltFactor=1.5;
sinput int       momPrd=12;

input double RsiOma_DDS_Opposite=20.0;

sinput int xAnchor = 1250;
sinput int yAnchor = 10;
sinput int fontSizeText=8;
sinput int smallPanelWidth=35;
sinput int smallPanelheight= 18;
sinput int smallPanelSpace = 5;
sinput int textOffsetY=3;

sinput color textColor=clrWhite;
sinput color dbBackgroundColor=C'60,60,60';
sinput color dbBorderColor=clrGainsboro;
sinput int dbBorderWidth=1;

sinput color bullColor = clrLime;
sinput color bearColor = clrRed;
sinput color flatColor = DimGray;
input int minutesBeforeNews= 120;
input int minutesAfterNews = 30;


input bool AlertOnM1=0;
input bool AlertOnM5=0;
input bool AlertOnM15=0;
input bool AlertOnM30=0;
input bool AlertOnH1=0;
input bool AlertOnH4=0;
input bool AlertOnD1=0;
input bool AlertOnW1=0;

input bool AlertXCrossM1=0;
input bool AlertXCrossM5=0;
input bool AlertXCrossM15=0;
input bool AlertXCrossM30=0;
input bool AlertXCrossH1=0;
input bool AlertXCrossH4=0;
input bool AlertXCrossD1=0;
input bool AlertXCrossW1=0;

input bool SoundOn=0;

double stochUpperlevel = 80.0;
double stochLowerlevel = 20.0;
double stochMiddellevel= 50.0;

int yOffsetArrow;

string preamble;
int panelWidth;
int panelHeight;
bool showPips=true;

bool firstTime=true;

string panelName,labelName;
string strButton;

string strSupport;
string strResistance;

double supp,ress,supp_c,ress_c;
double myPoint,myDigits,myMultiplier;

static datetime updateRS;
static datetime updateNews;

int xInBetween=30;

double Stoch1_1,Stoch1_2,Stoch1_3,Stoch1_4,Stoch2_1,Stoch2_2,Stoch2_3,Stoch2_4,Stoch2_5,Stoch2_6,Stoch3_1,Stoch3_2;//stoch
double tmpValue_7,tmpValue_8,tmpValue_9,tmpValue_10,tmpValue_11,tmpValue_12,tmpValue_13;//adx
double bbsUP,bbsLO;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping

//---
   int sym_i=Sym;
   string sym_s=EnumToString(Sym);
   symbol=SymAndPrefix(sym_s,Symbol_Prefix);



   preamble=objectpreamble;
   string name,s;
   s=objectpreamble;
   int i;
   for(i=ObjectsTotal()-1; i>=0; i--)
     {
      name=ObjectName(i);
      if(StringSubstr(name,0,StringLen(s))==s)
        {
         ObjectDelete(name);
        }
     }
   EventSetTimer(UpdateTimerInSeconds);

   int counter=0;

   if(showM1) {counter++;}
   if(showM5) {counter++;}
   if(showM15) {counter++;}
   if(showM30) {counter++;}
   if(showH1) {counter++;}
   if(showH4) {counter++;}
   if(showDay) {counter++;}
   if(showWeek) {counter++;}

   if(counter==0)
     {
      Alert("No TF selected");
      return(INIT_FAILED);
     }

   panelHeight=(counter+2) * smallPanelheight+(counter+3) * smallPanelSpace;
   panelWidth = fontSizeText * 3+4 *(smallPanelWidth+smallPanelSpace)+xInBetween;

   strButton=objectpreamble+"_SR";
   Create_Button(strButton,"Pips",40,20,xAnchor+110,yAnchor+fontSizeText,clrBlue,clrWhite);
   showPips=true;

   strSupport=objectpreamble+"Support";
   strResistance=objectpreamble+"Resistance";

   myDigits= MarketInfo(symbol,MODE_DIGITS);
   myPoint = MarketInfo(symbol,MODE_POINT);
   if( myDigits == 3 || myDigits == 5 ) myPoint = myPoint * 10;
   myMultiplier = 1.0 / myPoint;

   updateRS=0;
   updateNews=0;

   ExternalNewsInit();
   firstTime=true;

//SetText(chartId, preamble + "header_1", symbol, xOffset + stochOffset, yOffset + fontSizeText, textColor, 10);

   return(INIT_SUCCEEDED);

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- destroy timer
   EventKillTimer();

// delete objects
   string name;
   string s=preamble;

   for(int i=ObjectsTotal()-1; i>=0; i--)
     {
      name=ObjectName(i);
      if(StringSubstr(name,0,StringLen(s))==s)
        {
         ObjectDelete(name);
        }
     }

  }
//+------------------------------------------------------------------+
//| 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[])
  {
//---

//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer()
  {
//---

   int sym_i=Sym;
   string sym_s=EnumToString(Sym);
   symbol=SymAndPrefix(sym_s,Symbol_Prefix);

// calculate the rsioma values for all selected timeframes

   int xOffset = xAnchor;
   int yOffset = yAnchor;
   int stochOffset=35;
   int pips;

//int _squareSize = squareSize - 2;

   if(updateRS!=iTime(symbol,PERIOD_M1,0))
     {
      updateRS=iTime(symbol,PERIOD_M1,0);
      if(showPips)
        {
         //calculate and show
         calculate_RS(symbol,timeFrame,supp,ress,supp_c,ress_c,3);
         //Alert(supp + "  " +  ress + "  " +  supp_c + "  " +  ress_c);
         if(supp!=0)
           {
            pips=(int)((MarketInfo(symbol,MODE_BID)-supp)*myMultiplier);
            SetText(0,strSupport,"S: "+IntegerToString(pips),xAnchor+170,yAnchor+fontSizeText+5,textColor,fontSizeText);
           }
         if(supp_c!=0)
           {
            pips=(int)((MarketInfo(symbol,MODE_BID)-supp_c)*myMultiplier);
            SetText(0,strSupport,"S: "+IntegerToString(pips),xAnchor+170,yAnchor+fontSizeText+5,textColor,fontSizeText);
           }
         if(ress!=0)
           {
            pips=(int)(-(MarketInfo(symbol,MODE_BID)-ress)*myMultiplier);
            SetText(0,strResistance,"R: "+IntegerToString(pips),xAnchor+240,yAnchor+fontSizeText+5,textColor,fontSizeText);
           }
         if(ress_c!=0)
           {
            pips=(int)(-(MarketInfo(symbol,MODE_BID)-ress_c)*myMultiplier);
            SetText(0,strResistance,"R: "+IntegerToString(pips),xAnchor+240,yAnchor+fontSizeText+5,textColor,fontSizeText);
           }
        }
      else
        {
         //calculate and show
         calculate_RS(symbol,timeFrame,supp,ress,supp_c,ress_c,3);
         if(supp!=0)
           {
            SetText(0,strSupport,"S: "+DoubleToStr(supp,(int)myDigits),xAnchor+170,yAnchor+fontSizeText+5,textColor,fontSizeText);
           }
         if(supp_c!=0)
           {
            SetText(0,strSupport,"S: "+DoubleToStr(supp_c,(int)myDigits),xAnchor+170,yAnchor+fontSizeText+5,textColor,fontSizeText);
           }
         if(ress!=0)
           {
            SetText(0,strResistance,"R: "+DoubleToStr(ress,(int)myDigits),xAnchor+240,yAnchor+fontSizeText+5,textColor,fontSizeText);
           }
         if(ress_c!=0)
           {
            SetText(0,strResistance,"R: "+DoubleToStr(ress_c,(int)myDigits),xAnchor+240,yAnchor+fontSizeText+5,textColor,fontSizeText);
           }
        }
     }

//first display panel

// headers
   if(firstTime)
     {
      SetText(chartId,preamble+"header_1",symbol,xOffset+stochOffset,yOffset+fontSizeText,textColor,10);
      SetPanel(preamble+"panel_",(int)chartId,xOffset,yOffset,panelWidth+120,panelHeight,dbBackgroundColor,dbBorderColor,dbBorderWidth);
      firstTime=false;
     }

   if(true)
     {
      yOffset=yOffset+smallPanelheight;
      SetText(chartId,preamble+"header_1_8",IntegerToString(kPeriod_1),xOffset+stochOffset,yOffset+fontSizeText,textColor,fontSizeText);
      SetText(chartId,preamble+"header_1_21",IntegerToString(kPeriod_2),xOffset+stochOffset+smallPanelWidth+smallPanelSpace,yOffset+fontSizeText,textColor,fontSizeText);
      SetText(chartId,preamble+"header_1_100",IntegerToString(kPeriod_3),xOffset+stochOffset+2*smallPanelWidth+2*smallPanelSpace,yOffset+fontSizeText,textColor,fontSizeText);
      SetText(chartId,preamble+"header_1_101","Rsioma",xOffset+stochOffset+3*smallPanelWidth+3*smallPanelSpace+xInBetween,yOffset+fontSizeText,textColor,fontSizeText);
      SetText(chartId,preamble+"header_1_102","DDS",xOffset+stochOffset+4*smallPanelWidth+4*smallPanelSpace+xInBetween,yOffset+fontSizeText,textColor,fontSizeText);
      SetText(chartId,preamble+"header_1_103","ADX 5x",xOffset+stochOffset+5*smallPanelWidth+5*smallPanelSpace+xInBetween,yOffset+fontSizeText,textColor,fontSizeText);
     }

   if(updateNews!=iTime(symbol,PERIOD_M1,0))
     {
      updateNews=iTime(symbol,PERIOD_M1,0);
      int newsvalue=getNewsInfoPair(symbol,minutesBeforeNews,minutesAfterNews);
      //Alert(symbol + "  " + newsvalue);
      if(newsvalue==1)
        {
         ObjectSetInteger(0,preamble+"header_1",OBJPROP_COLOR,clrRed);
        }
      else if(newsvalue==2)
        {
         ObjectSetInteger(0,preamble+"header_1",OBJPROP_COLOR,clrOrange);
        }
      else if(newsvalue==3)
        {
         ObjectSetInteger(0,preamble+"header_1",OBJPROP_COLOR,clrYellow);
        }
      else
        {
         ObjectSetInteger(0,preamble+"header_1",OBJPROP_COLOR,textColor);
        }

     }

   if(showM1)
     {
      // write TF
      yOffset=yOffset+smallPanelheight+smallPanelSpace;
      SetText(chartId,preamble+"labelText_M1_1","M1",xAnchor+smallPanelSpace,yOffset+textOffsetY,textColor,fontSizeText);

      Stoch1_1 = iStochastic(symbol, PERIOD_M1,kPeriod_1,dPeriod_1, Slowing_1, maMethod_1, priceField_1,MODE_MAIN,0);
      Stoch1_2 = iStochastic(symbol, PERIOD_M1,kPeriod_1,dPeriod_1, Slowing_1, maMethod_1, priceField_1,MODE_MAIN,1);

      panelName=preamble+"panel_M1_1_"+symbol;
      SetPanel(panelName,(int)chartId,xOffset+stochOffset,yOffset,smallPanelWidth,smallPanelheight,dbBackgroundColor,dbBorderColor,dbBorderWidth);

      labelName=preamble+"label_M1_1_"+symbol;
      SetText(chartId,labelName,IntegerToString((int) Stoch1_1),xOffset+stochOffset+5,yOffset+2,textColor,fontSizeText);

      if(Stoch1_1>Stoch1_2)
        {
         SetObjText(chartId,preamble+"Label_M1_st1_Arrow",CharToStr(233),xOffset+stochOffset+25,yOffset+0,bullColor,fontSizeText);
        }
      else
        {
         SetObjText(chartId,preamble+"Label_M1_st1_Arrow",CharToStr(234),xOffset+stochOffset+25,yOffset+3,bearColor,fontSizeText);
        }

      Stoch2_1=  iStochastic(symbol,PERIOD_M1,kPeriod_2,dPeriod_2,Slowing_2,maMethod_2,priceField_2,MODE_MAIN,0);
      Stoch2_2= iStochastic(symbol,PERIOD_M1,kPeriod_2,dPeriod_2,Slowing_2,maMethod_2,priceField_2,MODE_MAIN,1);

      panelName=preamble+"panel_M1_2_"+symbol;
      SetPanel(panelName,(int)chartId,xOffset+stochOffset+smallPanelWidth+smallPanelSpace,yOffset,smallPanelWidth,smallPanelheight,dbBackgroundColor,dbBorderColor,dbBorderWidth);

      labelName=preamble+"label_M1_2_"+symbol;
      SetText(chartId,labelName,IntegerToString((int) Stoch2_1),xOffset+stochOffset+smallPanelWidth+smallPanelSpace+5,yOffset+2,textColor,fontSizeText);

      if(Stoch2_1>Stoch2_2)
        {
         SetObjText(chartId,preamble+"Label_M1_st2_Arrow",CharToStr(233),xOffset+stochOffset+smallPanelWidth+smallPanelSpace+25,yOffset+0,bullColor,fontSizeText);
        }
      else
        {
         SetObjText(chartId,preamble+"Label_M1_st2_Arrow",CharToStr(234),xOffset+stochOffset+smallPanelWidth+smallPanelSpace+25,yOffset+3,bearColor,fontSizeText);
        }

      // check for cross
      Stoch1_1 = iStochastic(symbol, PERIOD_M1,kPeriod_1,dPeriod_1, Slowing_1, maMethod_1, priceField_1,MODE_MAIN,1);
      Stoch1_2 = iStochastic(symbol, PERIOD_M1,kPeriod_1,dPeriod_1, Slowing_1, maMethod_1, priceField_1,MODE_MAIN,2);
      Stoch1_3 = iStochastic(symbol, PERIOD_M1,kPeriod_1,dPeriod_1, Slowing_1, maMethod_1, priceField_1,MODE_MAIN,3);
      Stoch1_4 = iStochastic(symbol, PERIOD_M1,kPeriod_1,dPeriod_1, Slowing_1, maMethod_1, priceField_1,MODE_MAIN,4);

      Stoch2_1 = iStochastic(symbol, PERIOD_M1,kPeriod_2,dPeriod_2, Slowing_2, maMethod_2, priceField_2,MODE_MAIN,1);
      Stoch2_2 = iStochastic(symbol, PERIOD_M1,kPeriod_2,dPeriod_2, Slowing_2, maMethod_2, priceField_2,MODE_MAIN,2);
      Stoch2_3 = iStochastic(symbol, PERIOD_M1,kPeriod_2,dPeriod_2, Slowing_2, maMethod_2, priceField_2,MODE_MAIN,3);
      Stoch2_4 = iStochastic(symbol, PERIOD_M1,kPeriod_2,dPeriod_2, Slowing_2, maMethod_2, priceField_2,MODE_MAIN,4);
      Stoch2_5 = iStochastic(symbol, PERIOD_M1,kPeriod_2,dPeriod_2, Slowing_2, maMethod_2, priceField_2,MODE_MAIN,5);
      Stoch2_6 = iStochastic(symbol, PERIOD_M1,kPeriod_2,dPeriod_2, Slowing_2, maMethod_2, priceField_2,MODE_MAIN,6);

      Stoch3_1 = iStochastic(symbol, PERIOD_M1,kPeriod_3,dPeriod_3, Slowing_3, maMethod_3, priceField_3,MODE_MAIN,1);
      Stoch3_2 = iStochastic(symbol, PERIOD_M1,kPeriod_3,dPeriod_3, Slowing_3, maMethod_3, priceField_3,MODE_MAIN,2);

      panelName=preamble+"panel_8_21_Cross_M1";

      if(Stoch2_1>50 &&                                     //vid >50
         Stoch2_1<80    &&                                  //vid <80
         Stoch2_1<Stoch1_1 &&                               //vid0<gr0
         Stoch2_2>Stoch1_2 &&                               //vid0>gr0
         (Stoch1_2<50 ||  Stoch1_3<50 || Stoch1_4<50) &&    //gr0<50
         Stoch3_1>50)
        {
         //up cross
         SetPanel(panelName,0,xOffset+stochOffset-2,yOffset-2,2 *(smallPanelWidth+smallPanelSpace),smallPanelheight+4,clrBlack,clrLime,3);
         if(AlertOnM1 && MTF_NewBar0(PERIOD_M1))
           {
            Alert(TimeToStr(TimeCurrent(),TIME_DATE|TIME_MINUTES)+" "+symbol+" "+" M1 "+" 50 UP");
            if(SoundOn)
               PlaySound("alert.wav");
           }
        }
      else if(Stoch2_1<50 && //vid <50
         Stoch2_1>20 &&                                  // vid >20
         Stoch2_1>Stoch1_1 &&                            //vid0>gr0
         Stoch2_1<Stoch1_2 &&                            //vid0<gr0
         (Stoch1_2>50 || Stoch1_3>50 || Stoch1_4>50) && 
         Stoch3_1<50)
           {
            //down cross
            SetPanel(panelName,0,xOffset+stochOffset-2,yOffset-2,2 *(smallPanelWidth+smallPanelSpace),smallPanelheight+4,clrBlack,clrSalmon,3);
            if(AlertOnM1 && MTF_NewBar0(PERIOD_M1))
              {
               Alert(TimeToStr(TimeCurrent(),TIME_DATE|TIME_MINUTES)+" "+symbol+" "+" M1 "+" 50 DN");
               if(SoundOn)
                  PlaySound("alert.wav");
              }
           }
         else if(Stoch2_1>stochLowerlevel && 
            Stoch2_1<stochUpperlevel && // 80 > vid > 20
            Stoch2_1>Stoch2_2 && 
            Stoch2_2>Stoch2_3 && 
            Stoch2_3>Stoch2_4 && 
            Stoch2_4>Stoch2_5 && 
            Stoch2_5>Stoch2_6 && // vid kyla
            Stoch1_2<Stoch2_2 && 
            Stoch1_1>Stoch2_1)
              {
               //up cross
               SetPanel(panelName,0,xOffset+stochOffset-2,yOffset-2,2 *(smallPanelWidth+smallPanelSpace),smallPanelheight+4,clrBlack,clrDarkGreen,3);
               if(AlertXCrossM1 && MTF_NewBar1(PERIOD_M1))
                 {
                  Alert(TimeToStr(TimeCurrent(),TIME_DATE|TIME_MINUTES)+" "+symbol+" "+" M1 "+" X Cross UP");
                  if(SoundOn)
                     PlaySound("alert.wav");
                 }
              }

            else if(Stoch2_1>stochLowerlevel && Stoch2_1<stochUpperlevel && // 80 > vid > 20
               Stoch2_1<Stoch2_2 && 
               Stoch2_2<Stoch2_3 && 
               Stoch2_3<Stoch2_4 && 
               Stoch2_4<Stoch2_5 && 
               Stoch2_5<Stoch2_6 && // vid krenta
               Stoch1_2>Stoch2_2 && 
               Stoch1_1<Stoch2_1)
                 {
                  //down cross
                  SetPanel(panelName,0,xOffset+stochOffset-2,yOffset-2,2 *(smallPanelWidth+smallPanelSpace),smallPanelheight+4,clrBlack,clrRed,3);
                  if(AlertXCrossM1 && MTF_NewBar1(PERIOD_M1))
                    {
                     Alert(TimeToStr(TimeCurrent(),TIME_DATE|TIME_MINUTES)+" "+symbol+" "+" M1 "+" X Cross DN");
                     if(SoundOn)
                        PlaySound("alert.wav");
                    }
                 }
               else     ObjectDelete(panelName);

      //--------------
      Stoch3_1 = iStochastic(symbol, PERIOD_M1,kPeriod_3,dPeriod_3, Slowing_3, maMethod_3, priceField_3,MODE_MAIN,0);
      Stoch3_2 = iStochastic(symbol, PERIOD_M1,kPeriod_3,dPeriod_3, Slowing_3, maMethod_3, priceField_3,MODE_MAIN,1);
      panelName= preamble+"panel_M1_3_"+symbol;
      SetPanel(panelName,(int)chartId,xOffset+stochOffset+2 *(smallPanelWidth+smallPanelSpace),yOffset,smallPanelWidth,smallPanelheight,dbBackgroundColor,dbBorderColor,dbBorderWidth);
      labelName=preamble+"label_M1_3_"+symbol;
      SetText(chartId,labelName,IntegerToString((int) Stoch3_1),xOffset+stochOffset+2 *(smallPanelWidth+smallPanelSpace)+5,yOffset+2,textColor,fontSizeText);

      if(Stoch3_1>Stoch3_2)
        {
         SetObjText(chartId,preamble+"Label_M1_st3_Arrow",CharToStr(233),xOffset+stochOffset+2 *(smallPanelWidth+smallPanelSpace)+25,yOffset+0,bullColor,fontSizeText);
        }
      else
        {
         SetObjText(chartId,preamble+"Label_M1_st3_Arrow",CharToStr(234),xOffset+stochOffset+2 *(smallPanelWidth+smallPanelSpace)+25,yOffset+3,bearColor,fontSizeText);
        }
      labelName=labelName=preamble+"label_M1_Circle_"+symbol;
      if(Stoch1_1>80 && Stoch2_1>80 && Stoch3_1>80)
        {
         SetObjText(chartId,labelName,CharToStr(110),xOffset+stochOffset+3 *(smallPanelWidth+smallPanelSpace)+5,yOffset+3,bearColor,fontSizeText);
        }
      else if(Stoch1_1<20 && Stoch2_1<20 && Stoch3_1<20)
        {
         SetObjText(chartId,labelName,CharToStr(110),xOffset+stochOffset+3 *(smallPanelWidth+smallPanelSpace)+5,yOffset+3,bullColor,fontSizeText);
        }
      else
        {
         SetObjText(chartId,labelName,CharToStr(20),xOffset+stochOffset+3 *(smallPanelWidth+smallPanelSpace)+5,yOffset+3,dbBackgroundColor,fontSizeText);
        }

      //rsioma
      tmpValue_7 = iCustom(symbol,PERIOD_M1,"RSIOMA Light", 14, 1, 0, 21, 1, 0, 0);
      tmpValue_8 = iCustom(symbol,PERIOD_M1,"RSIOMA Light", 14, 1, 0, 21, 1, 0, 1);
      panelName=preamble+"panel_M1_4_"+symbol;
      SetPanel(panelName,(int)chartId,xOffset+stochOffset+3 *(smallPanelWidth+smallPanelSpace)+xInBetween,yOffset,smallPanelWidth,smallPanelheight,dbBackgroundColor,dbBorderColor,dbBorderWidth);
      labelName=preamble+"label_M1_4_"+symbol;
      SetText(chartId,labelName,IntegerToString((int)tmpValue_7),xOffset+stochOffset+3 *(smallPanelWidth+smallPanelSpace)+5+xInBetween,yOffset+2,textColor,fontSizeText);

      if(tmpValue_7>tmpValue_8)
        {
         SetObjText(chartId,preamble+"Label_M1_rsioma_Arrow",CharToStr(233),xOffset+stochOffset+3 *(smallPanelWidth+smallPanelSpace)+25+xInBetween,yOffset+0,bullColor,fontSizeText);
        }
      else
        {
         SetObjText(chartId,preamble+"Label_M1_rsioma_Arrow",CharToStr(234),xOffset+stochOffset+3 *(smallPanelWidth+smallPanelSpace)+25+xInBetween,yOffset+3,bearColor,fontSizeText);
        }

      //
      // dds
      tmpValue_9=iCustom(symbol,PERIOD_M1,"DDS",8,13,9,0,0);
      tmpValue_10 = iCustom(symbol,PERIOD_M1,"DDS", 8, 13, 9, 0, 1);
      tmpValue_11 = iCustom(symbol,PERIOD_M1,"DDS", 8, 13, 9, 0, 2);
      tmpValue_12 = iCustom(symbol,PERIOD_M1,"DDS", 8, 13, 9, 1, 1);
      tmpValue_13 = iCustom(symbol,PERIOD_M1,"DDS", 8, 13, 9, 1, 2);
      panelName=preamble+"panel_M1_dds_"+symbol;
      //SetPanel(panelName,chartId, xOffset + stochOffset + 4 * (smallPanelWidth + smallPanelSpace) + xInBetween, yOffset, smallPanelWidth, smallPanelheight,dbBackgroundColor, dbBorderColor, dbBorderWidth);
      labelName=preamble+"label_M1_dds_"+symbol;
      if(tmpValue_10>tmpValue_12 && tmpValue_11<tmpValue_13)
        {
         SetPanel(panelName,(int)chartId,xOffset+stochOffset+4 *(smallPanelWidth+smallPanelSpace)+xInBetween,yOffset,smallPanelWidth,smallPanelheight,dbBackgroundColor,clrLime,dbBorderWidth+1);
        }
      else if(tmpValue_10<tmpValue_12 && tmpValue_11>tmpValue_13)
        {
         SetPanel(panelName,(int)chartId,xOffset+stochOffset+4 *(smallPanelWidth+smallPanelSpace)+xInBetween,yOffset,smallPanelWidth,smallPanelheight,dbBackgroundColor,clrRed,dbBorderWidth+1);
        }
      else
        {
         SetPanel(panelName,(int)chartId,xOffset+stochOffset+4 *(smallPanelWidth+smallPanelSpace)+xInBetween,yOffset,smallPanelWidth,smallPanelheight,dbBackgroundColor,dbBorderColor,dbBorderWidth);
        }
      SetText(chartId,labelName,IntegerToString((int)tmpValue_9),xOffset+stochOffset+4 *(smallPanelWidth+smallPanelSpace)+5+xInBetween,yOffset+2,textColor,fontSizeText);

      if(tmpValue_9>tmpValue_10)
        {
         SetObjText(chartId,preamble+"Label_M1_dds_Arrow",CharToStr(233),xOffset+stochOffset+4 *(smallPanelWidth+smallPanelSpace)+25+xInBetween,yOffset+0,bullColor,fontSizeText);
        }
      else
        {
         SetObjText(chartId,preamble+"Label_M1_dds_Arrow",CharToStr(234),xOffset+stochOffset+4 *(smallPanelWidth+smallPanelSpace)+25+xInBetween,yOffset+4,bearColor,fontSizeText);
        }

      //end dds

      // check DDS and RSIOMA opposite values 15 and 85
      panelName=preamble+"panel_RsiOma_DDS_Cross_M1";
      if(tmpValue_8>(100-RsiOma_DDS_Opposite) && tmpValue_10<RsiOma_DDS_Opposite)
        {
         SetPanel(panelName,0,xOffset+stochOffset+3 *(smallPanelWidth+smallPanelSpace)+xInBetween-2,yOffset-2,2 *(smallPanelWidth+smallPanelSpace),smallPanelheight+4,clrBlack,clrLime,2);
        }
      else if(tmpValue_8<RsiOma_DDS_Opposite && tmpValue_10>(100-RsiOma_DDS_Opposite))
        {
         SetPanel(panelName,0,xOffset+stochOffset+3 *(smallPanelWidth+smallPanelSpace)+xInBetween-2,yOffset-2,2 *(smallPanelWidth+smallPanelSpace),smallPanelheight+4,clrBlack,clrRed,2);
        }
      else
        {
         ObjectDelete(panelName);
        }

      //bbs
      double diff= iATR(symbol,PERIOD_M1,keltPrd,1)*keltFactor;
      double std = iStdDev(symbol,PERIOD_M1,bolPrd,MODE_SMA,0,PRICE_CLOSE,1);
      double bbs = bolDev * std / diff;
      if(bbs<1) {bbsUP=0;}
      else {bbsLO=0;}

      //adx

      double val1 = iADX(symbol,PERIOD_M1,7, PRICE_CLOSE, MODE_MAIN, 0);
      double val2 = iADX(symbol,PERIOD_M1,7, PRICE_CLOSE, MODE_MAIN,  1);
      double dmip = iADX(symbol,PERIOD_M1,7, PRICE_CLOSE, MODE_PLUSDI, 0);
      double dmim = iADX(symbol,PERIOD_M1,7, PRICE_CLOSE, MODE_MINUSDI, 0);

      double val1_21 = iADX(symbol,PERIOD_M1,21, PRICE_CLOSE, MODE_MAIN, 0);
      double val2_21 = iADX(symbol,PERIOD_M1,21, PRICE_CLOSE, MODE_MAIN,  1);
      double dmip_21 = iADX(symbol,PERIOD_M1,21, PRICE_CLOSE, MODE_PLUSDI, 0);
      double dmim_21 = iADX(symbol,PERIOD_M1,21, PRICE_CLOSE, MODE_MINUSDI, 0);

      double val1_42 = iADX(symbol,PERIOD_M1,42, PRICE_CLOSE, MODE_MAIN, 0);
      double val2_42 = iADX(symbol,PERIOD_M1,42, PRICE_CLOSE, MODE_MAIN,  1);
      double dmip_42 = iADX(symbol,PERIOD_M1,42, PRICE_CLOSE, MODE_PLUSDI, 0);
      double dmim_42 = iADX(symbol,PERIOD_M1,42, PRICE_CLOSE, MODE_MINUSDI, 0);

      double val1_89 = iADX(symbol,PERIOD_M1,89, PRICE_CLOSE, MODE_MAIN, 0);
      double val2_89 = iADX(symbol,PERIOD_M1,89, PRICE_CLOSE, MODE_MAIN,  1);
      double dmip_89 = iADX(symbol,PERIOD_M1,89, PRICE_CLOSE, MODE_PLUSDI, 0);
      double dmim_89 = iADX(symbol,PERIOD_M1,89, PRICE_CLOSE, MODE_MINUSDI, 0);

      double val1_144 = iADX(symbol,PERIOD_M1,144, PRICE_CLOSE, MODE_MAIN, 0);
      double val2_144 = iADX(symbol,PERIOD_M1,144, PRICE_CLOSE, MODE_MAIN,  1);
      double dmip_144 = iADX(symbol,PERIOD_M1,144, PRICE_CLOSE, MODE_PLUSDI, 0);
      double dmim_144 = iADX(symbol,PERIOD_M1,144, PRICE_CLOSE, MODE_MINUSDI, 0);

      panelName=preamble+"panel_M1_ADX_"+symbol;
      SetPanel(panelName,(int)chartId,xOffset+stochOffset+5 *(smallPanelWidth+smallPanelSpace)+xInBetween,yOffset,smallPanelWidth,smallPanelheight,dbBackgroundColor,dbBorderColor,dbBorderWidth);
      labelName=preamble+"label_M1_ADX_"+symbol;
      // SetText(chartId, labelName,IntegerToString((int)val1),xOffset + stochOffset + 5 * (smallPanelWidth + smallPanelSpace) + 5, yOffset + 2, textColor, fontSizeText);

      if((val1>val2) && (dmip>dmim) && (val1_21>val2_21) && (dmip_21>dmim_21) && (val1_42>val2_42) && (dmip_42>dmim_42) && (val1_89>val2_89) && (dmip_89>dmim_89) && (val1_144>val2_144) && (dmip_144>dmim_144))
        {
         SetObjText(chartId,preamble+"Label_M1_ADX_Arrow1",CharToStr(233),xOffset+stochOffset+5 *(smallPanelWidth+smallPanelSpace)+25+xInBetween,yOffset+0,bullColor,fontSizeText);
        }
      else if((val1>val2) && (dmip<dmim) && (val1_21>val2_21) && (dmip_21<dmim_21) && (val1_42>val2_42) && (dmip_42<dmim_42) && (val1_89>val2_89) && (dmip_89<dmim_89) && (val1_144>val2_144) && (dmip_144<dmim_144))
        {
         SetObjText(chartId,preamble+"Label_M1_ADX_Arrow1",CharToStr(234),xOffset+stochOffset+5 *(smallPanelWidth+smallPanelSpace)+25+xInBetween,yOffset+4,bearColor,fontSizeText);
        }
      else
        {
         SetObjText(chartId,preamble+"Label_M1_ADX_Arrow1",CharToStr(108),xOffset+stochOffset+5 *(smallPanelWidth+smallPanelSpace)+25+xInBetween,yOffset+4,flatColor,fontSizeText);
        }

      //edn adx
     }

   if(showM5)
     {
      // write TF
      yOffset=yOffset+smallPanelheight+smallPanelSpace;
      SetText(chartId,preamble+"labelText_M5_1","M5",xAnchor+smallPanelSpace,yOffset+textOffsetY,textColor,fontSizeText);

      Stoch1_1 = iStochastic(symbol, PERIOD_M5,kPeriod_1,dPeriod_1, Slowing_1, maMethod_1, priceField_1,MODE_MAIN,0);
      Stoch1_2 = iStochastic(symbol, PERIOD_M5,kPeriod_1,dPeriod_1, Slowing_1, maMethod_1, priceField_1,MODE_MAIN,1);

      panelName=preamble+"panel_M5_1_"+symbol;
      SetPanel(panelName,(int)chartId,xOffset+stochOffset,yOffset,smallPanelWidth,smallPanelheight,dbBackgroundColor,dbBorderColor,dbBorderWidth);

      labelName=preamble+"label_M5_1_"+symbol;
      SetText(chartId,labelName,IntegerToString((int) Stoch1_1),xOffset+stochOffset+5,yOffset+2,textColor,fontSizeText);

      if(Stoch1_1>Stoch1_2)
        {
         SetObjText(chartId,preamble+"Label_M5_st1_Arrow",CharToStr(233),xOffset+stochOffset+25,yOffset+0,bullColor,fontSizeText);
        }
      else
        {
         SetObjText(chartId,preamble+"Label_M5_st1_Arrow",CharToStr(234),xOffset+stochOffset+25,yOffset+3,bearColor,fontSizeText);
        }

      Stoch2_1 = iStochastic(symbol, PERIOD_M5,kPeriod_2,dPeriod_2, Slowing_2, maMethod_2, priceField_2,MODE_MAIN,0);
      Stoch2_2 = iStochastic(symbol, PERIOD_M5,kPeriod_2,dPeriod_2, Slowing_2, maMethod_2, priceField_2,MODE_MAIN,1);
      panelName= preamble+"panel_M5_2_"+symbol;
      SetPanel(panelName,(int)chartId,xOffset+stochOffset+smallPanelWidth+smallPanelSpace,yOffset,smallPanelWidth,smallPanelheight,dbBackgroundColor,dbBorderColor,dbBorderWidth);

      labelName=preamble+"label_M5_2_"+symbol;
      SetText(chartId,labelName,IntegerToString((int) Stoch2_1),xOffset+stochOffset+smallPanelWidth+smallPanelSpace+5,yOffset+2,textColor,fontSizeText);

      if(Stoch2_1>Stoch2_2)
        {
         SetObjText(chartId,preamble+"Label_M5_st2_Arrow",CharToStr(233),xOffset+stochOffset+smallPanelWidth+smallPanelSpace+25,yOffset+0,bullColor,fontSizeText);
        }
      else
        {
         SetObjText(chartId,preamble+"Label_M5_st2_Arrow",CharToStr(234),xOffset+stochOffset+smallPanelWidth+smallPanelSpace+25,yOffset+3,bearColor,fontSizeText);
        }

      // check for cross
      Stoch1_1 = iStochastic(symbol, PERIOD_M5,kPeriod_1,dPeriod_1, Slowing_1, maMethod_1, priceField_1,MODE_MAIN,1);
      Stoch1_2 = iStochastic(symbol, PERIOD_M5,kPeriod_1,dPeriod_1, Slowing_1, maMethod_1, priceField_1,MODE_MAIN,2);
      Stoch1_3 = iStochastic(symbol, PERIOD_M5,kPeriod_1,dPeriod_1, Slowing_1, maMethod_1, priceField_1,MODE_MAIN,3);
      Stoch1_4 = iStochastic(symbol, PERIOD_M5,kPeriod_1,dPeriod_1, Slowing_1, maMethod_1, priceField_1,MODE_MAIN,4);

      Stoch2_1 = iStochastic(symbol, PERIOD_M5,kPeriod_2,dPeriod_2, Slowing_2, maMethod_2, priceField_2,MODE_MAIN,1);
      Stoch2_2 = iStochastic(symbol, PERIOD_M5,kPeriod_2,dPeriod_2, Slowing_2, maMethod_2, priceField_2,MODE_MAIN,2);
      Stoch2_3 = iStochastic(symbol, PERIOD_M5,kPeriod_2,dPeriod_2, Slowing_2, maMethod_2, priceField_2,MODE_MAIN,3);
      Stoch2_4 = iStochastic(symbol, PERIOD_M5,kPeriod_2,dPeriod_2, Slowing_2, maMethod_2, priceField_2,MODE_MAIN,4);
      Stoch2_5 = iStochastic(symbol, PERIOD_M5,kPeriod_2,dPeriod_2, Slowing_2, maMethod_2, priceField_2,MODE_MAIN,5);
      Stoch2_6 = iStochastic(symbol, PERIOD_M5,kPeriod_2,dPeriod_2, Slowing_2, maMethod_2, priceField_2,MODE_MAIN,6);


      Stoch3_1 = iStochastic(symbol, PERIOD_M5,kPeriod_3,dPeriod_3, Slowing_3, maMethod_3, priceField_3,MODE_MAIN,1);
      Stoch3_2 = iStochastic(symbol, PERIOD_M5,kPeriod_3,dPeriod_3, Slowing_3, maMethod_3, priceField_3,MODE_MAIN,2);

      panelName=preamble+"panel_8_21_Cross_M5";
      if(Stoch2_1>50 &&                                     //vid <50
         Stoch2_1<80    &&                                  //vid <80
         Stoch2_1<Stoch1_1 &&                               //vid0<gr0
         Stoch2_2>Stoch1_2 &&                               //vid0>gr0
         (Stoch1_2<50 ||  Stoch1_3<50 || Stoch1_4<50) &&    //gr0<50
         Stoch3_1>50                                        //
         )
        {
         //up cross
         SetPanel(panelName,0,xOffset+stochOffset-2,yOffset-2,2 *(smallPanelWidth+smallPanelSpace),smallPanelheight+4,clrBlack,clrLime,3);
         //Alert(TimeToStr(TimeCurrent(),TIME_DATE|TIME_MINUTES)+" "+symbol+" "+IntegerToString((int)PERIOD_M5)+" 50 UP");
         if(AlertOnM5 && MTF_NewBar0(PERIOD_M5))
           {
            Alert(TimeToStr(TimeCurrent(),TIME_DATE|TIME_MINUTES)+" "+symbol+" "+" M5 "+" 50 UP");
            if(SoundOn)
               PlaySound("alert.wav");
           }
        
        }
      else if(Stoch2_1<50 && //vid <50
         Stoch2_1>20 &&                                  // vid >20
         Stoch2_1>Stoch1_1 &&                            //vid0>gr0
         Stoch2_1<Stoch1_2 &&                            //vid0<gr0
         (Stoch1_2>50 || Stoch1_3>50 || Stoch1_4>50) && 
         Stoch3_1<50
         )
           {
            //down cross
            SetPanel(panelName,0,xOffset+stochOffset-2,yOffset-2,2 *(smallPanelWidth+smallPanelSpace),smallPanelheight+4,clrBlack,clrSalmon,3);
            //Alert(TimeToStr(TimeCurrent(),TIME_DATE|TIME_MINUTES)+" "+symbol+" "+IntegerToString((int)PERIOD_M5)+" 50 DN");
            if(AlertOnM5 && MTF_NewBar0(PERIOD_M5))
              {
               Alert(TimeToStr(TimeCurrent(),TIME_DATE|TIME_MINUTES)+" "+symbol+" "+" M5 "+" 50 DN");
               if(SoundOn)
                  PlaySound("alert.wav");
              }
           }
         else if(Stoch2_1>stochLowerlevel && 
            Stoch2_1<stochUpperlevel && // 80 > vid > 20
            Stoch2_1>Stoch2_2 && 
            Stoch2_2>Stoch2_3 && 
            Stoch2_3>Stoch2_4 && 
            Stoch2_4>Stoch2_5 && 
            Stoch2_5>Stoch2_6 && // vid kyla
            Stoch1_2<Stoch2_2 && 
            Stoch1_1>Stoch2_1)
              {
               //up cross
               SetPanel(panelName,0,xOffset+stochOffset-2,yOffset-2,2 *(smallPanelWidth+smallPanelSpace),smallPanelheight+4,clrBlack,clrDarkGreen,3);
               //Alert(TimeToStr(TimeCurrent(),TIME_DATE|TIME_MINUTES)+" "+symbol+" "+IntegerToString((int)PERIOD_M5)+" X Cross UP");
               if(AlertXCrossM5 && MTF_NewBar1(PERIOD_M5))
                 {
                  Alert(TimeToStr(TimeCurrent(),TIME_DATE|TIME_MINUTES)+" "+symbol+" "+" M5 "+" X Cross UP");
                  if(SoundOn)
                     PlaySound("alert.wav");
                 }
              }

            else if(Stoch2_1>stochLowerlevel && Stoch2_1<stochUpperlevel && // 80 > vid > 20
               Stoch2_1<Stoch2_2 && 
               Stoch2_2<Stoch2_3 && 
               Stoch2_3<Stoch2_4 && 
               Stoch2_4<Stoch2_5 && 
               Stoch2_5<Stoch2_6 && // vid krenta
               Stoch1_2>Stoch2_2 && 
               Stoch1_1<Stoch2_1)
                 {
                  //down cross
                  SetPanel(panelName,0,xOffset+stochOffset-2,yOffset-2,2 *(smallPanelWidth+smallPanelSpace),smallPanelheight+4,clrBlack,clrRed,3);
                  //Alert(TimeToStr(TimeCurrent(),TIME_DATE|TIME_MINUTES)+" "+symbol+" "+IntegerToString((int)PERIOD_M5)+" X Cross DN");
                  if(AlertXCrossM5 && MTF_NewBar1(PERIOD_M5))
                    {
                     Alert(TimeToStr(TimeCurrent(),TIME_DATE|TIME_MINUTES)+" "+symbol+" "+" M5 "+" X Cross DN");
                     if(SoundOn)
                        PlaySound("alert.wav");
                    }
                 }
               else     ObjectDelete(panelName);

      Stoch3_1 = iStochastic(symbol, PERIOD_M5,kPeriod_3,dPeriod_3, Slowing_3, maMethod_3, priceField_3,MODE_MAIN,0);
      Stoch3_2 = iStochastic(symbol, PERIOD_M5,kPeriod_3,dPeriod_3, Slowing_3, maMethod_3, priceField_3,MODE_MAIN,1);
      panelName= preamble+"panel_M5_3_"+symbol;
      SetPanel(panelName,(int)chartId,xOffset+stochOffset+2 *(smallPanelWidth+smallPanelSpace),yOffset,smallPanelWidth,smallPanelheight,dbBackgroundColor,dbBorderColor,dbBorderWidth);
      labelName=preamble+"label_M5_3_"+symbol;
      SetText(chartId,labelName,IntegerToString((int) Stoch3_1),xOffset+stochOffset+2 *(smallPanelWidth+smallPanelSpace)+5,yOffset+2,textColor,fontSizeText);

      if(Stoch3_1>Stoch3_2)
        {
         SetObjText(chartId,preamble+"Label_M5_st3_Arrow",CharToStr(233),xOffset+stochOffset+2 *(smallPanelWidth+smallPanelSpace)+25,yOffset+0,bullColor,fontSizeText);
        }
      else
        {
         SetObjText(chartId,preamble+"Label_M5_st3_Arrow",CharToStr(234),xOffset+stochOffset+2 *(smallPanelWidth+smallPanelSpace)+25,yOffset+3,bearColor,fontSizeText);
        }

      labelName=labelName=preamble+"label_M5_Circle_"+symbol;
      if(Stoch1_1>80 && Stoch2_1>80 && Stoch3_1>80)
        {
         SetObjText(chartId,labelName,CharToStr(110),xOffset+stochOffset+3 *(smallPanelWidth+smallPanelSpace)+5,yOffset+3,bearColor,fontSizeText);
        }
      else if(Stoch1_1<20 && Stoch2_1<20 && Stoch3_1<20)
        {
         SetObjText(chartId,labelName,CharToStr(110),xOffset+stochOffset+3 *(smallPanelWidth+smallPanelSpace)+5,yOffset+3,bullColor,fontSizeText);
        }
      else
        {
         SetObjText(chartId,labelName,CharToStr(20),xOffset+stochOffset+3 *(smallPanelWidth+smallPanelSpace)+5,yOffset+3,dbBackgroundColor,fontSizeText);
        }

      //yOffset = yOffset + squareSize + squareSpace;

      //rsioma
      tmpValue_7 = iCustom(symbol,PERIOD_M5,"RSIOMA Light", 14, 1, 0, 21, 1, 0, 0);
      tmpValue_8 = iCustom(symbol,PERIOD_M5,"RSIOMA Light", 14, 1, 0, 21, 1, 0, 1);
      panelName=preamble+"panel_M1_5_"+symbol;
      SetPanel(panelName,(int)chartId,xOffset+stochOffset+3 *(smallPanelWidth+smallPanelSpace)+xInBetween,yOffset,smallPanelWidth,smallPanelheight,dbBackgroundColor,dbBorderColor,dbBorderWidth);
      labelName=preamble+"label_M1_5_"+symbol;
      SetText(chartId,labelName,IntegerToString((int)tmpValue_7),xOffset+stochOffset+3 *(smallPanelWidth+smallPanelSpace)+5+xInBetween,yOffset+2,textColor,fontSizeText);

      if(tmpValue_7>tmpValue_8)
        {
         SetObjText(chartId,preamble+"Label_M5_rsioma_Arrow",CharToStr(233),xOffset+stochOffset+3 *(smallPanelWidth+smallPanelSpace)+25+xInBetween,yOffset+0,bullColor,fontSizeText);
        }
      else
        {
         SetObjText(chartId,preamble+"Label_M5_rsioma_Arrow",CharToStr(234),xOffset+stochOffset+3 *(smallPanelWidth+smallPanelSpace)+25+xInBetween,yOffset+3,bearColor,fontSizeText);
        }

      //

      // dds
      tmpValue_9=iCustom(symbol,PERIOD_M5,"DDS",8,13,9,0,0);
      tmpValue_10 = iCustom(symbol,PERIOD_M5,"DDS", 8, 13, 9, 0, 1);
      tmpValue_11 = iCustom(symbol,PERIOD_M5,"DDS", 8, 13, 9, 0, 2);
      tmpValue_12 = iCustom(symbol,PERIOD_M5,"DDS", 8, 13, 9, 1, 1);
      tmpValue_13 = iCustom(symbol,PERIOD_M5,"DDS", 8, 13, 9, 1, 2);
      panelName=preamble+"panel_M5_dds_"+symbol;
      //SetPanel(panelName,chartId, xOffset + stochOffset + 4 * (smallPanelWidth + smallPanelSpace) + xInBetween, yOffset, smallPanelWidth, smallPanelheight,dbBackgroundColor, dbBorderColor, dbBorderWidth);
      labelName=preamble+"label_M5_dds_"+symbol;
      if(tmpValue_10>tmpValue_12 && tmpValue_11<tmpValue_13)
        {
         SetPanel(panelName,(int)chartId,xOffset+stochOffset+4 *(smallPanelWidth+smallPanelSpace)+xInBetween,yOffset,smallPanelWidth,smallPanelheight,dbBackgroundColor,clrLime,dbBorderWidth+1);
        }
      else if(tmpValue_10<tmpValue_12 && tmpValue_11>tmpValue_13)
        {
         SetPanel(panelName,(int)chartId,xOffset+stochOffset+4 *(smallPanelWidth+smallPanelSpace)+xInBetween,yOffset,smallPanelWidth,smallPanelheight,dbBackgroundColor,clrRed,dbBorderWidth+1);
        }
      else
        {
         SetPanel(panelName,(int)chartId,xOffset+stochOffset+4 *(smallPanelWidth+smallPanelSpace)+xInBetween,yOffset,smallPanelWidth,smallPanelheight,dbBackgroundColor,dbBorderColor,dbBorderWidth);
        }
      SetText(chartId,labelName,IntegerToString((int)tmpValue_9),xOffset+stochOffset+4 *(smallPanelWidth+smallPanelSpace)+5+xInBetween,yOffset+2,textColor,fontSizeText);

      if(tmpValue_9>tmpValue_10)
        {
         SetObjText(chartId,preamble+"Label_M5_dds_Arrow",CharToStr(233),xOffset+stochOffset+4 *(smallPanelWidth+smallPanelSpace)+25+xInBetween,yOffset+0,bullColor,fontSizeText);
        }
      else
        {
         SetObjText(chartId,preamble+"Label_M5_dds_Arrow",CharToStr(234),xOffset+stochOffset+4 *(smallPanelWidth+smallPanelSpace)+25+xInBetween,yOffset+4,bearColor,fontSizeText);
        }

      // check DDS and RSIOMA opposite values 15 and 85
      panelName=preamble+"panel_RsiOma_DDS_Cross_M5";
      if(tmpValue_8>(100-RsiOma_DDS_Opposite) && tmpValue_10<RsiOma_DDS_Opposite)
        {
         SetPanel(panelName,0,xOffset+stochOffset+3 *(smallPanelWidth+smallPanelSpace)+xInBetween-2,yOffset-2,2 *(smallPanelWidth+smallPanelSpace),smallPanelheight+4,clrBlack,clrLime,2);
        }
      else if(tmpValue_8<RsiOma_DDS_Opposite && tmpValue_10>(100-RsiOma_DDS_Opposite))
        {
         SetPanel(panelName,0,xOffset+stochOffset+3 *(smallPanelWidth+smallPanelSpace)+xInBetween-2,yOffset-2,2 *(smallPanelWidth+smallPanelSpace),smallPanelheight+4,clrBlack,clrRed,2);
        }
      else
        {
         ObjectDelete(panelName);
        }

      //end dds

      //adx

      double val1 = iADX(symbol,PERIOD_M5,7, PRICE_CLOSE, MODE_MAIN, 0);
      double val2 = iADX(symbol,PERIOD_M5,7, PRICE_CLOSE, MODE_MAIN,  1);
      double dmip = iADX(symbol,PERIOD_M5,7, PRICE_CLOSE, MODE_PLUSDI, 0);
      double dmim = iADX(symbol,PERIOD_M5,7, PRICE_CLOSE, MODE_MINUSDI, 0);

      double val1_21 = iADX(symbol,PERIOD_M5,21, PRICE_CLOSE, MODE_MAIN, 0);
      double val2_21 = iADX(symbol,PERIOD_M5,21, PRICE_CLOSE, MODE_MAIN,  1);
      double dmip_21 = iADX(symbol,PERIOD_M5,21, PRICE_CLOSE, MODE_PLUSDI, 0);
      double dmim_21 = iADX(symbol,PERIOD_M5,21, PRICE_CLOSE, MODE_MINUSDI, 0);

      double val1_42 = iADX(symbol,PERIOD_M5,42, PRICE_CLOSE, MODE_MAIN, 0);
      double val2_42 = iADX(symbol,PERIOD_M5,42, PRICE_CLOSE, MODE_MAIN,  1);
      double dmip_42 = iADX(symbol,PERIOD_M5,42, PRICE_CLOSE, MODE_PLUSDI, 0);
      double dmim_42 = iADX(symbol,PERIOD_M5,42, PRICE_CLOSE, MODE_MINUSDI, 0);

      double val1_89 = iADX(symbol,PERIOD_M5,89, PRICE_CLOSE, MODE_MAIN, 0);
      double val2_89 = iADX(symbol,PERIOD_M5,89, PRICE_CLOSE, MODE_MAIN,  1);
      double dmip_89 = iADX(symbol,PERIOD_M5,89, PRICE_CLOSE, MODE_PLUSDI, 0);
      double dmim_89 = iADX(symbol,PERIOD_M5,89, PRICE_CLOSE, MODE_MINUSDI, 0);

      double val1_144 = iADX(symbol,PERIOD_M5,144, PRICE_CLOSE, MODE_MAIN, 0);
      double val2_144 = iADX(symbol,PERIOD_M5,144, PRICE_CLOSE, MODE_MAIN,  1);
      double dmip_144 = iADX(symbol,PERIOD_M5,144, PRICE_CLOSE, MODE_PLUSDI, 0);
      double dmim_144 = iADX(symbol,PERIOD_M5,144, PRICE_CLOSE, MODE_MINUSDI, 0);

      panelName=preamble+"panel_M5_ADX_"+symbol;
      SetPanel(panelName,(int)chartId,xOffset+stochOffset+5 *(smallPanelWidth+smallPanelSpace)+xInBetween,yOffset,smallPanelWidth,smallPanelheight,dbBackgroundColor,dbBorderColor,dbBorderWidth);
      labelName=preamble+"label_M5_ADX_"+symbol;
      // SetText(chartId, labelName,IntegerToString((int)val1),xOffset + stochOffset + 5 * (smallPanelWidth + smallPanelSpace) + 5, yOffset + 2, textColor, fontSizeText);

      if((val1>val2) && (dmip>dmim) && (val1_21>val2_21) && (dmip_21>dmim_21) && (val1_42>val2_42) && (dmip_42>dmim_42) && (val1_89>val2_89) && (dmip_89>dmim_89) && (val1_144>val2_144) && (dmip_144>dmim_144))
        {
         SetObjText(chartId,preamble+"Label_M5_ADX_Arrow1",CharToStr(233),xOffset+stochOffset+5 *(smallPanelWidth+smallPanelSpace)+25+xInBetween,yOffset+0,bullColor,fontSizeText);
        }
      else if((val1>val2) && (dmip<dmim) && (val1_21>val2_21) && (dmip_21<dmim_21) && (val1_42>val2_42) && (dmip_42<dmim_42) && (val1_89>val2_89) && (dmip_89<dmim_89) && (val1_144>val2_144) && (dmip_144<dmim_144))
        {
         SetObjText(chartId,preamble+"Label_M5_ADX_Arrow1",CharToStr(234),xOffset+stochOffset+5 *(smallPanelWidth+smallPanelSpace)+25+xInBetween,yOffset+4,bearColor,fontSizeText);
        }
      else
        {
         SetObjText(chartId,preamble+"Label_M5_ADX_Arrow1",CharToStr(108),xOffset+stochOffset+5 *(smallPanelWidth+smallPanelSpace)+25+xInBetween,yOffset+4,flatColor,fontSizeText);
        }

      //edn adx

     }

   if(showM15)
     {
      // write TF
      yOffset=yOffset+smallPanelheight+smallPanelSpace;
      SetText(chartId,preamble+"labelText_M15_1","M15",xAnchor+smallPanelSpace,yOffset+textOffsetY,textColor,fontSizeText);

      Stoch1_1 = iStochastic(symbol, PERIOD_M15,kPeriod_1,dPeriod_1, Slowing_1, maMethod_1, priceField_1,MODE_MAIN,0);
      Stoch1_2 = iStochastic(symbol, PERIOD_M15,kPeriod_1,dPeriod_1, Slowing_1, maMethod_1, priceField_1,MODE_MAIN,1);

      panelName=preamble+"panel_M15_1_"+symbol;
      SetPanel(panelName,(int)chartId,xOffset+stochOffset,yOffset,smallPanelWidth,smallPanelheight,dbBackgroundColor,dbBorderColor,dbBorderWidth);

      labelName=preamble+"label_M15_1_"+symbol;
      SetText(chartId,labelName,IntegerToString((int) Stoch1_1),xOffset+stochOffset+5,yOffset+2,textColor,fontSizeText);

      if(Stoch1_1>Stoch1_2)
        {
         SetObjText(chartId,preamble+"Label_M15_st1_Arrow",CharToStr(233),xOffset+stochOffset+25,yOffset+0,bullColor,fontSizeText);
        }
      else
        {
         SetObjText(chartId,preamble+"Label_M15_st1_Arrow",CharToStr(234),xOffset+stochOffset+25,yOffset+3,bearColor,fontSizeText);
        }

      Stoch2_1 = iStochastic(symbol, PERIOD_M15,kPeriod_2,dPeriod_2, Slowing_2, maMethod_2, priceField_2,MODE_MAIN,0);
      Stoch2_2 = iStochastic(symbol, PERIOD_M15,kPeriod_2,dPeriod_2, Slowing_2, maMethod_2, priceField_2,MODE_MAIN,1);
      panelName= preamble+"panel_M15_2_"+symbol;
      SetPanel(panelName,(int)chartId,xOffset+stochOffset+smallPanelWidth+smallPanelSpace,yOffset,smallPanelWidth,smallPanelheight,dbBackgroundColor,dbBorderColor,dbBorderWidth);

      labelName=preamble+"label_M15_2_"+symbol;
      SetText(chartId,labelName,IntegerToString((int) Stoch2_1),xOffset+stochOffset+smallPanelWidth+smallPanelSpace+5,yOffset+2,textColor,fontSizeText);

      if(Stoch2_1>Stoch2_2)
        {
         SetObjText(chartId,preamble+"Label_M15_st2_Arrow",CharToStr(233),xOffset+stochOffset+smallPanelWidth+smallPanelSpace+25,yOffset+0,bullColor,fontSizeText);
        }
      else
        {
         SetObjText(chartId,preamble+"Label_M15_st2_Arrow",CharToStr(234),xOffset+stochOffset+smallPanelWidth+smallPanelSpace+25,yOffset+3,bearColor,fontSizeText);
        }

      // check for cross
      Stoch1_1 = iStochastic(symbol, PERIOD_M15,kPeriod_1,dPeriod_1, Slowing_1, maMethod_1, priceField_1,MODE_MAIN,1);
      Stoch1_2 = iStochastic(symbol, PERIOD_M15,kPeriod_1,dPeriod_1, Slowing_1, maMethod_1, priceField_1,MODE_MAIN,2);
      Stoch1_3 = iStochastic(symbol, PERIOD_M15,kPeriod_1,dPeriod_1, Slowing_1, maMethod_1, priceField_1,MODE_MAIN,3);
      Stoch1_4 = iStochastic(symbol, PERIOD_M15,kPeriod_1,dPeriod_1, Slowing_1, maMethod_1, priceField_1,MODE_MAIN,4);

      Stoch2_1 = iStochastic(symbol, PERIOD_M15,kPeriod_2,dPeriod_2, Slowing_2, maMethod_2, priceField_2,MODE_MAIN,1);
      Stoch2_2 = iStochastic(symbol, PERIOD_M15,kPeriod_2,dPeriod_2, Slowing_2, maMethod_2, priceField_2,MODE_MAIN,2);
      Stoch2_3 = iStochastic(symbol, PERIOD_M15,kPeriod_2,dPeriod_2, Slowing_2, maMethod_2, priceField_2,MODE_MAIN,3);
      Stoch2_4 = iStochastic(symbol, PERIOD_M15,kPeriod_2,dPeriod_2, Slowing_2, maMethod_2, priceField_2,MODE_MAIN,4);
      Stoch2_5 = iStochastic(symbol, PERIOD_M15,kPeriod_2,dPeriod_2, Slowing_2, maMethod_2, priceField_2,MODE_MAIN,5);
      Stoch2_6 = iStochastic(symbol, PERIOD_M15,kPeriod_2,dPeriod_2, Slowing_2, maMethod_2, priceField_2,MODE_MAIN,6);

      Stoch3_1 = iStochastic(symbol, PERIOD_M15,kPeriod_3,dPeriod_3, Slowing_3, maMethod_3, priceField_3,MODE_MAIN,1);
      Stoch3_2 = iStochastic(symbol, PERIOD_M15,kPeriod_3,dPeriod_3, Slowing_3, maMethod_3, priceField_3,MODE_MAIN,2);

      panelName=preamble+"panel_8_21_Cross_M15";


      if(Stoch2_1>50 && //vid <50
         Stoch2_1<80    &&                                  //vid <80
         Stoch2_1<Stoch1_1 &&                               //vid0<gr0
         Stoch2_2>Stoch1_2 &&                               //vid0>gr0
         (Stoch1_2<50 ||  Stoch1_3<50 || Stoch1_4<50) &&    //gr0<50
         Stoch3_1>50                                        //
         )
        {
         //up cross
         SetPanel(panelName,0,xOffset+stochOffset-2,yOffset-2,2 *(smallPanelWidth+smallPanelSpace),smallPanelheight+4,clrBlack,clrLime,3);
         if(AlertOnM15 && MTF_NewBar0(PERIOD_M15))
           {
            Alert(TimeToStr(TimeCurrent(),TIME_DATE|TIME_MINUTES)+" "+symbol+" "+" M15 "+"50 UP");
            if(SoundOn)
               PlaySound("alert.wav");
           }//
        }
      else if(Stoch2_1<50 && //vid <50
         Stoch2_1>20 &&                                  // vid >20
         Stoch2_1>Stoch1_1 &&                            //vid0>gr0
         Stoch2_1<Stoch1_2 &&                            //vid0<gr0
         (Stoch1_2>50 || Stoch1_3>50 || Stoch1_4>50) && 
         Stoch3_1<50
         )
           {
            //down cross
            SetPanel(panelName,0,xOffset+stochOffset-2,yOffset-2,2 *(smallPanelWidth+smallPanelSpace),smallPanelheight+4,clrBlack,clrSalmon,3);
            if(AlertOnM15 && MTF_NewBar0(PERIOD_M15))
              {
               Alert(TimeToStr(TimeCurrent(),TIME_DATE|TIME_MINUTES)+" "+symbol+" "+" M15 "+" 50 DN");
               if(SoundOn)
                  PlaySound("alert.wav");
              }
            //Alert(TimeToStr(TimeCurrent(),TIME_DATE|TIME_MINUTES)+" "+symbol+" "+IntegerToString((int)PERIOD_M15)+" 50 DN");
            
           }
         else if(Stoch2_1>stochLowerlevel && 
            Stoch2_1<stochUpperlevel && // 80 > vid > 20
            Stoch2_1>Stoch2_2 && 
            Stoch2_2>Stoch2_3 && 
            Stoch2_3>Stoch2_4 && 
            Stoch2_4>Stoch2_5 && 
            Stoch2_5>Stoch2_6 && // vid kyla
            Stoch1_2<Stoch2_2 && 
            Stoch1_1>Stoch2_1)
              {
               //up cross
               SetPanel(panelName,0,xOffset+stochOffset-2,yOffset-2,2 *(smallPanelWidth+smallPanelSpace),smallPanelheight+4,clrBlack,clrDarkGreen,3);
               if(AlertXCrossM15 && MTF_NewBar1(PERIOD_M15))
                 {
                  Alert(TimeToStr(TimeCurrent(),TIME_DATE|TIME_MINUTES)+" "+symbol+" "+"M15 "+" X Cross UP");
                  if(SoundOn)
                     PlaySound("alert.wav");
                 }//
              }

            else if(Stoch2_1>stochLowerlevel && Stoch2_1<stochUpperlevel && // 80 > vid > 20
               Stoch2_1<Stoch2_2 && 
               Stoch2_2<Stoch2_3 && 
               Stoch2_3<Stoch2_4 && 
               Stoch2_4<Stoch2_5 && 
               Stoch2_5<Stoch2_6 && // vid krenta
               Stoch1_2>Stoch2_2 && 
               Stoch1_1<Stoch2_1)
                 {
                  //down cross
                  SetPanel(panelName,0,xOffset+stochOffset-2,yOffset-2,2 *(smallPanelWidth+smallPanelSpace),smallPanelheight+4,clrBlack,clrRed,3);
                  if(AlertXCrossM15 && MTF_NewBar1(PERIOD_M15))
                    {
                     Alert(TimeToStr(TimeCurrent(),TIME_DATE|TIME_MINUTES)+" "+symbol+" "+" M15 "+" X Cross DN");
                     if(SoundOn)
                        PlaySound("alert.wav");
                    }//
                 }
               else     ObjectDelete(panelName);

      Stoch3_1 = iStochastic(symbol, PERIOD_M15,kPeriod_3,dPeriod_3, Slowing_3, maMethod_3, priceField_3,MODE_MAIN,0);
      Stoch3_2 = iStochastic(symbol, PERIOD_M15,kPeriod_3,dPeriod_3, Slowing_3, maMethod_3, priceField_3,MODE_MAIN,1);
      panelName= preamble+"panel_M15_3_"+symbol;
      SetPanel(panelName,(int)chartId,xOffset+stochOffset+2 *(smallPanelWidth+smallPanelSpace),yOffset,smallPanelWidth,smallPanelheight,dbBackgroundColor,dbBorderColor,dbBorderWidth);
      labelName=preamble+"label_M15_3_"+symbol;
      SetText(chartId,labelName,IntegerToString((int) Stoch3_1),xOffset+stochOffset+2 *(smallPanelWidth+smallPanelSpace)+5,yOffset+2,textColor,fontSizeText);

      if(Stoch3_1>Stoch3_2)
        {
         SetObjText(chartId,preamble+"Label_M15_st3_Arrow",CharToStr(233),xOffset+stochOffset+2 *(smallPanelWidth+smallPanelSpace)+25,yOffset+0,bullColor,fontSizeText);
        }
      else
        {
         SetObjText(chartId,preamble+"Label_M15_st3_Arrow",CharToStr(234),xOffset+stochOffset+2 *(smallPanelWidth+smallPanelSpace)+25,yOffset+3,bearColor,fontSizeText);
        }

      labelName=labelName=preamble+"label_M15_Circle_"+symbol;
      if(Stoch1_1>80 && Stoch2_1>80 && Stoch3_1>80)
        {
         SetObjText(chartId,labelName,CharToStr(110),xOffset+stochOffset+3 *(smallPanelWidth+smallPanelSpace)+5,yOffset+3,bearColor,fontSizeText);
        }
      else if(Stoch1_1<20 && Stoch2_1<20 && Stoch3_1<20)
        {
         SetObjText(chartId,labelName,CharToStr(110),xOffset+stochOffset+3 *(smallPanelWidth+smallPanelSpace)+5,yOffset+3,bullColor,fontSizeText);
        }
      else
        {
         SetObjText(chartId,labelName,CharToStr(20),xOffset+stochOffset+3 *(smallPanelWidth+smallPanelSpace)+5,yOffset+3,dbBackgroundColor,fontSizeText);
        }

      //rsioma
      tmpValue_7 = iCustom(symbol,PERIOD_M15,"RSIOMA Light", 14, 1, 0, 21, 1, 0, 0);
      tmpValue_8 = iCustom(symbol,PERIOD_M15,"RSIOMA Light", 14, 1, 0, 21, 1, 0, 1);
      panelName=preamble+"panel_M1_15_"+symbol;
      SetPanel(panelName,(int)chartId,xOffset+stochOffset+3 *(smallPanelWidth+smallPanelSpace)+xInBetween,yOffset,smallPanelWidth,smallPanelheight,dbBackgroundColor,dbBorderColor,dbBorderWidth);
      labelName=preamble+"label_M1_15_"+symbol;
      SetText(chartId,labelName,IntegerToString((int)tmpValue_7),xOffset+stochOffset+3 *(smallPanelWidth+smallPanelSpace)+5+xInBetween,yOffset+2,textColor,fontSizeText);

      if(tmpValue_7>tmpValue_8)
        {
         SetObjText(chartId,preamble+"Label_M15_rsioma_Arrow",CharToStr(233),xOffset+stochOffset+3 *(smallPanelWidth+smallPanelSpace)+25+xInBetween,yOffset+0,bullColor,fontSizeText);
        }
      else
        {
         SetObjText(chartId,preamble+"Label_M15_rsioma_Arrow",CharToStr(234),xOffset+stochOffset+3 *(smallPanelWidth+smallPanelSpace)+25+xInBetween,yOffset+3,bearColor,fontSizeText);
        }

      //

      // dds
      tmpValue_9=iCustom(symbol,PERIOD_M15,"DDS",8,13,9,0,0);
      tmpValue_10 = iCustom(symbol,PERIOD_M15,"DDS", 8, 13, 9, 0, 1);
      tmpValue_11 = iCustom(symbol,PERIOD_M15,"DDS", 8, 13, 9, 0, 2);
      tmpValue_12 = iCustom(symbol,PERIOD_M15,"DDS", 8, 13, 9, 1, 1);
      tmpValue_13 = iCustom(symbol,PERIOD_M15,"DDS", 8, 13, 9, 1, 2);
      panelName=preamble+"panel_M15_dds_"+symbol;
      //SetPanel(panelName,chartId, xOffset + stochOffset + 4 * (smallPanelWidth + smallPanelSpace) + xInBetween, yOffset, smallPanelWidth, smallPanelheight,dbBackgroundColor, dbBorderColor, dbBorderWidth);
      labelName=preamble+"label_M15_dds_"+symbol;
      if(tmpValue_10>tmpValue_12 && tmpValue_11<tmpValue_13)
        {
         SetPanel(panelName,(int)chartId,xOffset+stochOffset+4 *(smallPanelWidth+smallPanelSpace)+xInBetween,yOffset,smallPanelWidth,smallPanelheight,dbBackgroundColor,clrLime,dbBorderWidth+1);
        }
      else if(tmpValue_10<tmpValue_12 && tmpValue_11>tmpValue_13)
        {
         SetPanel(panelName,(int)chartId,xOffset+stochOffset+4 *(smallPanelWidth+smallPanelSpace)+xInBetween,yOffset,smallPanelWidth,smallPanelheight,dbBackgroundColor,clrRed,dbBorderWidth+1);
        }
      else
        {
         SetPanel(panelName,(int)chartId,xOffset+stochOffset+4 *(smallPanelWidth+smallPanelSpace)+xInBetween,yOffset,smallPanelWidth,smallPanelheight,dbBackgroundColor,dbBorderColor,dbBorderWidth);
        }
      SetText(chartId,labelName,IntegerToString((int)tmpValue_9),xOffset+stochOffset+4 *(smallPanelWidth+smallPanelSpace)+5+xInBetween,yOffset+2,textColor,fontSizeText);

      if(tmpValue_9>tmpValue_10)
        {
         SetObjText(chartId,preamble+"Label_M15_dds_Arrow",CharToStr(233),xOffset+stochOffset+4 *(smallPanelWidth+smallPanelSpace)+25+xInBetween,yOffset+0,bullColor,fontSizeText);
        }
      else
        {
         SetObjText(chartId,preamble+"Label_M15_dds_Arrow",CharToStr(234),xOffset+stochOffset+4 *(smallPanelWidth+smallPanelSpace)+25+xInBetween,yOffset+4,bearColor,fontSizeText);
        }

      //end dds

      // check DDS and RSIOMA opposite values 15 and 85
      panelName=preamble+"panel_RsiOma_DDS_Cross_M15";
      if(tmpValue_8>(100-RsiOma_DDS_Opposite) && tmpValue_10<RsiOma_DDS_Opposite)
        {
         SetPanel(panelName,0,xOffset+stochOffset+3 *(smallPanelWidth+smallPanelSpace)+xInBetween-2,yOffset-2,2 *(smallPanelWidth+smallPanelSpace),smallPanelheight+4,clrBlack,clrLime,2);
        }
      else if(tmpValue_8<RsiOma_DDS_Opposite && tmpValue_10>(100-RsiOma_DDS_Opposite))
        {
         SetPanel(panelName,0,xOffset+stochOffset+3 *(smallPanelWidth+smallPanelSpace)+xInBetween-2,yOffset-2,2 *(smallPanelWidth+smallPanelSpace),smallPanelheight+4,clrBlack,clrRed,2);
        }
      else
        {
         ObjectDelete(panelName);
        }

      //adx

      double val1 = iADX(symbol,PERIOD_M15,7, PRICE_CLOSE, MODE_MAIN, 0);
      double val2 = iADX(symbol,PERIOD_M15,7, PRICE_CLOSE, MODE_MAIN,  1);
      double dmip = iADX(symbol,PERIOD_M15,7, PRICE_CLOSE, MODE_PLUSDI, 0);
      double dmim = iADX(symbol,PERIOD_M15,7, PRICE_CLOSE, MODE_MINUSDI, 0);

      double val1_21 = iADX(symbol,PERIOD_M15,21, PRICE_CLOSE, MODE_MAIN, 0);
      double val2_21 = iADX(symbol,PERIOD_M15,21, PRICE_CLOSE, MODE_MAIN,  1);
      double dmip_21 = iADX(symbol,PERIOD_M15,21, PRICE_CLOSE, MODE_PLUSDI, 0);
      double dmim_21 = iADX(symbol,PERIOD_M15,21, PRICE_CLOSE, MODE_MINUSDI, 0);

      double val1_42 = iADX(symbol,PERIOD_M15,42, PRICE_CLOSE, MODE_MAIN, 0);
      double val2_42 = iADX(symbol,PERIOD_M15,42, PRICE_CLOSE, MODE_MAIN,  1);
      double dmip_42 = iADX(symbol,PERIOD_M15,42, PRICE_CLOSE, MODE_PLUSDI, 0);
      double dmim_42 = iADX(symbol,PERIOD_M15,42, PRICE_CLOSE, MODE_MINUSDI, 0);

      double val1_89 = iADX(symbol,PERIOD_M15,89, PRICE_CLOSE, MODE_MAIN, 0);
      double val2_89 = iADX(symbol,PERIOD_M15,89, PRICE_CLOSE, MODE_MAIN,  1);
      double dmip_89 = iADX(symbol,PERIOD_M15,89, PRICE_CLOSE, MODE_PLUSDI, 0);
      double dmim_89 = iADX(symbol,PERIOD_M15,89, PRICE_CLOSE, MODE_MINUSDI, 0);

      double val1_144 = iADX(symbol,PERIOD_M15,144, PRICE_CLOSE, MODE_MAIN, 0);
      double val2_144 = iADX(symbol,PERIOD_M15,144, PRICE_CLOSE, MODE_MAIN,  1);
      double dmip_144 = iADX(symbol,PERIOD_M15,144, PRICE_CLOSE, MODE_PLUSDI, 0);
      double dmim_144 = iADX(symbol,PERIOD_M15,144, PRICE_CLOSE, MODE_MINUSDI, 0);

      panelName=preamble+"panel_M15_ADX_"+symbol;
      SetPanel(panelName,(int)chartId,xOffset+stochOffset+5 *(smallPanelWidth+smallPanelSpace)+xInBetween,yOffset,smallPanelWidth,smallPanelheight,dbBackgroundColor,dbBorderColor,dbBorderWidth);
      labelName=preamble+"label_M15_ADX_"+symbol;
      // SetText(chartId, labelName,IntegerToString((int)val1),xOffset + stochOffset + 5 * (smallPanelWidth + smallPanelSpace) + 5, yOffset + 2, textColor, fontSizeText);

      if((val1>val2) && (dmip>dmim) && (val1_21>val2_21) && (dmip_21>dmim_21) && (val1_42>val2_42) && (dmip_42>dmim_42) && (val1_89>val2_89) && (dmip_89>dmim_89) && (val1_144>val2_144) && (dmip_144>dmim_144))
        {
         SetObjText(chartId,preamble+"Label_M15_ADX_Arrow1",CharToStr(233),xOffset+stochOffset+5 *(smallPanelWidth+smallPanelSpace)+25+xInBetween,yOffset+0,bullColor,fontSizeText);
        }
      else if((val1>val2) && (dmip<dmim) && (val1_21>val2_21) && (dmip_21<dmim_21) && (val1_42>val2_42) && (dmip_42<dmim_42) && (val1_89>val2_89) && (dmip_89<dmim_89) && (val1_144>val2_144) && (dmip_144<dmim_144))
        {
         SetObjText(chartId,preamble+"Label_M15_ADX_Arrow1",CharToStr(234),xOffset+stochOffset+5 *(smallPanelWidth+smallPanelSpace)+25+xInBetween,yOffset+4,bearColor,fontSizeText);
        }
      else
        {
         SetObjText(chartId,preamble+"Label_M15_ADX_Arrow1",CharToStr(108),xOffset+stochOffset+5 *(smallPanelWidth+smallPanelSpace)+25+xInBetween,yOffset+4,flatColor,fontSizeText);
        }
      //edn adx

      //yOffset = yOffset + smallPanelheight + squareSpace;
     }

   if(showM30)
     {
      // write TF
      yOffset=yOffset+smallPanelheight+smallPanelSpace;
      SetText(chartId,preamble+"labelText_M30_1","M30",xAnchor+smallPanelSpace,yOffset+textOffsetY,textColor,fontSizeText);

      Stoch1_1 = iStochastic(symbol, PERIOD_M30,kPeriod_1,dPeriod_1, Slowing_1, maMethod_1, priceField_1,MODE_MAIN,0);
      Stoch1_2 = iStochastic(symbol, PERIOD_M30,kPeriod_1,dPeriod_1, Slowing_1, maMethod_1, priceField_1,MODE_MAIN,1);

      panelName=preamble+"panel_M30_1_"+symbol;
      SetPanel(panelName,(int)chartId,xOffset+stochOffset,yOffset,smallPanelWidth,smallPanelheight,dbBackgroundColor,dbBorderColor,dbBorderWidth);

      labelName=preamble+"label_M30_1_"+symbol;
      SetText(chartId,labelName,IntegerToString((int) Stoch1_1),xOffset+stochOffset+5,yOffset+2,textColor,fontSizeText);

      if(Stoch1_1>Stoch1_2)
        {
         SetObjText(chartId,preamble+"Label_M30_st1_Arrow",CharToStr(233),xOffset+stochOffset+25,yOffset+0,bullColor,fontSizeText);
        }
      else
        {
         SetObjText(chartId,preamble+"Label_M30_st1_Arrow",CharToStr(234),xOffset+stochOffset+25,yOffset+3,bearColor,fontSizeText);
        }

      Stoch2_1 = iStochastic(symbol, PERIOD_M30,kPeriod_2,dPeriod_2, Slowing_2, maMethod_2, priceField_2,MODE_MAIN,0);
      Stoch2_2 = iStochastic(symbol, PERIOD_M30,kPeriod_2,dPeriod_2, Slowing_2, maMethod_2, priceField_2,MODE_MAIN,1);
      panelName= preamble+"panel_M30_2_"+symbol;
      SetPanel(panelName,(int)chartId,xOffset+stochOffset+smallPanelWidth+smallPanelSpace,yOffset,smallPanelWidth,smallPanelheight,dbBackgroundColor,dbBorderColor,dbBorderWidth);

      labelName=preamble+"label_M30_2_"+symbol;
      SetText(chartId,labelName,IntegerToString((int) Stoch2_1),xOffset+stochOffset+smallPanelWidth+smallPanelSpace+5,yOffset+2,textColor,fontSizeText);

      if(Stoch2_1>Stoch2_2)
        {
         SetObjText(chartId,preamble+"Label_M30_st2_Arrow",CharToStr(233),xOffset+stochOffset+smallPanelWidth+smallPanelSpace+25,yOffset+0,bullColor,fontSizeText);
        }
      else
        {
         SetObjText(chartId,preamble+"Label_M30_st2_Arrow",CharToStr(234),xOffset+stochOffset+smallPanelWidth+smallPanelSpace+25,yOffset+3,bearColor,fontSizeText);
        }
      // check for cross
      Stoch1_1 = iStochastic(symbol, PERIOD_M30,kPeriod_1,dPeriod_1, Slowing_1, maMethod_1, priceField_1,MODE_MAIN,1);
      Stoch1_2 = iStochastic(symbol, PERIOD_M30,kPeriod_1,dPeriod_1, Slowing_1, maMethod_1, priceField_1,MODE_MAIN,2);
      Stoch1_3 = iStochastic(symbol, PERIOD_M30,kPeriod_1,dPeriod_1, Slowing_1, maMethod_1, priceField_1,MODE_MAIN,3);
      Stoch1_4 = iStochastic(symbol, PERIOD_M30,kPeriod_1,dPeriod_1, Slowing_1, maMethod_1, priceField_1,MODE_MAIN,4);

      Stoch2_1 = iStochastic(symbol, PERIOD_M30,kPeriod_2,dPeriod_2, Slowing_2, maMethod_2, priceField_2,MODE_MAIN,1);
      Stoch2_2 = iStochastic(symbol, PERIOD_M30,kPeriod_2,dPeriod_2, Slowing_2, maMethod_2, priceField_2,MODE_MAIN,2);
      Stoch2_3 = iStochastic(symbol, PERIOD_M30,kPeriod_2,dPeriod_2, Slowing_2, maMethod_2, priceField_2,MODE_MAIN,3);
      Stoch2_4 = iStochastic(symbol, PERIOD_M30,kPeriod_2,dPeriod_2, Slowing_2, maMethod_2, priceField_2,MODE_MAIN,4);
      Stoch2_5 = iStochastic(symbol, PERIOD_M30,kPeriod_2,dPeriod_2, Slowing_2, maMethod_2, priceField_2,MODE_MAIN,5);
      Stoch2_6 = iStochastic(symbol, PERIOD_M30,kPeriod_2,dPeriod_2, Slowing_2, maMethod_2, priceField_2,MODE_MAIN,6);

      Stoch3_1 = iStochastic(symbol, PERIOD_M30,kPeriod_3,dPeriod_3, Slowing_3, maMethod_3, priceField_3,MODE_MAIN,1);
      Stoch3_2 = iStochastic(symbol, PERIOD_M30,kPeriod_3,dPeriod_3, Slowing_3, maMethod_3, priceField_3,MODE_MAIN,2);

      panelName=preamble+"panel_8_21_Cross_M30";
      if(Stoch2_1>50 &&                                     //vid <50
         Stoch2_1<80    &&                                  //vid <80
         Stoch2_1<Stoch1_1 &&                               //vid0<gr0
         Stoch2_2>Stoch1_2 &&                               //vid0>gr0
         (Stoch1_2<50 ||  Stoch1_3<50 || Stoch1_4<50) &&    //gr0<50
         Stoch3_1>50                                        //
         )
        {
         //up cross
         SetPanel(panelName,0,xOffset+stochOffset-2,yOffset-2,2 *(smallPanelWidth+smallPanelSpace),smallPanelheight+4,clrBlack,clrLime,3);
         //Alert(TimeToStr(TimeCurrent(),TIME_DATE|TIME_MINUTES)+" "+symbol+" "+IntegerToString((int)PERIOD_M30)+" 50 UP");
          if(AlertOnM30 && MTF_NewBar0(PERIOD_M30))
           {
            Alert(TimeToStr(TimeCurrent(),TIME_DATE|TIME_MINUTES)+" "+symbol+" "+" M30 "+" 50 UP");
            if(SoundOn)
               PlaySound("alert.wav");
           }
        
        }
      else if(Stoch2_1<50 && //vid <50
         Stoch2_1>20 &&                                  // vid >20
         Stoch2_1>Stoch1_1 &&                            //vid0>gr0
         Stoch2_1<Stoch1_2 &&                            //vid0<gr0
         (Stoch1_2>50 || Stoch1_3>50 || Stoch1_4>50) && 
         Stoch3_1<50
         )
           {
            //down cross
            SetPanel(panelName,0,xOffset+stochOffset-2,yOffset-2,2 *(smallPanelWidth+smallPanelSpace),smallPanelheight+4,clrBlack,clrSalmon,3);
            //Alert(TimeToStr(TimeCurrent(),TIME_DATE|TIME_MINUTES)+" "+symbol+" "+IntegerToString((int)PERIOD_M30)+" 50 DN");
            if(AlertOnM30 && MTF_NewBar0(PERIOD_M30))
              {
               Alert(TimeToStr(TimeCurrent(),TIME_DATE|TIME_MINUTES)+" "+symbol+" "+" M30 "+" 50 DN");
               if(SoundOn)
                  PlaySound("alert.wav");
              }
           }
         else if(Stoch2_1>stochLowerlevel && 
            Stoch2_1<stochUpperlevel && // 80 > vid > 20
            Stoch2_1>Stoch2_2 && 
            Stoch2_2>Stoch2_3 && 
            Stoch2_3>Stoch2_4 && 
            Stoch2_4>Stoch2_5 && 
            Stoch2_5>Stoch2_6 && // vid kyla
            Stoch1_2<Stoch2_2 && 
            Stoch1_1>Stoch2_1)
              {
               //up cross
               SetPanel(panelName,0,xOffset+stochOffset-2,yOffset-2,2 *(smallPanelWidth+smallPanelSpace),smallPanelheight+4,clrBlack,clrDarkGreen,3);
               //Alert(TimeToStr(TimeCurrent(),TIME_DATE|TIME_MINUTES)+" "+symbol+" "+IntegerToString((int)PERIOD_M30)+" X Cross UP");
               if(AlertXCrossM30 && MTF_NewBar1(PERIOD_M30))
                 {
                  Alert(TimeToStr(TimeCurrent(),TIME_DATE|TIME_MINUTES)+" "+symbol+" "+" M30 "+" X Cross UP");
                  if(SoundOn)
                     PlaySound("alert.wav");
                 }
              }

            else if(Stoch2_1>stochLowerlevel && Stoch2_1<stochUpperlevel && // 80 > vid > 20
               Stoch2_1<Stoch2_2 && 
               Stoch2_2<Stoch2_3 && 
               Stoch2_3<Stoch2_4 && 
               Stoch2_4<Stoch2_5 && 
               Stoch2_5<Stoch2_6 && // vid krenta
               Stoch1_2>Stoch2_2 && 
               Stoch1_1<Stoch2_1)
                 {
                  //down cross
                  SetPanel(panelName,0,xOffset+stochOffset-2,yOffset-2,2 *(smallPanelWidth+smallPanelSpace),smallPanelheight+4,clrBlack,clrRed,3);
                  //Alert(TimeToStr(TimeCurrent(),TIME_DATE|TIME_MINUTES)+" "+symbol+" "+IntegerToString((int)PERIOD_M30)+" X Cross DN");
                  if(AlertXCrossM30 && MTF_NewBar1(PERIOD_M30))
                    {
                     Alert(TimeToStr(TimeCurrent(),TIME_DATE|TIME_MINUTES)+" "+symbol+" "+" M30 "+" X Cross DN");
                     if(SoundOn)
                        PlaySound("alert.wav");
                    }
                 }
               else     ObjectDelete(panelName);
      Stoch3_1 = iStochastic(symbol, PERIOD_M30,kPeriod_3,dPeriod_3, Slowing_3, maMethod_3, priceField_3,MODE_MAIN,0);
      Stoch3_2 = iStochastic(symbol, PERIOD_M30,kPeriod_3,dPeriod_3, Slowing_3, maMethod_3, priceField_3,MODE_MAIN,1);
      panelName= preamble+"panel_M30_3_"+symbol;
      SetPanel(panelName,(int)chartId,xOffset+stochOffset+2 *(smallPanelWidth+smallPanelSpace),yOffset,smallPanelWidth,smallPanelheight,dbBackgroundColor,dbBorderColor,dbBorderWidth);
      labelName=preamble+"label_M30_3_"+symbol;
      SetText(chartId,labelName,IntegerToString((int) Stoch3_1),xOffset+stochOffset+2 *(smallPanelWidth+smallPanelSpace)+5,yOffset+2,textColor,fontSizeText);

      if(Stoch3_1>Stoch3_2)
        {
         SetObjText(chartId,preamble+"Label_M30_st3_Arrow",CharToStr(233),xOffset+stochOffset+2 *(smallPanelWidth+smallPanelSpace)+25,yOffset+0,bullColor,fontSizeText);
        }
      else
        {
         SetObjText(chartId,preamble+"Label_M30_st3_Arrow",CharToStr(234),xOffset+stochOffset+2 *(smallPanelWidth+smallPanelSpace)+25,yOffset+3,bearColor,fontSizeText);
        }

      labelName=labelName=preamble+"label_M30_Circle_"+symbol;
      if(Stoch1_1>80 && Stoch2_1>80 && Stoch3_1>80)
        {
         SetObjText(chartId,labelName,CharToStr(110),xOffset+stochOffset+3 *(smallPanelWidth+smallPanelSpace)+5,yOffset+3,bearColor,fontSizeText);
        }
      else if(Stoch1_1<20 && Stoch2_1<20 && Stoch3_1<20)
        {
         SetObjText(chartId,labelName,CharToStr(110),xOffset+stochOffset+3 *(smallPanelWidth+smallPanelSpace)+5,yOffset+3,bullColor,fontSizeText);
        }
      else
        {
         SetObjText(chartId,labelName,CharToStr(20),xOffset+stochOffset+3 *(smallPanelWidth+smallPanelSpace)+5,yOffset+3,dbBackgroundColor,fontSizeText);
        }

      //rsioma
      tmpValue_7 = iCustom(symbol,PERIOD_M30,"RSIOMA Light", 14, 1, 0, 21, 1, 0, 0);
      tmpValue_8 = iCustom(symbol,PERIOD_M30,"RSIOMA Light", 14, 1, 0, 21, 1, 0, 1);
      panelName=preamble+"panel_M1_30_"+symbol;
      SetPanel(panelName,(int)chartId,xOffset+stochOffset+3 *(smallPanelWidth+smallPanelSpace)+xInBetween,yOffset,smallPanelWidth,smallPanelheight,dbBackgroundColor,dbBorderColor,dbBorderWidth);
      labelName=preamble+"label_M1_30_"+symbol;
      SetText(chartId,labelName,IntegerToString((int)tmpValue_7),xOffset+stochOffset+3 *(smallPanelWidth+smallPanelSpace)+5+xInBetween,yOffset+2,textColor,fontSizeText);

      if(tmpValue_7>tmpValue_8)
        {
         SetObjText(chartId,preamble+"Label_M30_rsioma_Arrow",CharToStr(233),xOffset+stochOffset+3 *(smallPanelWidth+smallPanelSpace)+25+xInBetween,yOffset+0,bullColor,fontSizeText);
        }
      else
        {
         SetObjText(chartId,preamble+"Label_M30_rsioma_Arrow",CharToStr(234),xOffset+stochOffset+3 *(smallPanelWidth+smallPanelSpace)+25+xInBetween,yOffset+3,bearColor,fontSizeText);
        }

      //

      // dds
      tmpValue_9=iCustom(symbol,PERIOD_M30,"DDS",8,13,9,0,0);
      tmpValue_10 = iCustom(symbol,PERIOD_M30,"DDS", 8, 13, 9, 0, 1);
      tmpValue_11 = iCustom(symbol,PERIOD_M30,"DDS", 8, 13, 9, 0, 2);
      tmpValue_12 = iCustom(symbol,PERIOD_M30,"DDS", 8, 13, 9, 1, 1);
      tmpValue_13 = iCustom(symbol,PERIOD_M30,"DDS", 8, 13, 9, 1, 2);
      panelName=preamble+"panel_M30_dds_"+symbol;
      //SetPanel(panelName,chartId, xOffset + stochOffset + 4 * (smallPanelWidth + smallPanelSpace) + xInBetween, yOffset, smallPanelWidth, smallPanelheight,dbBackgroundColor, dbBorderColor, dbBorderWidth);
      labelName=preamble+"label_M30_dds_"+symbol;
      if(tmpValue_10>tmpValue_12 && tmpValue_11<tmpValue_13)
        {
         SetPanel(panelName,(int)chartId,xOffset+stochOffset+4 *(smallPanelWidth+smallPanelSpace)+xInBetween,yOffset,smallPanelWidth,smallPanelheight,dbBackgroundColor,clrLime,dbBorderWidth+1);
        }
      else if(tmpValue_10<tmpValue_12 && tmpValue_11>tmpValue_13)
        {
         SetPanel(panelName,(int)chartId,xOffset+stochOffset+4 *(smallPanelWidth+smallPanelSpace)+xInBetween,yOffset,smallPanelWidth,smallPanelheight,dbBackgroundColor,clrRed,dbBorderWidth+1);
        }
      else
        {
         SetPanel(panelName,(int)chartId,xOffset+stochOffset+4 *(smallPanelWidth+smallPanelSpace)+xInBetween,yOffset,smallPanelWidth,smallPanelheight,dbBackgroundColor,dbBorderColor,dbBorderWidth);
        }
      SetText(chartId,labelName,IntegerToString((int)tmpValue_9),xOffset+stochOffset+4 *(smallPanelWidth+smallPanelSpace)+5+xInBetween,yOffset+2,textColor,fontSizeText);

      if(tmpValue_9>tmpValue_10)
        {
         SetObjText(chartId,preamble+"Label_M30_dds_Arrow",CharToStr(233),xOffset+stochOffset+4 *(smallPanelWidth+smallPanelSpace)+25+xInBetween,yOffset+0,bullColor,fontSizeText);
        }
      else
        {
         SetObjText(chartId,preamble+"Label_M30_dds_Arrow",CharToStr(234),xOffset+stochOffset+4 *(smallPanelWidth+smallPanelSpace)+25+xInBetween,yOffset+4,bearColor,fontSizeText);
        }

      //end dds
      // check DDS and RSIOMA opposite values 15 and 85
      panelName=preamble+"panel_RsiOma_DDS_Cross_M30";
      if(tmpValue_8>(100-RsiOma_DDS_Opposite) && tmpValue_10<RsiOma_DDS_Opposite)
        {
         SetPanel(panelName,0,xOffset+stochOffset+3 *(smallPanelWidth+smallPanelSpace)+xInBetween-2,yOffset-2,2 *(smallPanelWidth+smallPanelSpace),smallPanelheight+4,clrBlack,clrLime,2);
        }
      else if(tmpValue_8<RsiOma_DDS_Opposite && tmpValue_10>(100-RsiOma_DDS_Opposite))
        {
         SetPanel(panelName,0,xOffset+stochOffset+3 *(smallPanelWidth+smallPanelSpace)+xInBetween-2,yOffset-2,2 *(smallPanelWidth+smallPanelSpace),smallPanelheight+4,clrBlack,clrRed,2);
        }
      else
        {
         ObjectDelete(panelName);
        }

      //adx

      double val1 = iADX(symbol,PERIOD_M30,7, PRICE_CLOSE, MODE_MAIN, 0);
      double val2 = iADX(symbol,PERIOD_M30,7, PRICE_CLOSE, MODE_MAIN,  1);
      double dmip = iADX(symbol,PERIOD_M30,7, PRICE_CLOSE, MODE_PLUSDI, 0);
      double dmim = iADX(symbol,PERIOD_M30,7, PRICE_CLOSE, MODE_MINUSDI, 0);

      double val1_21 = iADX(symbol,PERIOD_M30,21, PRICE_CLOSE, MODE_MAIN, 0);
      double val2_21 = iADX(symbol,PERIOD_M30,21, PRICE_CLOSE, MODE_MAIN,  1);
      double dmip_21 = iADX(symbol,PERIOD_M30,21, PRICE_CLOSE, MODE_PLUSDI, 0);
      double dmim_21 = iADX(symbol,PERIOD_M30,21, PRICE_CLOSE, MODE_MINUSDI, 0);

      double val1_42 = iADX(symbol,PERIOD_M30,42, PRICE_CLOSE, MODE_MAIN, 0);
      double val2_42 = iADX(symbol,PERIOD_M30,42, PRICE_CLOSE, MODE_MAIN,  1);
      double dmip_42 = iADX(symbol,PERIOD_M30,42, PRICE_CLOSE, MODE_PLUSDI, 0);
      double dmim_42 = iADX(symbol,PERIOD_M30,42, PRICE_CLOSE, MODE_MINUSDI, 0);

      double val1_89 = iADX(symbol,PERIOD_M30,89, PRICE_CLOSE, MODE_MAIN, 0);
      double val2_89 = iADX(symbol,PERIOD_M30,89, PRICE_CLOSE, MODE_MAIN,  1);
      double dmip_89 = iADX(symbol,PERIOD_M30,89, PRICE_CLOSE, MODE_PLUSDI, 0);
      double dmim_89 = iADX(symbol,PERIOD_M30,89, PRICE_CLOSE, MODE_MINUSDI, 0);

      double val1_144 = iADX(symbol,PERIOD_M30,144, PRICE_CLOSE, MODE_MAIN, 0);
      double val2_144 = iADX(symbol,PERIOD_M30,144, PRICE_CLOSE, MODE_MAIN,  1);
      double dmip_144 = iADX(symbol,PERIOD_M30,144, PRICE_CLOSE, MODE_PLUSDI, 0);
      double dmim_144 = iADX(symbol,PERIOD_M30,144, PRICE_CLOSE, MODE_MINUSDI, 0);

      panelName=preamble+"panel_M30_ADX_"+symbol;
      SetPanel(panelName,(int)chartId,xOffset+stochOffset+5 *(smallPanelWidth+smallPanelSpace)+xInBetween,yOffset,smallPanelWidth,smallPanelheight,dbBackgroundColor,dbBorderColor,dbBorderWidth);
      labelName=preamble+"label_M30_ADX_"+symbol;
      // SetText(chartId, labelName,IntegerToString((int)val1),xOffset + stochOffset + 5 * (smallPanelWidth + smallPanelSpace) + 5, yOffset + 2, textColor, fontSizeText);

      if((val1>val2) && (dmip>dmim) && (val1_21>val2_21) && (dmip_21>dmim_21) && (val1_42>val2_42) && (dmip_42>dmim_42) && (val1_89>val2_89) && (dmip_89>dmim_89) && (val1_144>val2_144) && (dmip_144>dmim_144))
        {
         SetObjText(chartId,preamble+"Label_M1_ADX_Arrow1",CharToStr(233),xOffset+stochOffset+5 *(smallPanelWidth+smallPanelSpace)+25+xInBetween,yOffset+0,bullColor,fontSizeText);
        }
      else if((val1>val2) && (dmip<dmim) && (val1_21>val2_21) && (dmip_21<dmim_21) && (val1_42>val2_42) && (dmip_42<dmim_42) && (val1_89>val2_89) && (dmip_89<dmim_89) && (val1_144>val2_144) && (dmip_144<dmim_144))
        {
         SetObjText(chartId,preamble+"Label_M1_ADX_Arrow1",CharToStr(234),xOffset+stochOffset+5 *(smallPanelWidth+smallPanelSpace)+25+xInBetween,yOffset+4,bearColor,fontSizeText);
        }
      else
        {
         SetObjText(chartId,preamble+"Label_M1_ADX_Arrow1",CharToStr(108),xOffset+stochOffset+5 *(smallPanelWidth+smallPanelSpace)+25+xInBetween,yOffset+4,flatColor,fontSizeText);
        }

      //edn adx

      //yOffset = yOffset + squareSize + squareSpace;
     }

   if(showH1)
     {
      // write TF
      yOffset=yOffset+smallPanelheight+smallPanelSpace;

      SetText(chartId,preamble+"labelText_H1_1","H1",xAnchor+smallPanelSpace,yOffset+textOffsetY,textColor,fontSizeText);

      Stoch1_1 = iStochastic(symbol, PERIOD_H1,kPeriod_1,dPeriod_1, Slowing_1, maMethod_1, priceField_1,MODE_MAIN,0);
      Stoch1_2 = iStochastic(symbol, PERIOD_H1,kPeriod_1,dPeriod_1, Slowing_1, maMethod_1, priceField_1,MODE_MAIN,1);

      panelName=preamble+"panel_H1_1_"+symbol;
      SetPanel(panelName,(int)chartId,xOffset+stochOffset,yOffset,smallPanelWidth,smallPanelheight,dbBackgroundColor,dbBorderColor,dbBorderWidth);

      labelName=preamble+"label_H1_1_"+symbol;
      SetText(chartId,labelName,IntegerToString((int) Stoch1_1),xOffset+stochOffset+5,yOffset+2,textColor,fontSizeText);

      if(Stoch1_1>Stoch1_2)
        {
         SetObjText(chartId,preamble+"Label_H1_st1_Arrow",CharToStr(233),xOffset+stochOffset+25,yOffset+0,bullColor,fontSizeText);
        }
      else
        {
         SetObjText(chartId,preamble+"Label_H1_st1_Arrow",CharToStr(234),xOffset+stochOffset+25,yOffset+3,bearColor,fontSizeText);
        }

      Stoch2_1 = iStochastic(symbol, PERIOD_H1,kPeriod_2,dPeriod_2, Slowing_2, maMethod_2, priceField_2,MODE_MAIN,0);
      Stoch2_2 = iStochastic(symbol, PERIOD_H1,kPeriod_2,dPeriod_2, Slowing_2, maMethod_2, priceField_2,MODE_MAIN,1);
      panelName= preamble+"panel_H1_2_"+symbol;
      SetPanel(panelName,(int)chartId,xOffset+stochOffset+smallPanelWidth+smallPanelSpace,yOffset,smallPanelWidth,smallPanelheight,dbBackgroundColor,dbBorderColor,dbBorderWidth);

      labelName=preamble+"label_H1_2_"+symbol;
      SetText(chartId,labelName,IntegerToString((int) Stoch2_1),xOffset+stochOffset+smallPanelWidth+smallPanelSpace+5,yOffset+2,textColor,fontSizeText);

      if(Stoch2_1>Stoch2_2)
        {
         SetObjText(chartId,preamble+"Label_H1_st2_Arrow",CharToStr(233),xOffset+stochOffset+smallPanelWidth+smallPanelSpace+25,yOffset+0,bullColor,fontSizeText);
        }
      else
        {
         SetObjText(chartId,preamble+"Label_H1_st2_Arrow",CharToStr(234),xOffset+stochOffset+smallPanelWidth+smallPanelSpace+25,yOffset+3,bearColor,fontSizeText);
        }

      // check for cross
      Stoch1_1 = iStochastic(symbol, PERIOD_H1,kPeriod_1,dPeriod_1, Slowing_1, maMethod_1, priceField_1,MODE_MAIN,1);
      Stoch1_2 = iStochastic(symbol, PERIOD_H1,kPeriod_1,dPeriod_1, Slowing_1, maMethod_1, priceField_1,MODE_MAIN,2);
      Stoch1_3 = iStochastic(symbol, PERIOD_H1,kPeriod_1,dPeriod_1, Slowing_1, maMethod_1, priceField_1,MODE_MAIN,3);
      Stoch1_4 = iStochastic(symbol, PERIOD_H1,kPeriod_1,dPeriod_1, Slowing_1, maMethod_1, priceField_1,MODE_MAIN,4);

      Stoch2_1 = iStochastic(symbol, PERIOD_H1,kPeriod_2,dPeriod_2, Slowing_2, maMethod_2, priceField_2,MODE_MAIN,1);
      Stoch2_2 = iStochastic(symbol, PERIOD_H1,kPeriod_2,dPeriod_2, Slowing_2, maMethod_2, priceField_2,MODE_MAIN,2);
      Stoch2_3 = iStochastic(symbol, PERIOD_H1,kPeriod_2,dPeriod_2, Slowing_2, maMethod_2, priceField_2,MODE_MAIN,3);
      Stoch2_4 = iStochastic(symbol, PERIOD_H1,kPeriod_2,dPeriod_2, Slowing_2, maMethod_2, priceField_2,MODE_MAIN,4);
      Stoch2_5 = iStochastic(symbol, PERIOD_H1,kPeriod_2,dPeriod_2, Slowing_2, maMethod_2, priceField_2,MODE_MAIN,5);
      Stoch2_6 = iStochastic(symbol, PERIOD_H1,kPeriod_2,dPeriod_2, Slowing_2, maMethod_2, priceField_2,MODE_MAIN,6);

      Stoch3_1 = iStochastic(symbol, PERIOD_H1,kPeriod_3,dPeriod_3, Slowing_3, maMethod_3, priceField_3,MODE_MAIN,1);
      Stoch3_2 = iStochastic(symbol, PERIOD_H1,kPeriod_3,dPeriod_3, Slowing_3, maMethod_3, priceField_3,MODE_MAIN,2);

      panelName=preamble+"panel_8_21_Cross_H1";
      if(Stoch2_1>50 &&                                     //vid <50
         Stoch2_1<80    &&                                  //vid <80
         Stoch2_1<Stoch1_1 &&                               //vid0<gr0
         Stoch2_2>Stoch1_2 &&                               //vid0>gr0
         (Stoch1_2<50 ||  Stoch1_3<50 || Stoch1_4<50) &&    //gr0<50
         Stoch3_1>50                                        //
         )
        {
         //up cross
         SetPanel(panelName,0,xOffset+stochOffset-2,yOffset-2,2 *(smallPanelWidth+smallPanelSpace),smallPanelheight+4,clrBlack,clrLime,3);
         //Alert(TimeToStr(TimeCurrent(),TIME_DATE|TIME_MINUTES)+" "+symbol+" "+IntegerToString((int)PERIOD_H1)+" 50 UP");
          if(AlertOnH1 && MTF_NewBar0(PERIOD_H1))
           {
            Alert(TimeToStr(TimeCurrent(),TIME_DATE|TIME_MINUTES)+" "+symbol+" "+" H1 "+" 50 UP");
            if(SoundOn)
               PlaySound("alert.wav");
           }
        
        }
      else if(Stoch2_1<50 && //vid <50
         Stoch2_1>20 &&                                  // vid >20
         Stoch2_1>Stoch1_1 &&                            //vid0>gr0
         Stoch2_1<Stoch1_2 &&                            //vid0<gr0
         (Stoch1_2>50 || Stoch1_3>50 || Stoch1_4>50) && 
         Stoch3_1<50
         )
           {
            //down cross
            SetPanel(panelName,0,xOffset+stochOffset-2,yOffset-2,2 *(smallPanelWidth+smallPanelSpace),smallPanelheight+4,clrBlack,clrSalmon,3);
            //Alert(TimeToStr(TimeCurrent(),TIME_DATE|TIME_MINUTES)+" "+symbol+" "+IntegerToString((int)PERIOD_H1)+" 50 DN");
            if(AlertOnH1 && MTF_NewBar0(PERIOD_H1))
              {
               Alert(TimeToStr(TimeCurrent(),TIME_DATE|TIME_MINUTES)+" "+symbol+" "+" H1 "+" 50 DN");
               if(SoundOn)
                  PlaySound("alert.wav");
              }
           }
         else if(Stoch2_1>stochLowerlevel && 
            Stoch2_1<stochUpperlevel && // 80 > vid > 20
            Stoch2_1>Stoch2_2 && 
            Stoch2_2>Stoch2_3 && 
            Stoch2_3>Stoch2_4 && 
            Stoch2_4>Stoch2_5 && 
            Stoch2_5>Stoch2_6 && // vid kyla
            Stoch1_2<Stoch2_2 && 
            Stoch1_1>Stoch2_1)
              {
               //up cross
               SetPanel(panelName,0,xOffset+stochOffset-2,yOffset-2,2 *(smallPanelWidth+smallPanelSpace),smallPanelheight+4,clrBlack,clrDarkGreen,3);
               //Alert(TimeToStr(TimeCurrent(),TIME_DATE|TIME_MINUTES)+" "+symbol+" "+IntegerToString((int)PERIOD_H1)+" X Cross UP");
               if(AlertXCrossH1 && MTF_NewBar1(PERIOD_H1))
                 {
                  Alert(TimeToStr(TimeCurrent(),TIME_DATE|TIME_MINUTES)+" "+symbol+" "+" H1 "+" X Cross UP");
                  if(SoundOn)
                     PlaySound("alert.wav");
                 }
              }

            else if(Stoch2_1>stochLowerlevel && Stoch2_1<stochUpperlevel && // 80 > vid > 20
               Stoch2_1<Stoch2_2 && 
               Stoch2_2<Stoch2_3 && 
               Stoch2_3<Stoch2_4 && 
               Stoch2_4<Stoch2_5 && 
               Stoch2_5<Stoch2_6 && // vid krenta
               Stoch1_2>Stoch2_2 && 
               Stoch1_1<Stoch2_1)
                 {
                  //down cross
                  SetPanel(panelName,0,xOffset+stochOffset-2,yOffset-2,2 *(smallPanelWidth+smallPanelSpace),smallPanelheight+4,clrBlack,clrRed,3);
                  //Alert(TimeToStr(TimeCurrent(),TIME_DATE|TIME_MINUTES)+" "+symbol+" "+IntegerToString((int)PERIOD_H1)+" X Cross DN");
                  if(AlertXCrossH1 && MTF_NewBar1(PERIOD_H1))
                    {
                     Alert(TimeToStr(TimeCurrent(),TIME_DATE|TIME_MINUTES)+" "+symbol+" "+" H1 "+" X Cross DN");
                     if(SoundOn)
                        PlaySound("alert.wav");
                    }
                 }
               else     ObjectDelete(panelName);

      Stoch3_1 = iStochastic(symbol, PERIOD_H1,kPeriod_3,dPeriod_3, Slowing_3, maMethod_3, priceField_3,MODE_MAIN,0);
      Stoch3_2 = iStochastic(symbol, PERIOD_H1,kPeriod_3,dPeriod_3, Slowing_3, maMethod_3, priceField_3,MODE_MAIN,1);
      panelName= preamble+"panel_H1_3_"+symbol;
      SetPanel(panelName,(int)chartId,xOffset+stochOffset+2 *(smallPanelWidth+smallPanelSpace),yOffset,smallPanelWidth,smallPanelheight,dbBackgroundColor,dbBorderColor,dbBorderWidth);
      labelName=preamble+"label_H1_3_"+symbol;
      SetText(chartId,labelName,IntegerToString((int) Stoch3_1),xOffset+stochOffset+2 *(smallPanelWidth+smallPanelSpace)+5,yOffset+2,textColor,fontSizeText);

      if(Stoch3_1>Stoch3_2)
        {
         SetObjText(chartId,preamble+"Label_H1_st3_Arrow",CharToStr(233),xOffset+stochOffset+2 *(smallPanelWidth+smallPanelSpace)+25,yOffset+0,bullColor,fontSizeText);
        }
      else
        {
         SetObjText(chartId,preamble+"Label_H1_st3_Arrow",CharToStr(234),xOffset+stochOffset+2 *(smallPanelWidth+smallPanelSpace)+25,yOffset+3,bearColor,fontSizeText);
        }

      labelName=labelName=preamble+"label_H1_Circle_"+symbol;
      if(Stoch1_1>80 && Stoch2_1>80 && Stoch3_1>80)
        {
         SetObjText(chartId,labelName,CharToStr(110),xOffset+stochOffset+3 *(smallPanelWidth+smallPanelSpace)+5,yOffset+3,bearColor,fontSizeText);
        }
      else if(Stoch1_1<20 && Stoch2_1<20 && Stoch3_1<20)
        {
         SetObjText(chartId,labelName,CharToStr(110),xOffset+stochOffset+3 *(smallPanelWidth+smallPanelSpace)+5,yOffset+3,bullColor,fontSizeText);
        }
      else
        {
         SetObjText(chartId,labelName,CharToStr(20),xOffset+stochOffset+3 *(smallPanelWidth+smallPanelSpace)+5,yOffset+3,dbBackgroundColor,fontSizeText);
        }

      //rsioma
      tmpValue_7 = iCustom(symbol,PERIOD_H1,"RSIOMA Light", 14, 1, 0, 21, 1, 0, 0);
      tmpValue_8 = iCustom(symbol,PERIOD_H1,"RSIOMA Light", 14, 1, 0, 21, 1, 0, 1);
      panelName=preamble+"panel_M1_h1_"+symbol;
      SetPanel(panelName,(int)chartId,xOffset+stochOffset+3 *(smallPanelWidth+smallPanelSpace)+xInBetween,yOffset,smallPanelWidth,smallPanelheight,dbBackgroundColor,dbBorderColor,dbBorderWidth);
      labelName=preamble+"label_M1_h1_"+symbol;
      SetText(chartId,labelName,IntegerToString((int)tmpValue_7),xOffset+stochOffset+3 *(smallPanelWidth+smallPanelSpace)+5+xInBetween,yOffset+2,textColor,fontSizeText);

      if(tmpValue_7>tmpValue_8)
        {
         SetObjText(chartId,preamble+"Label_h1_rsioma_Arrow",CharToStr(233),xOffset+stochOffset+3 *(smallPanelWidth+smallPanelSpace)+25+xInBetween,yOffset+0,bullColor,fontSizeText);
        }
      else
        {
         SetObjText(chartId,preamble+"Label_h1_rsioma_Arrow",CharToStr(234),xOffset+stochOffset+3 *(smallPanelWidth+smallPanelSpace)+25+xInBetween,yOffset+3,bearColor,fontSizeText);
        }

      //

      // dds
      tmpValue_9=iCustom(symbol,PERIOD_H1,"DDS",8,13,9,0,0);
      tmpValue_10 = iCustom(symbol,PERIOD_H1,"DDS", 8, 13, 9, 0, 1);
      tmpValue_11 = iCustom(symbol,PERIOD_H1,"DDS", 8, 13, 9, 0, 2);
      tmpValue_12 = iCustom(symbol,PERIOD_H1,"DDS", 8, 13, 9, 1, 1);
      tmpValue_13 = iCustom(symbol,PERIOD_H1,"DDS", 8, 13, 9, 1, 2);
      panelName=preamble+"panel_H1_dds_"+symbol;
      //SetPanel(panelName,chartId, xOffset + stochOffset + 4 * (smallPanelWidth + smallPanelSpace) + xInBetween, yOffset, smallPanelWidth, smallPanelheight,dbBackgroundColor, dbBorderColor, dbBorderWidth);
      labelName=preamble+"label_H1_dds_"+symbol;
      if(tmpValue_10>tmpValue_12 && tmpValue_11<tmpValue_13)
        {
         SetPanel(panelName,(int)chartId,xOffset+stochOffset+4 *(smallPanelWidth+smallPanelSpace)+xInBetween,yOffset,smallPanelWidth,smallPanelheight,dbBackgroundColor,clrLime,dbBorderWidth+1);
        }
      else if(tmpValue_10<tmpValue_12 && tmpValue_11>tmpValue_13)
        {
         SetPanel(panelName,(int)chartId,xOffset+stochOffset+4 *(smallPanelWidth+smallPanelSpace)+xInBetween,yOffset,smallPanelWidth,smallPanelheight,dbBackgroundColor,clrRed,dbBorderWidth+1);
        }
      else
        {
         SetPanel(panelName,(int)chartId,xOffset+stochOffset+4 *(smallPanelWidth+smallPanelSpace)+xInBetween,yOffset,smallPanelWidth,smallPanelheight,dbBackgroundColor,dbBorderColor,dbBorderWidth);
        }
      SetText(chartId,labelName,IntegerToString((int)tmpValue_9),xOffset+stochOffset+4 *(smallPanelWidth+smallPanelSpace)+5+xInBetween,yOffset+2,textColor,fontSizeText);

      if(tmpValue_9>tmpValue_10)
        {
         SetObjText(chartId,preamble+"Label_h1_dds_Arrow",CharToStr(233),xOffset+stochOffset+4 *(smallPanelWidth+smallPanelSpace)+25+xInBetween,yOffset+0,bullColor,fontSizeText);
        }
      else
        {
         SetObjText(chartId,preamble+"Label_h1_dds_Arrow",CharToStr(234),xOffset+stochOffset+4 *(smallPanelWidth+smallPanelSpace)+25+xInBetween,yOffset+4,bearColor,fontSizeText);
        }

      //end dds

      // check DDS and RSIOMA opposite values 15 and 85
      panelName=preamble+"panel_RsiOma_DDS_Cross_H1";
      if(tmpValue_8>(100-RsiOma_DDS_Opposite) && tmpValue_10<RsiOma_DDS_Opposite)
        {
         SetPanel(panelName,0,xOffset+stochOffset+3 *(smallPanelWidth+smallPanelSpace)+xInBetween-2,yOffset-2,2 *(smallPanelWidth+smallPanelSpace),smallPanelheight+4,clrBlack,clrLime,2);
        }
      else if(tmpValue_8<RsiOma_DDS_Opposite && tmpValue_10>(100-RsiOma_DDS_Opposite))
        {
         SetPanel(panelName,0,xOffset+stochOffset+3 *(smallPanelWidth+smallPanelSpace)+xInBetween-2,yOffset-2,2 *(smallPanelWidth+smallPanelSpace),smallPanelheight+4,clrBlack,clrRed,2);
        }
      else
        {
         ObjectDelete(panelName);
        }

      //adx

      double val1 = iADX(symbol,PERIOD_H1,7, PRICE_CLOSE, MODE_MAIN, 0);
      double val2 = iADX(symbol,PERIOD_H1,7, PRICE_CLOSE, MODE_MAIN,  1);
      double dmip = iADX(symbol,PERIOD_H1,7, PRICE_CLOSE, MODE_PLUSDI, 0);
      double dmim = iADX(symbol,PERIOD_H1,7, PRICE_CLOSE, MODE_MINUSDI, 0);

      double val1_21 = iADX(symbol,PERIOD_H1,21, PRICE_CLOSE, MODE_MAIN, 0);
      double val2_21 = iADX(symbol,PERIOD_H1,21, PRICE_CLOSE, MODE_MAIN,  1);
      double dmip_21 = iADX(symbol,PERIOD_H1,21, PRICE_CLOSE, MODE_PLUSDI, 0);
      double dmim_21 = iADX(symbol,PERIOD_H1,21, PRICE_CLOSE, MODE_MINUSDI, 0);

      double val1_42 = iADX(symbol,PERIOD_H1,42, PRICE_CLOSE, MODE_MAIN, 0);
      double val2_42 = iADX(symbol,PERIOD_H1,42, PRICE_CLOSE, MODE_MAIN,  1);
      double dmip_42 = iADX(symbol,PERIOD_H1,42, PRICE_CLOSE, MODE_PLUSDI, 0);
      double dmim_42 = iADX(symbol,PERIOD_H1,42, PRICE_CLOSE, MODE_MINUSDI, 0);

      double val1_89 = iADX(symbol,PERIOD_H1,89, PRICE_CLOSE, MODE_MAIN, 0);
      double val2_89 = iADX(symbol,PERIOD_H1,89, PRICE_CLOSE, MODE_MAIN,  1);
      double dmip_89 = iADX(symbol,PERIOD_H1,89, PRICE_CLOSE, MODE_PLUSDI, 0);
      double dmim_89 = iADX(symbol,PERIOD_H1,89, PRICE_CLOSE, MODE_MINUSDI, 0);

      double val1_144 = iADX(symbol,PERIOD_H1,144, PRICE_CLOSE, MODE_MAIN, 0);
      double val2_144 = iADX(symbol,PERIOD_H1,144, PRICE_CLOSE, MODE_MAIN,  1);
      double dmip_144 = iADX(symbol,PERIOD_H1,144, PRICE_CLOSE, MODE_PLUSDI, 0);
      double dmim_144 = iADX(symbol,PERIOD_H1,144, PRICE_CLOSE, MODE_MINUSDI, 0);

      panelName=preamble+"panel_H1_ADX_"+symbol;
      SetPanel(panelName,(int)chartId,xOffset+stochOffset+5 *(smallPanelWidth+smallPanelSpace)+xInBetween,yOffset,smallPanelWidth,smallPanelheight,dbBackgroundColor,dbBorderColor,dbBorderWidth);
      labelName=preamble+"label_H1_ADX_"+symbol;
      // SetText(chartId, labelName,IntegerToString((int)val1),xOffset + stochOffset + 5 * (smallPanelWidth + smallPanelSpace) + 5, yOffset + 2, textColor, fontSizeText);

      if((val1>val2) && (dmip>dmim) && (val1_21>val2_21) && (dmip_21>dmim_21) && (val1_42>val2_42) && (dmip_42>dmim_42) && (val1_89>val2_89) && (dmip_89>dmim_89) && (val1_144>val2_144) && (dmip_144>dmim_144))
        {
         SetObjText(chartId,preamble+"Label_H1_ADX_Arrow1",CharToStr(233),xOffset+stochOffset+5 *(smallPanelWidth+smallPanelSpace)+25+xInBetween,yOffset+0,bullColor,fontSizeText);
        }
      else if((val1>val2) && (dmip<dmim) && (val1_21>val2_21) && (dmip_21<dmim_21) && (val1_42>val2_42) && (dmip_42<dmim_42) && (val1_89>val2_89) && (dmip_89<dmim_89) && (val1_144>val2_144) && (dmip_144<dmim_144))
        {
         SetObjText(chartId,preamble+"Label_H1_ADX_Arrow1",CharToStr(234),xOffset+stochOffset+5 *(smallPanelWidth+smallPanelSpace)+25+xInBetween,yOffset+4,bearColor,fontSizeText);
        }
      else
        {
         SetObjText(chartId,preamble+"Label_H1_ADX_Arrow1",CharToStr(108),xOffset+stochOffset+5 *(smallPanelWidth+smallPanelSpace)+25+xInBetween,yOffset+4,flatColor,fontSizeText);
        }

      //edn adx

     }

   if(showH4)
     {
      // write TF
      yOffset=yOffset+smallPanelheight+smallPanelSpace;
      SetText(chartId,preamble+"labelText_H4_1","H4",xAnchor+smallPanelSpace,yOffset+textOffsetY,textColor,fontSizeText);

      Stoch1_1=iStochastic(symbol,PERIOD_H4,kPeriod_1,dPeriod_1,Slowing_1,maMethod_1,priceField_1,MODE_MAIN,0);
      Stoch1_2=iStochastic(symbol,PERIOD_H4,kPeriod_1,dPeriod_1,Slowing_1,maMethod_1,priceField_1,MODE_MAIN,1);

      panelName=preamble+"panel_H4_1_"+symbol;
      SetPanel(panelName,(int)chartId,xOffset+stochOffset,yOffset,smallPanelWidth,smallPanelheight,dbBackgroundColor,dbBorderColor,dbBorderWidth);

      labelName=preamble+"label_H4_1_"+symbol;
      SetText(chartId,labelName,IntegerToString((int) Stoch1_1),xOffset+stochOffset+5,yOffset+2,textColor,fontSizeText);

      if(Stoch1_1>Stoch1_2)
        {
         SetObjText(chartId,preamble+"Label_H4_st1_Arrow",CharToStr(233),xOffset+stochOffset+25,yOffset+0,bullColor,fontSizeText);
        }
      else
        {
         SetObjText(chartId,preamble+"Label_H4_st1_Arrow",CharToStr(234),xOffset+stochOffset+25,yOffset+3,bearColor,fontSizeText);
        }

      Stoch2_1 = iStochastic(symbol, PERIOD_H4,kPeriod_2,dPeriod_2, Slowing_2, maMethod_2, priceField_2,MODE_MAIN,0);
      Stoch2_2 = iStochastic(symbol, PERIOD_H4,kPeriod_2,dPeriod_2, Slowing_2, maMethod_2, priceField_2,MODE_MAIN,1);
      panelName= preamble+"panel_H4_2_"+symbol;
      SetPanel(panelName,(int)chartId,xOffset+stochOffset+smallPanelWidth+smallPanelSpace,yOffset,smallPanelWidth,smallPanelheight,dbBackgroundColor,dbBorderColor,dbBorderWidth);

      labelName=preamble+"label_H4_2_"+symbol;
      SetText(chartId,labelName,IntegerToString((int) Stoch2_1),xOffset+stochOffset+smallPanelWidth+smallPanelSpace+5,yOffset+2,textColor,fontSizeText);

      if(Stoch2_1>Stoch2_2)
        {
         SetObjText(chartId,preamble+"Label_H4_st2_Arrow",CharToStr(233),xOffset+stochOffset+smallPanelWidth+smallPanelSpace+25,yOffset+0,bullColor,fontSizeText);
        }
      else
        {
         SetObjText(chartId,preamble+"Label_H4_st2_Arrow",CharToStr(234),xOffset+stochOffset+smallPanelWidth+smallPanelSpace+25,yOffset+3,bearColor,fontSizeText);
        }

      // check for cross
      Stoch1_1 = iStochastic(symbol, PERIOD_H4,kPeriod_1,dPeriod_1, Slowing_1, maMethod_1, priceField_1,MODE_MAIN,1);
      Stoch1_2 = iStochastic(symbol, PERIOD_H4,kPeriod_1,dPeriod_1, Slowing_1, maMethod_1, priceField_1,MODE_MAIN,2);
      Stoch1_3 = iStochastic(symbol, PERIOD_H4,kPeriod_1,dPeriod_1, Slowing_1, maMethod_1, priceField_1,MODE_MAIN,3);
      Stoch1_4 = iStochastic(symbol, PERIOD_H4,kPeriod_1,dPeriod_1, Slowing_1, maMethod_1, priceField_1,MODE_MAIN,4);

      Stoch2_1 = iStochastic(symbol, PERIOD_H4,kPeriod_2,dPeriod_2, Slowing_2, maMethod_2, priceField_2,MODE_MAIN,1);
      Stoch2_2 = iStochastic(symbol, PERIOD_H4,kPeriod_2,dPeriod_2, Slowing_2, maMethod_2, priceField_2,MODE_MAIN,2);
      Stoch2_3 = iStochastic(symbol, PERIOD_H4,kPeriod_2,dPeriod_2, Slowing_2, maMethod_2, priceField_2,MODE_MAIN,3);
      Stoch2_4 = iStochastic(symbol, PERIOD_H4,kPeriod_2,dPeriod_2, Slowing_2, maMethod_2, priceField_2,MODE_MAIN,4);
      Stoch2_5 = iStochastic(symbol, PERIOD_H4,kPeriod_2,dPeriod_2, Slowing_2, maMethod_2, priceField_2,MODE_MAIN,5);
      Stoch2_6 = iStochastic(symbol, PERIOD_H4,kPeriod_2,dPeriod_2, Slowing_2, maMethod_2, priceField_2,MODE_MAIN,6);

      Stoch3_1 = iStochastic(symbol, PERIOD_H4,kPeriod_3,dPeriod_3, Slowing_3, maMethod_3, priceField_3,MODE_MAIN,1);
      Stoch3_2 = iStochastic(symbol, PERIOD_H4,kPeriod_3,dPeriod_3, Slowing_3, maMethod_3, priceField_3,MODE_MAIN,2);

      panelName=preamble+"panel_8_21_Cross_H4";
      if(Stoch2_1>50 &&                                     //vid <50
         Stoch2_1<80    &&                                  //vid <80
         Stoch2_1<Stoch1_1 &&                               //vid0<gr0
         Stoch2_2>Stoch1_2 &&                               //vid0>gr0
         (Stoch1_2<50 ||  Stoch1_3<50 || Stoch1_4<50) &&    //gr0<50
         Stoch3_1>50                                        //
         )
        {
         //up cross
         SetPanel(panelName,0,xOffset+stochOffset-2,yOffset-2,2 *(smallPanelWidth+smallPanelSpace),smallPanelheight+4,clrBlack,clrLime,3);
         //Alert(TimeToStr(TimeCurrent(),TIME_DATE|TIME_MINUTES)+" "+symbol+" "+IntegerToString((int)PERIOD_H4)+" 50 UP");
          if(AlertOnH4 && MTF_NewBar0(PERIOD_H4))
           {
            Alert(TimeToStr(TimeCurrent(),TIME_DATE|TIME_MINUTES)+" "+symbol+" "+" H4 "+" 50 UP");
            if(SoundOn)
               PlaySound("alert.wav");
           }
        
        }
      else if(Stoch2_1<50 && //vid <50
         Stoch2_1>20 &&                                  // vid >20
         Stoch2_1>Stoch1_1 &&                            //vid0>gr0
         Stoch2_1<Stoch1_2 &&                            //vid0<gr0
         (Stoch1_2>50 || Stoch1_3>50 || Stoch1_4>50) && 
         Stoch3_1<50
         )
           {
            //down cross
            SetPanel(panelName,0,xOffset+stochOffset-2,yOffset-2,2 *(smallPanelWidth+smallPanelSpace),smallPanelheight+4,clrBlack,clrSalmon,3);
            //Alert(TimeToStr(TimeCurrent(),TIME_DATE|TIME_MINUTES)+" "+symbol+" "+IntegerToString((int)PERIOD_H4)+" 50 DN");
            if(AlertOnH4 && MTF_NewBar0(PERIOD_H4))
              {
               Alert(TimeToStr(TimeCurrent(),TIME_DATE|TIME_MINUTES)+" "+symbol+" "+" H4 "+" 50 DN");
               if(SoundOn)
                  PlaySound("alert.wav");
              }
           }
         else if(Stoch2_1>stochLowerlevel && 
            Stoch2_1<stochUpperlevel && // 80 > vid > 20
            Stoch2_1>Stoch2_2 && 
            Stoch2_2>Stoch2_3 && 
            Stoch2_3>Stoch2_4 && 
            Stoch2_4>Stoch2_5 && 
            Stoch2_5>Stoch2_6 && // vid kyla
            Stoch1_2<Stoch2_2 && 
            Stoch1_1>Stoch2_1)
              {
               //up cross
               SetPanel(panelName,0,xOffset+stochOffset-2,yOffset-2,2 *(smallPanelWidth+smallPanelSpace),smallPanelheight+4,clrBlack,clrDarkGreen,3);
               //Alert(TimeToStr(TimeCurrent(),TIME_DATE|TIME_MINUTES)+" "+symbol+" "+IntegerToString((int)PERIOD_M1)+" X Cross UP");
               if(AlertXCrossH4 && MTF_NewBar1(PERIOD_H4))
                 {
                  Alert(TimeToStr(TimeCurrent(),TIME_DATE|TIME_MINUTES)+" "+symbol+" "+" H4 "+" X Cross UP");
                  if(SoundOn)
                     PlaySound("alert.wav");
                 }
              }

            else if(Stoch2_1>stochLowerlevel && Stoch2_1<stochUpperlevel && // 80 > vid > 20
               Stoch2_1<Stoch2_2 && 
               Stoch2_2<Stoch2_3 && 
               Stoch2_3<Stoch2_4 && 
               Stoch2_4<Stoch2_5 && 
               Stoch2_5<Stoch2_6 && // vid krenta
               Stoch1_2>Stoch2_2 && 
               Stoch1_1<Stoch2_1)
                 {
                  //down cross
                  SetPanel(panelName,0,xOffset+stochOffset-2,yOffset-2,2 *(smallPanelWidth+smallPanelSpace),smallPanelheight+4,clrBlack,clrRed,3);
                  //Alert(TimeToStr(TimeCurrent(),TIME_DATE|TIME_MINUTES)+" "+symbol+" "+IntegerToString((int)PERIOD_M1)+" X Cross DN");
                  if(AlertXCrossH4 && MTF_NewBar1(PERIOD_H4))
                    {
                     Alert(TimeToStr(TimeCurrent(),TIME_DATE|TIME_MINUTES)+" "+symbol+" "+" H4 "+" X Cross DN");
                     if(SoundOn)
                        PlaySound("alert.wav");
                    }
                 }

               else     ObjectDelete(panelName);

      Stoch3_1 = iStochastic(symbol, PERIOD_H4,kPeriod_3,dPeriod_3, Slowing_3, maMethod_3, priceField_3,MODE_MAIN,0);
      Stoch3_2 = iStochastic(symbol, PERIOD_H4,kPeriod_3,dPeriod_3, Slowing_3, maMethod_3, priceField_3,MODE_MAIN,1);
      panelName= preamble+"panel_H4_3_"+symbol;
      SetPanel(panelName,(int)chartId,xOffset+stochOffset+2 *(smallPanelWidth+smallPanelSpace),yOffset,smallPanelWidth,smallPanelheight,dbBackgroundColor,dbBorderColor,dbBorderWidth);
      labelName=preamble+"label_H4_3_"+symbol;
      SetText(chartId,labelName,IntegerToString((int) Stoch3_1),xOffset+stochOffset+2 *(smallPanelWidth+smallPanelSpace)+5,yOffset+2,textColor,fontSizeText);

      if(Stoch3_1>Stoch3_2)
        {
         SetObjText(chartId,preamble+"Label_H4_st3_Arrow",CharToStr(233),xOffset+stochOffset+2 *(smallPanelWidth+smallPanelSpace)+25,yOffset+0,bullColor,fontSizeText);
        }
      else
        {
         SetObjText(chartId,preamble+"Label_H4_st3_Arrow",CharToStr(234),xOffset+stochOffset+2 *(smallPanelWidth+smallPanelSpace)+25,yOffset+3,bearColor,fontSizeText);
        }

      labelName=labelName=preamble+"label_H4_Circle_"+symbol;
      if(Stoch1_1>80 && Stoch2_1>80 && Stoch3_1>80)
        {
         SetObjText(chartId,labelName,CharToStr(110),xOffset+stochOffset+3 *(smallPanelWidth+smallPanelSpace)+5,yOffset+3,bearColor,fontSizeText);
        }
      else if(Stoch1_1<20 && Stoch2_1<20 && Stoch3_1<20)
        {
         SetObjText(chartId,labelName,CharToStr(110),xOffset+stochOffset+3 *(smallPanelWidth+smallPanelSpace)+5,yOffset+3,bullColor,fontSizeText);
        }
      else
        {
         SetObjText(chartId,labelName,CharToStr(20),xOffset+stochOffset+3 *(smallPanelWidth+smallPanelSpace)+5,yOffset+3,dbBackgroundColor,fontSizeText);
        }

      //rsioma
      tmpValue_7 = iCustom(symbol,PERIOD_H4,"RSIOMA Light", 14, 1, 0, 21, 1, 0, 0);
      tmpValue_8 = iCustom(symbol,PERIOD_H4,"RSIOMA Light", 14, 1, 0, 21, 1, 0, 1);
      panelName=preamble+"panel_h4_15_"+symbol;
      SetPanel(panelName,(int)chartId,xOffset+stochOffset+3 *(smallPanelWidth+smallPanelSpace)+xInBetween,yOffset,smallPanelWidth,smallPanelheight,dbBackgroundColor,dbBorderColor,dbBorderWidth);
      labelName=preamble+"label_h4_15_"+symbol;
      SetText(chartId,labelName,IntegerToString((int)tmpValue_7),xOffset+stochOffset+3 *(smallPanelWidth+smallPanelSpace)+5+xInBetween,yOffset+2,textColor,fontSizeText);

      if(tmpValue_7>tmpValue_8)
        {
         SetObjText(chartId,preamble+"Label_h4_rsioma_Arrow",CharToStr(233),xOffset+stochOffset+3 *(smallPanelWidth+smallPanelSpace)+25+xInBetween,yOffset+0,bullColor,fontSizeText);
        }
      else
        {
         SetObjText(chartId,preamble+"Label_h4_rsioma_Arrow",CharToStr(234),xOffset+stochOffset+3 *(smallPanelWidth+smallPanelSpace)+25+xInBetween,yOffset+3,bearColor,fontSizeText);
        }

      //

      // dds
      tmpValue_9=iCustom(symbol,PERIOD_H4,"DDS",8,13,9,0,0);
      tmpValue_10 = iCustom(symbol,PERIOD_H4,"DDS", 8, 13, 9, 0, 1);
      tmpValue_11 = iCustom(symbol,PERIOD_H4,"DDS", 8, 13, 9, 0, 2);
      tmpValue_12 = iCustom(symbol,PERIOD_H4,"DDS", 8, 13, 9, 1, 1);
      tmpValue_13 = iCustom(symbol,PERIOD_H4,"DDS", 8, 13, 9, 1, 2);
      panelName=preamble+"panel_H4_dds_"+symbol;
      //SetPanel(panelName,chartId, xOffset + stochOffset + 4 * (smallPanelWidth + smallPanelSpace) + xInBetween, yOffset, smallPanelWidth, smallPanelheight,dbBackgroundColor, dbBorderColor, dbBorderWidth);
      labelName=preamble+"label_H4_dds_"+symbol;
      if(tmpValue_10>tmpValue_12 && tmpValue_11<tmpValue_13)
        {
         SetPanel(panelName,(int)chartId,xOffset+stochOffset+4 *(smallPanelWidth+smallPanelSpace)+xInBetween,yOffset,smallPanelWidth,smallPanelheight,dbBackgroundColor,clrLime,dbBorderWidth+1);
        }
      else if(tmpValue_10<tmpValue_12 && tmpValue_11>tmpValue_13)
        {
         SetPanel(panelName,(int)chartId,xOffset+stochOffset+4 *(smallPanelWidth+smallPanelSpace)+xInBetween,yOffset,smallPanelWidth,smallPanelheight,dbBackgroundColor,clrRed,dbBorderWidth+1);
        }
      else
        {
         SetPanel(panelName,(int)chartId,xOffset+stochOffset+4 *(smallPanelWidth+smallPanelSpace)+xInBetween,yOffset,smallPanelWidth,smallPanelheight,dbBackgroundColor,dbBorderColor,dbBorderWidth);
        }
      SetText(chartId,labelName,IntegerToString((int)tmpValue_9),xOffset+stochOffset+4 *(smallPanelWidth+smallPanelSpace)+5+xInBetween,yOffset+2,textColor,fontSizeText);

      if(tmpValue_9>tmpValue_10)
        {
         SetObjText(chartId,preamble+"Label_h4_dds_Arrow",CharToStr(233),xOffset+stochOffset+4 *(smallPanelWidth+smallPanelSpace)+25+xInBetween,yOffset+0,bullColor,fontSizeText);
        }
      else
        {
         SetObjText(chartId,preamble+"Label_h4_dds_Arrow",CharToStr(234),xOffset+stochOffset+4 *(smallPanelWidth+smallPanelSpace)+25+xInBetween,yOffset+4,bearColor,fontSizeText);
        }

      //end dds

      // check DDS and RSIOMA opposite values 15 and 85
      panelName=preamble+"panel_RsiOma_DDS_Cross_H4";
      if(tmpValue_8>(100-RsiOma_DDS_Opposite) && tmpValue_10<RsiOma_DDS_Opposite)
        {
         SetPanel(panelName,0,xOffset+stochOffset+3 *(smallPanelWidth+smallPanelSpace)+xInBetween-2,yOffset-2,2 *(smallPanelWidth+smallPanelSpace),smallPanelheight+4,clrBlack,clrLime,2);
        }
      else if(tmpValue_8<RsiOma_DDS_Opposite && tmpValue_10>(100-RsiOma_DDS_Opposite))
        {
         SetPanel(panelName,0,xOffset+stochOffset+3 *(smallPanelWidth+smallPanelSpace)+xInBetween-2,yOffset-2,2 *(smallPanelWidth+smallPanelSpace),smallPanelheight+4,clrBlack,clrRed,2);
        }
      else
        {
         ObjectDelete(panelName);
        }

      //adx

      double val1 = iADX(symbol,PERIOD_H4,7, PRICE_CLOSE, MODE_MAIN, 0);
      double val2 = iADX(symbol,PERIOD_H4,7, PRICE_CLOSE, MODE_MAIN,  1);
      double dmip = iADX(symbol,PERIOD_H4,7, PRICE_CLOSE, MODE_PLUSDI, 0);
      double dmim = iADX(symbol,PERIOD_H4,7, PRICE_CLOSE, MODE_MINUSDI, 0);

      double val1_21 = iADX(symbol,PERIOD_H4,21, PRICE_CLOSE, MODE_MAIN, 0);
      double val2_21 = iADX(symbol,PERIOD_H4,21, PRICE_CLOSE, MODE_MAIN,  1);
      double dmip_21 = iADX(symbol,PERIOD_H4,21, PRICE_CLOSE, MODE_PLUSDI, 0);
      double dmim_21 = iADX(symbol,PERIOD_H4,21, PRICE_CLOSE, MODE_MINUSDI, 0);

      double val1_42 = iADX(symbol,PERIOD_H4,42, PRICE_CLOSE, MODE_MAIN, 0);
      double val2_42 = iADX(symbol,PERIOD_H4,42, PRICE_CLOSE, MODE_MAIN,  1);
      double dmip_42 = iADX(symbol,PERIOD_H4,42, PRICE_CLOSE, MODE_PLUSDI, 0);
      double dmim_42 = iADX(symbol,PERIOD_H4,42, PRICE_CLOSE, MODE_MINUSDI, 0);

      double val1_89 = iADX(symbol,PERIOD_H4,89, PRICE_CLOSE, MODE_MAIN, 0);
      double val2_89 = iADX(symbol,PERIOD_H4,89, PRICE_CLOSE, MODE_MAIN,  1);
      double dmip_89 = iADX(symbol,PERIOD_H4,89, PRICE_CLOSE, MODE_PLUSDI, 0);
      double dmim_89 = iADX(symbol,PERIOD_H4,89, PRICE_CLOSE, MODE_MINUSDI, 0);

      double val1_144 = iADX(symbol,PERIOD_H4,144, PRICE_CLOSE, MODE_MAIN, 0);
      double val2_144 = iADX(symbol,PERIOD_H4,144, PRICE_CLOSE, MODE_MAIN,  1);
      double dmip_144 = iADX(symbol,PERIOD_H4,144, PRICE_CLOSE, MODE_PLUSDI, 0);
      double dmim_144 = iADX(symbol,PERIOD_H4,144, PRICE_CLOSE, MODE_MINUSDI, 0);

      panelName=preamble+"panel_H4_ADX_"+symbol;
      SetPanel(panelName,(int)chartId,xOffset+stochOffset+5 *(smallPanelWidth+smallPanelSpace)+xInBetween,yOffset,smallPanelWidth,smallPanelheight,dbBackgroundColor,dbBorderColor,dbBorderWidth);
      labelName=preamble+"label_H4_ADX_"+symbol;
      // SetText(chartId, labelName,IntegerToString((int)val1),xOffset + stochOffset + 5 * (smallPanelWidth + smallPanelSpace) + 5, yOffset + 2, textColor, fontSizeText);

      if((val1>val2) && (dmip>dmim) && (val1_21>val2_21) && (dmip_21>dmim_21) && (val1_42>val2_42) && (dmip_42>dmim_42) && (val1_89>val2_89) && (dmip_89>dmim_89) && (val1_144>val2_144) && (dmip_144>dmim_144))
        {
         SetObjText(chartId,preamble+"Label_H4_ADX_Arrow1",CharToStr(233),xOffset+stochOffset+5 *(smallPanelWidth+smallPanelSpace)+25+xInBetween,yOffset+0,bullColor,fontSizeText);
        }
      else if((val1>val2) && (dmip<dmim) && (val1_21>val2_21) && (dmip_21<dmim_21) && (val1_42>val2_42) && (dmip_42<dmim_42) && (val1_89>val2_89) && (dmip_89<dmim_89) && (val1_144>val2_144) && (dmip_144<dmim_144))
        {
         SetObjText(chartId,preamble+"Label_H4_ADX_Arrow1",CharToStr(234),xOffset+stochOffset+5 *(smallPanelWidth+smallPanelSpace)+25+xInBetween,yOffset+4,bearColor,fontSizeText);
        }
      else
        {
         SetObjText(chartId,preamble+"Label_H4_ADX_Arrow1",CharToStr(108),xOffset+stochOffset+5 *(smallPanelWidth+smallPanelSpace)+25+xInBetween,yOffset+4,flatColor,fontSizeText);
        }

      //edn adx

      //yOffset = yOffset + squareSize + squareSpace;
     }

   if(showDay)
     {
      // write TF
      yOffset=yOffset+smallPanelheight+smallPanelSpace;
      SetText(chartId,preamble+"labelText_D1_1","D1",xAnchor+smallPanelSpace,yOffset+textOffsetY,textColor,fontSizeText);

      Stoch1_1 = iStochastic(symbol, PERIOD_D1,kPeriod_1,dPeriod_1, Slowing_1, maMethod_1, priceField_1,MODE_MAIN,0);
      Stoch1_2 = iStochastic(symbol, PERIOD_D1,kPeriod_1,dPeriod_1, Slowing_1, maMethod_1, priceField_1,MODE_MAIN,1);

      panelName=preamble+"panel_D1_1_"+symbol;
      SetPanel(panelName,(int)chartId,xOffset+stochOffset,yOffset,smallPanelWidth,smallPanelheight,dbBackgroundColor,dbBorderColor,dbBorderWidth);

      labelName=preamble+"label_D1_1_"+symbol;
      SetText(chartId,labelName,IntegerToString((int) Stoch1_1),xOffset+stochOffset+5,yOffset+2,textColor,fontSizeText);

      if(Stoch1_1>Stoch1_2)
        {
         SetObjText(chartId,preamble+"Label_D1_st1_Arrow",CharToStr(233),xOffset+stochOffset+25,yOffset+0,bullColor,fontSizeText);
        }
      else
        {
         SetObjText(chartId,preamble+"Label_D1_st1_Arrow",CharToStr(234),xOffset+stochOffset+25,yOffset+3,bearColor,fontSizeText);
        }

      Stoch2_1 = iStochastic(symbol, PERIOD_D1,kPeriod_2,dPeriod_2, Slowing_2, maMethod_2, priceField_2,MODE_MAIN,0);
      Stoch2_2 = iStochastic(symbol, PERIOD_D1,kPeriod_2,dPeriod_2, Slowing_2, maMethod_2, priceField_2,MODE_MAIN,1);
      panelName= preamble+"panel_D1_2_"+symbol;
      SetPanel(panelName,(int)chartId,xOffset+stochOffset+smallPanelWidth+smallPanelSpace,yOffset,smallPanelWidth,smallPanelheight,dbBackgroundColor,dbBorderColor,dbBorderWidth);

      labelName=preamble+"label_D1_2_"+symbol;
      SetText(chartId,labelName,IntegerToString((int) Stoch2_1),xOffset+stochOffset+smallPanelWidth+smallPanelSpace+5,yOffset+2,textColor,fontSizeText);

      if(Stoch2_1>Stoch2_2)
        {
         SetObjText(chartId,preamble+"Label_D1_st2_Arrow",CharToStr(233),xOffset+stochOffset+smallPanelWidth+smallPanelSpace+25,yOffset+0,bullColor,fontSizeText);
        }
      else
        {
         SetObjText(chartId,preamble+"Label_D1_st2_Arrow",CharToStr(234),xOffset+stochOffset+smallPanelWidth+smallPanelSpace+25,yOffset+3,bearColor,fontSizeText);
        }
      // check for cross
      Stoch1_1 = iStochastic(symbol, PERIOD_D1,kPeriod_1,dPeriod_1, Slowing_1, maMethod_1, priceField_1,MODE_MAIN,1);
      Stoch1_2 = iStochastic(symbol, PERIOD_D1,kPeriod_1,dPeriod_1, Slowing_1, maMethod_1, priceField_1,MODE_MAIN,2);
      Stoch1_3 = iStochastic(symbol, PERIOD_D1,kPeriod_1,dPeriod_1, Slowing_1, maMethod_1, priceField_1,MODE_MAIN,3);
      Stoch1_4 = iStochastic(symbol, PERIOD_D1,kPeriod_1,dPeriod_1, Slowing_1, maMethod_1, priceField_1,MODE_MAIN,4);

      Stoch2_1 = iStochastic(symbol, PERIOD_D1,kPeriod_2,dPeriod_2, Slowing_2, maMethod_2, priceField_2,MODE_MAIN,1);
      Stoch2_2 = iStochastic(symbol, PERIOD_D1,kPeriod_2,dPeriod_2, Slowing_2, maMethod_2, priceField_2,MODE_MAIN,2);
      Stoch2_3 = iStochastic(symbol, PERIOD_D1,kPeriod_2,dPeriod_2, Slowing_2, maMethod_2, priceField_2,MODE_MAIN,3);
      Stoch2_4 = iStochastic(symbol, PERIOD_D1,kPeriod_2,dPeriod_2, Slowing_2, maMethod_2, priceField_2,MODE_MAIN,4);
      Stoch2_5 = iStochastic(symbol, PERIOD_D1,kPeriod_2,dPeriod_2, Slowing_2, maMethod_2, priceField_2,MODE_MAIN,5);
      Stoch2_6 = iStochastic(symbol, PERIOD_D1,kPeriod_2,dPeriod_2, Slowing_2, maMethod_2, priceField_2,MODE_MAIN,6);

      Stoch3_1 = iStochastic(symbol, PERIOD_D1,kPeriod_3,dPeriod_3, Slowing_3, maMethod_3, priceField_3,MODE_MAIN,1);
      Stoch3_2 = iStochastic(symbol, PERIOD_D1,kPeriod_3,dPeriod_3, Slowing_3, maMethod_3, priceField_3,MODE_MAIN,2);

      panelName=preamble+"panel_8_21_Cross_D1";
      if(Stoch2_1>50 &&                                     //vid <50
         Stoch2_1<80    &&                                  //vid <80
         Stoch2_1<Stoch1_1 &&                               //vid0<gr0
         Stoch2_2>Stoch1_2 &&                               //vid0>gr0
         (Stoch1_2<50 ||  Stoch1_3<50 || Stoch1_4<50) &&    //gr0<50
         Stoch3_1>50                                        //
         )
        {
         //up cross
         SetPanel(panelName,0,xOffset+stochOffset-2,yOffset-2,2 *(smallPanelWidth+smallPanelSpace),smallPanelheight+4,clrBlack,clrLime,3);
         //Alert(TimeToStr(TimeCurrent(),TIME_DATE|TIME_MINUTES)+" "+symbol+" "+IntegerToString((int)PERIOD_D1)+" 50 UP");
          if(AlertOnD1 && MTF_NewBar0(PERIOD_D1))
           {
            Alert(TimeToStr(TimeCurrent(),TIME_DATE|TIME_MINUTES)+" "+symbol+" "+" D1 "+" 50 UP");
            if(SoundOn)
               PlaySound("alert.wav");
           }
        
        }
      else if(Stoch2_1<50 && //vid <50
         Stoch2_1>20 &&                                  // vid >20
         Stoch2_1>Stoch1_1 &&                            //vid0>gr0
         Stoch2_1<Stoch1_2 &&                            //vid0<gr0
         (Stoch1_2>50 || Stoch1_3>50 || Stoch1_4>50) && 
         Stoch3_1<50
         )
           {
            //down cross
            SetPanel(panelName,0,xOffset+stochOffset-2,yOffset-2,2 *(smallPanelWidth+smallPanelSpace),smallPanelheight+4,clrBlack,clrSalmon,3);
            //Alert(TimeToStr(TimeCurrent(),TIME_DATE|TIME_MINUTES)+" "+symbol+" "+IntegerToString((int)PERIOD_D1)+" 50 DN");
            if(AlertOnD1 && MTF_NewBar0(PERIOD_D1))
              {
               Alert(TimeToStr(TimeCurrent(),TIME_DATE|TIME_MINUTES)+" "+symbol+" "+" D1 "+" 50 DN");
               if(SoundOn)
                  PlaySound("alert.wav");
              }
           }
         else if(Stoch2_1>stochLowerlevel && 
            Stoch2_1<stochUpperlevel && // 80 > vid > 20
            Stoch2_1>Stoch2_2 && 
            Stoch2_2>Stoch2_3 && 
            Stoch2_3>Stoch2_4 && 
            Stoch2_4>Stoch2_5 && 
            Stoch2_5>Stoch2_6 && // vid kyla
            Stoch1_2<Stoch2_2 && 
            Stoch1_1>Stoch2_1)
              {
               //up cross
               SetPanel(panelName,0,xOffset+stochOffset-2,yOffset-2,2 *(smallPanelWidth+smallPanelSpace),smallPanelheight+4,clrBlack,clrDarkGreen,3);
               //Alert(TimeToStr(TimeCurrent(),TIME_DATE|TIME_MINUTES)+" "+symbol+" "+IntegerToString((int)PERIOD_D1)+" X Cross UP");
               if(AlertXCrossD1 && MTF_NewBar1(PERIOD_D1))
                 {
                  Alert(TimeToStr(TimeCurrent(),TIME_DATE|TIME_MINUTES)+" "+symbol+" "+" D1 "+" X Cross UP");
                  if(SoundOn)
                     PlaySound("alert.wav");
                 }
              }

            else if(Stoch2_1>stochLowerlevel && Stoch2_1<stochUpperlevel && // 80 > vid > 20
               Stoch2_1<Stoch2_2 && 
               Stoch2_2<Stoch2_3 && 
               Stoch2_3<Stoch2_4 && 
               Stoch2_4<Stoch2_5 && 
               Stoch2_5<Stoch2_6 && // vid krenta
               Stoch1_2>Stoch2_2 && 
               Stoch1_1<Stoch2_1)
                 {
                  //down cross
                  SetPanel(panelName,0,xOffset+stochOffset-2,yOffset-2,2 *(smallPanelWidth+smallPanelSpace),smallPanelheight+4,clrBlack,clrRed,3);
                  //Alert(TimeToStr(TimeCurrent(),TIME_DATE|TIME_MINUTES)+" "+symbol+" "+IntegerToString((int)PERIOD_D1)+" X Cross DN");
                  if(AlertXCrossD1 && MTF_NewBar1(PERIOD_D1))
                    {
                     Alert(TimeToStr(TimeCurrent(),TIME_DATE|TIME_MINUTES)+" "+symbol+" "+" D1 "+" X Cross DN");
                     if(SoundOn)
                        PlaySound("alert.wav");
                    }
                 }
               else     ObjectDelete(panelName);
      Stoch3_1 = iStochastic(symbol, PERIOD_D1,kPeriod_3,dPeriod_3, Slowing_3, maMethod_3, priceField_3,MODE_MAIN,0);
      Stoch3_2 = iStochastic(symbol, PERIOD_D1,kPeriod_3,dPeriod_3, Slowing_3, maMethod_3, priceField_3,MODE_MAIN,1);
      panelName= preamble+"panel_D1_3_"+symbol;
      SetPanel(panelName,(int)chartId,xOffset+stochOffset+2 *(smallPanelWidth+smallPanelSpace),yOffset,smallPanelWidth,smallPanelheight,dbBackgroundColor,dbBorderColor,dbBorderWidth);
      labelName=preamble+"label_D1_3_"+symbol;
      SetText(chartId,labelName,IntegerToString((int) Stoch3_1),xOffset+stochOffset+2 *(smallPanelWidth+smallPanelSpace)+5,yOffset+2,textColor,fontSizeText);

      if(Stoch3_1>Stoch3_2)
        {
         SetObjText(chartId,preamble+"Label_D1_st3_Arrow",CharToStr(233),xOffset+stochOffset+2 *(smallPanelWidth+smallPanelSpace)+25,yOffset+0,bullColor,fontSizeText);
        }
      else
        {
         SetObjText(chartId,preamble+"Label_D1_st3_Arrow",CharToStr(234),xOffset+stochOffset+2 *(smallPanelWidth+smallPanelSpace)+25,yOffset+3,bearColor,fontSizeText);
        }

      labelName=labelName=preamble+"label_D1_Circle_"+symbol;
      if(Stoch1_1>80 && Stoch2_1>80 && Stoch3_1>80)
        {
         SetObjText(chartId,labelName,CharToStr(110),xOffset+stochOffset+3 *(smallPanelWidth+smallPanelSpace)+5,yOffset+3,bearColor,fontSizeText);
        }
      else if(Stoch1_1<20 && Stoch2_1<20 && Stoch3_1<20)
        {
         SetObjText(chartId,labelName,CharToStr(110),xOffset+stochOffset+3 *(smallPanelWidth+smallPanelSpace)+5,yOffset+3,bullColor,fontSizeText);
        }
      else
        {
         SetObjText(chartId,labelName,CharToStr(20),xOffset+stochOffset+3 *(smallPanelWidth+smallPanelSpace)+5,yOffset+3,dbBackgroundColor,fontSizeText);
        }

      //rsioma
      tmpValue_7 = iCustom(symbol,PERIOD_D1,"RSIOMA Light", 14, 1, 0, 21, 1, 0, 0);
      tmpValue_8 = iCustom(symbol,PERIOD_D1,"RSIOMA Light", 14, 1, 0, 21, 1, 0, 1);
      panelName=preamble+"panel_M1_day1_"+symbol;
      SetPanel(panelName,(int)chartId,xOffset+stochOffset+3 *(smallPanelWidth+smallPanelSpace)+xInBetween,yOffset,smallPanelWidth,smallPanelheight,dbBackgroundColor,dbBorderColor,dbBorderWidth);
      labelName=preamble+"label_M1_day1_"+symbol;
      SetText(chartId,labelName,IntegerToString((int)tmpValue_7),xOffset+stochOffset+3 *(smallPanelWidth+smallPanelSpace)+5+xInBetween,yOffset+2,textColor,fontSizeText);

      if(tmpValue_7>tmpValue_8)
        {
         SetObjText(chartId,preamble+"Label_day1_rsioma_Arrow",CharToStr(233),xOffset+stochOffset+3 *(smallPanelWidth+smallPanelSpace)+25+xInBetween,yOffset+0,bullColor,fontSizeText);
        }
      else
        {
         SetObjText(chartId,preamble+"Label_day1_rsioma_Arrow",CharToStr(234),xOffset+stochOffset+3 *(smallPanelWidth+smallPanelSpace)+25+xInBetween,yOffset+3,bearColor,fontSizeText);
        }

      //
      // dds
      tmpValue_9=iCustom(symbol,PERIOD_D1,"DDS",8,13,9,0,0);
      tmpValue_10 = iCustom(symbol,PERIOD_D1,"DDS", 8, 13, 9, 0, 1);
      tmpValue_11 = iCustom(symbol,PERIOD_D1,"DDS", 8, 13, 9, 0, 2);
      tmpValue_12 = iCustom(symbol,PERIOD_D1,"DDS", 8, 13, 9, 1, 1);
      tmpValue_13 = iCustom(symbol,PERIOD_D1,"DDS", 8, 13, 9, 1, 2);
      panelName=preamble+"panel_D1_dds_"+symbol;
      //SetPanel(panelName,chartId, xOffset + stochOffset + 4 * (smallPanelWidth + smallPanelSpace) + xInBetween, yOffset, smallPanelWidth, smallPanelheight,dbBackgroundColor, dbBorderColor, dbBorderWidth);
      labelName=preamble+"label_D1_dds_"+symbol;
      if(tmpValue_10>tmpValue_12 && tmpValue_11<tmpValue_13)
        {
         SetPanel(panelName,(int)chartId,xOffset+stochOffset+4 *(smallPanelWidth+smallPanelSpace)+xInBetween,yOffset,smallPanelWidth,smallPanelheight,dbBackgroundColor,clrLime,dbBorderWidth+1);
        }
      else if(tmpValue_10<tmpValue_12 && tmpValue_11>tmpValue_13)
        {
         SetPanel(panelName,(int)chartId,xOffset+stochOffset+4 *(smallPanelWidth+smallPanelSpace)+xInBetween,yOffset,smallPanelWidth,smallPanelheight,dbBackgroundColor,clrRed,dbBorderWidth+1);
        }
      else
        {
         SetPanel(panelName,(int)chartId,xOffset+stochOffset+4 *(smallPanelWidth+smallPanelSpace)+xInBetween,yOffset,smallPanelWidth,smallPanelheight,dbBackgroundColor,dbBorderColor,dbBorderWidth);
        }
      SetText(chartId,labelName,IntegerToString((int)tmpValue_9),xOffset+stochOffset+4 *(smallPanelWidth+smallPanelSpace)+5+xInBetween,yOffset+2,textColor,fontSizeText);

      if(tmpValue_9>tmpValue_10)
        {
         SetObjText(chartId,preamble+"Label_d1_dds_Arrow",CharToStr(233),xOffset+stochOffset+4 *(smallPanelWidth+smallPanelSpace)+25+xInBetween,yOffset+0,bullColor,fontSizeText);
        }
      else
        {
         SetObjText(chartId,preamble+"Label_d1_dds_Arrow",CharToStr(234),xOffset+stochOffset+4 *(smallPanelWidth+smallPanelSpace)+25+xInBetween,yOffset+4,bearColor,fontSizeText);
        }

      //end dds

      // check DDS and RSIOMA opposite values 15 and 85
      panelName=preamble+"panel_RsiOma_DDS_Cross_D1";
      if(tmpValue_8>(100-RsiOma_DDS_Opposite) && tmpValue_10<RsiOma_DDS_Opposite)
        {
         SetPanel(panelName,0,xOffset+stochOffset+3 *(smallPanelWidth+smallPanelSpace)+xInBetween-2,yOffset-2,2 *(smallPanelWidth+smallPanelSpace),smallPanelheight+4,clrBlack,clrLime,2);
        }
      else if(tmpValue_8<RsiOma_DDS_Opposite && tmpValue_10>(100-RsiOma_DDS_Opposite))
        {
         SetPanel(panelName,0,xOffset+stochOffset+3 *(smallPanelWidth+smallPanelSpace)+xInBetween-2,yOffset-2,2 *(smallPanelWidth+smallPanelSpace),smallPanelheight+4,clrBlack,clrRed,2);
        }
      else
        {
         ObjectDelete(panelName);
        }

      //adx

      double val1 = iADX(symbol,PERIOD_D1,7, PRICE_CLOSE, MODE_MAIN, 0);
      double val2 = iADX(symbol,PERIOD_D1,7, PRICE_CLOSE, MODE_MAIN,  1);
      double dmip = iADX(symbol,PERIOD_D1,7, PRICE_CLOSE, MODE_PLUSDI, 0);
      double dmim = iADX(symbol,PERIOD_D1,7, PRICE_CLOSE, MODE_MINUSDI, 0);

      double val1_21 = iADX(symbol,PERIOD_D1,21, PRICE_CLOSE, MODE_MAIN, 0);
      double val2_21 = iADX(symbol,PERIOD_D1,21, PRICE_CLOSE, MODE_MAIN,  1);
      double dmip_21 = iADX(symbol,PERIOD_D1,21, PRICE_CLOSE, MODE_PLUSDI, 0);
      double dmim_21 = iADX(symbol,PERIOD_D1,21, PRICE_CLOSE, MODE_MINUSDI, 0);

      double val1_42 = iADX(symbol,PERIOD_D1,42, PRICE_CLOSE, MODE_MAIN, 0);
      double val2_42 = iADX(symbol,PERIOD_D1,42, PRICE_CLOSE, MODE_MAIN,  1);
      double dmip_42 = iADX(symbol,PERIOD_D1,42, PRICE_CLOSE, MODE_PLUSDI, 0);
      double dmim_42 = iADX(symbol,PERIOD_D1,42, PRICE_CLOSE, MODE_MINUSDI, 0);

      double val1_89 = iADX(symbol,PERIOD_D1,89, PRICE_CLOSE, MODE_MAIN, 0);
      double val2_89 = iADX(symbol,PERIOD_D1,89, PRICE_CLOSE, MODE_MAIN,  1);
      double dmip_89 = iADX(symbol,PERIOD_D1,89, PRICE_CLOSE, MODE_PLUSDI, 0);
      double dmim_89 = iADX(symbol,PERIOD_D1,89, PRICE_CLOSE, MODE_MINUSDI, 0);

      double val1_144 = iADX(symbol,PERIOD_D1,144, PRICE_CLOSE, MODE_MAIN, 0);
      double val2_144 = iADX(symbol,PERIOD_D1,144, PRICE_CLOSE, MODE_MAIN,  1);
      double dmip_144 = iADX(symbol,PERIOD_D1,144, PRICE_CLOSE, MODE_PLUSDI, 0);
      double dmim_144 = iADX(symbol,PERIOD_D1,144, PRICE_CLOSE, MODE_MINUSDI, 0);

      panelName=preamble+"panel_d1_ADX_"+symbol;
      SetPanel(panelName,(int)chartId,xOffset+stochOffset+5 *(smallPanelWidth+smallPanelSpace)+xInBetween,yOffset,smallPanelWidth,smallPanelheight,dbBackgroundColor,dbBorderColor,dbBorderWidth);
      labelName=preamble+"label_d1_ADX_"+symbol;
      // SetText(chartId, labelName,IntegerToString((int)val1),xOffset + stochOffset + 5 * (smallPanelWidth + smallPanelSpace) + 5, yOffset + 2, textColor, fontSizeText);

      if((val1>val2) && (dmip>dmim) && (val1_21>val2_21) && (dmip_21>dmim_21) && (val1_42>val2_42) && (dmip_42>dmim_42) && (val1_89>val2_89) && (dmip_89>dmim_89) && (val1_144>val2_144) && (dmip_144>dmim_144))
        {
         SetObjText(chartId,preamble+"Label_D1_ADX_Arrow1",CharToStr(233),xOffset+stochOffset+5 *(smallPanelWidth+smallPanelSpace)+25+xInBetween,yOffset+0,bullColor,fontSizeText);
        }
      else if((val1>val2) && (dmip<dmim) && (val1_21>val2_21) && (dmip_21<dmim_21) && (val1_42>val2_42) && (dmip_42<dmim_42) && (val1_89>val2_89) && (dmip_89<dmim_89) && (val1_144>val2_144) && (dmip_144<dmim_144))
        {
         SetObjText(chartId,preamble+"Label_D1_ADX_Arrow1",CharToStr(234),xOffset+stochOffset+5 *(smallPanelWidth+smallPanelSpace)+25+xInBetween,yOffset+4,bearColor,fontSizeText);
        }
      else
        {
         SetObjText(chartId,preamble+"Label_D1_ADX_Arrow1",CharToStr(108),xOffset+stochOffset+5 *(smallPanelWidth+smallPanelSpace)+25+xInBetween,yOffset+4,flatColor,fontSizeText);
        }

      //edn adx

      //yOffset = yOffset + squareSize + squareSpace;
     }

   if(showWeek)
     {
      // write TF
      yOffset=yOffset+smallPanelheight+smallPanelSpace;
      SetText(chartId,preamble+"labelText_W1_1","W1",xAnchor+smallPanelSpace,yOffset+textOffsetY,textColor,fontSizeText);

      Stoch1_1 = iStochastic(symbol, PERIOD_W1,kPeriod_1,dPeriod_1, Slowing_1, maMethod_1, priceField_1,MODE_MAIN,0);
      Stoch1_2 = iStochastic(symbol, PERIOD_W1,kPeriod_1,dPeriod_1, Slowing_1, maMethod_1, priceField_1,MODE_MAIN,1);

      panelName=preamble+"panel_W1_1_"+symbol;
      SetPanel(panelName,(int)chartId,xOffset+stochOffset,yOffset,smallPanelWidth,smallPanelheight,dbBackgroundColor,dbBorderColor,dbBorderWidth);

      labelName=preamble+"label_W1_1_"+symbol;
      SetText(chartId,labelName,IntegerToString((int) Stoch1_1),xOffset+stochOffset+5,yOffset+2,textColor,fontSizeText);

      if(Stoch1_1>Stoch1_2)
        {
         SetObjText(chartId,preamble+"Label_W1_st1_Arrow",CharToStr(233),xOffset+stochOffset+25,yOffset+0,bullColor,fontSizeText);
        }
      else
        {
         SetObjText(chartId,preamble+"Label_W1_st1_Arrow",CharToStr(234),xOffset+stochOffset+25,yOffset+3,bearColor,fontSizeText);
        }

      Stoch2_1 = iStochastic(symbol, PERIOD_W1,kPeriod_2,dPeriod_2, Slowing_2, maMethod_2, priceField_2,MODE_MAIN,0);
      Stoch2_2 = iStochastic(symbol, PERIOD_W1,kPeriod_2,dPeriod_2, Slowing_2, maMethod_2, priceField_2,MODE_MAIN,1);
      panelName= preamble+"panel_W1_2_"+symbol;
      SetPanel(panelName,(int)chartId,xOffset+stochOffset+smallPanelWidth+smallPanelSpace,yOffset,smallPanelWidth,smallPanelheight,dbBackgroundColor,dbBorderColor,dbBorderWidth);

      labelName=preamble+"label_W1_2_"+symbol;
      SetText(chartId,labelName,IntegerToString((int) Stoch2_1),xOffset+stochOffset+smallPanelWidth+smallPanelSpace+5,yOffset+2,textColor,fontSizeText);

      if(Stoch2_1>Stoch2_2)
        {
         SetObjText(chartId,preamble+"Label_W1_st2_Arrow",CharToStr(233),xOffset+stochOffset+smallPanelWidth+smallPanelSpace+25,yOffset+0,bullColor,fontSizeText);
        }
      else
        {
         SetObjText(chartId,preamble+"Label_W1_st2_Arrow",CharToStr(234),xOffset+stochOffset+smallPanelWidth+smallPanelSpace+25,yOffset+3,bearColor,fontSizeText);
        }
      // check for cross
      Stoch1_1 = iStochastic(symbol, PERIOD_W1,kPeriod_1,dPeriod_1, Slowing_1, maMethod_1, priceField_1,MODE_MAIN,1);
      Stoch1_2 = iStochastic(symbol, PERIOD_W1,kPeriod_1,dPeriod_1, Slowing_1, maMethod_1, priceField_1,MODE_MAIN,2);
      Stoch1_3 = iStochastic(symbol, PERIOD_W1,kPeriod_1,dPeriod_1, Slowing_1, maMethod_1, priceField_1,MODE_MAIN,3);
      Stoch1_4 = iStochastic(symbol, PERIOD_W1,kPeriod_1,dPeriod_1, Slowing_1, maMethod_1, priceField_1,MODE_MAIN,4);

      Stoch2_1 = iStochastic(symbol, PERIOD_W1,kPeriod_2,dPeriod_2, Slowing_2, maMethod_2, priceField_2,MODE_MAIN,1);
      Stoch2_2 = iStochastic(symbol, PERIOD_W1,kPeriod_2,dPeriod_2, Slowing_2, maMethod_2, priceField_2,MODE_MAIN,2);
      Stoch2_3 = iStochastic(symbol, PERIOD_W1,kPeriod_2,dPeriod_2, Slowing_2, maMethod_2, priceField_2,MODE_MAIN,3);
      Stoch2_4 = iStochastic(symbol, PERIOD_W1,kPeriod_2,dPeriod_2, Slowing_2, maMethod_2, priceField_2,MODE_MAIN,4);
      Stoch2_5 = iStochastic(symbol, PERIOD_W1,kPeriod_2,dPeriod_2, Slowing_2, maMethod_2, priceField_2,MODE_MAIN,5);
      Stoch2_6 = iStochastic(symbol, PERIOD_W1,kPeriod_2,dPeriod_2, Slowing_2, maMethod_2, priceField_2,MODE_MAIN,6);

      Stoch3_1 = iStochastic(symbol, PERIOD_W1,kPeriod_3,dPeriod_3, Slowing_3, maMethod_3, priceField_3,MODE_MAIN,1);
      Stoch3_2 = iStochastic(symbol, PERIOD_W1,kPeriod_3,dPeriod_3, Slowing_3, maMethod_3, priceField_3,MODE_MAIN,2);

      panelName=preamble+"panel_8_21_Cross_W1";
      if(Stoch2_1>50 &&                                     //vid <50
         Stoch2_1<80    &&                                  //vid <80
         Stoch2_1<Stoch1_1 &&                               //vid0<gr0
         Stoch2_2>Stoch1_2 &&                               //vid0>gr0
         (Stoch1_2<50 ||  Stoch1_3<50 || Stoch1_4<50) &&    //gr0<50
         Stoch3_1>50                                        //
         )
        {
         //up cross
         SetPanel(panelName,0,xOffset+stochOffset-2,yOffset-2,2 *(smallPanelWidth+smallPanelSpace),smallPanelheight+4,clrBlack,clrLime,3);
          if(AlertOnW1 && MTF_NewBar0(PERIOD_W1))
           {
            Alert(TimeToStr(TimeCurrent(),TIME_DATE|TIME_MINUTES)+" "+symbol+" "+" W1 "+" 50 UP");
            if(SoundOn)
               PlaySound("alert.wav");
           }
        
        }
      else if(Stoch2_1<50 && //vid <50
         Stoch2_1>20 &&                                  // vid >20
         Stoch2_1>Stoch1_1 &&                            //vid0>gr0
         Stoch2_1<Stoch1_2 &&                            //vid0<gr0
         (Stoch1_2>50 || Stoch1_3>50 || Stoch1_4>50) && 
         Stoch3_1<50
         )
           {
            //down cross
            SetPanel(panelName,0,xOffset+stochOffset-2,yOffset-2,2 *(smallPanelWidth+smallPanelSpace),smallPanelheight+4,clrBlack,clrSalmon,3);
            if(AlertOnW1 && MTF_NewBar0(PERIOD_W1))
              {
               Alert(TimeToStr(TimeCurrent(),TIME_DATE|TIME_MINUTES)+" "+symbol+" "+" W1 "+" 50 DN");
               if(SoundOn)
                  PlaySound("alert.wav");
              }
           }
         else if(Stoch2_1>stochLowerlevel && 
            Stoch2_1<stochUpperlevel && // 80 > vid > 20
            Stoch2_1>Stoch2_2 && 
            Stoch2_2>Stoch2_3 && 
            Stoch2_3>Stoch2_4 && 
            Stoch2_4>Stoch2_5 && 
            Stoch2_5>Stoch2_6 && // vid kyla
            Stoch1_2<Stoch2_2 && 
            Stoch1_1>Stoch2_1)
              {
               //up cross
               SetPanel(panelName,0,xOffset+stochOffset-2,yOffset-2,2 *(smallPanelWidth+smallPanelSpace),smallPanelheight+4,clrBlack,clrDarkGreen,3);
               if(AlertXCrossW1 && MTF_NewBar1(PERIOD_W1))
                 {
                  Alert(TimeToStr(TimeCurrent(),TIME_DATE|TIME_MINUTES)+" "+symbol+" "+" W1 "+" X Cross UP");
                  if(SoundOn)
                     PlaySound("alert.wav");
                 }
              }

            else if(Stoch2_1>stochLowerlevel && Stoch2_1<stochUpperlevel && // 80 > vid > 20
               Stoch2_1<Stoch2_2 && 
               Stoch2_2<Stoch2_3 && 
               Stoch2_3<Stoch2_4 && 
               Stoch2_4<Stoch2_5 && 
               Stoch2_5<Stoch2_6 && // vid krenta
               Stoch1_2>Stoch2_2 && 
               Stoch1_1<Stoch2_1)
                 {
                  //down cross
                  SetPanel(panelName,0,xOffset+stochOffset-2,yOffset-2,2 *(smallPanelWidth+smallPanelSpace),smallPanelheight+4,clrBlack,clrRed,3);
                  if(AlertXCrossW1 && MTF_NewBar1(PERIOD_W1))
                    {
                     Alert(TimeToStr(TimeCurrent(),TIME_DATE|TIME_MINUTES)+" "+symbol+" "+" W1 "+" X Cross DN");
                     if(SoundOn)
                        PlaySound("alert.wav");
                    }
                 }
               else     ObjectDelete(panelName);

      Stoch3_1 = iStochastic(symbol, PERIOD_W1,kPeriod_3,dPeriod_3, Slowing_3, maMethod_3, priceField_3,MODE_MAIN,0);
      Stoch3_2 = iStochastic(symbol, PERIOD_W1,kPeriod_3,dPeriod_3, Slowing_3, maMethod_3, priceField_3,MODE_MAIN,1);
      panelName= preamble+"panel_W1_3_"+symbol;
      SetPanel(panelName,(int)chartId,xOffset+stochOffset+2 *(smallPanelWidth+smallPanelSpace),yOffset,smallPanelWidth,smallPanelheight,dbBackgroundColor,dbBorderColor,dbBorderWidth);
      labelName=preamble+"label_W1_3_"+symbol;
      SetText(chartId,labelName,IntegerToString((int) Stoch3_1),xOffset+stochOffset+2 *(smallPanelWidth+smallPanelSpace)+5,yOffset+2,textColor,fontSizeText);

      if(Stoch3_1>Stoch3_2)
        {
         SetObjText(chartId,preamble+"Label_W1_st3_Arrow",CharToStr(233),xOffset+stochOffset+2 *(smallPanelWidth+smallPanelSpace)+25,yOffset+0,bullColor,fontSizeText);
        }
      else
        {
         SetObjText(chartId,preamble+"Label_W1_st3_Arrow",CharToStr(234),xOffset+stochOffset+2 *(smallPanelWidth+smallPanelSpace)+25,yOffset+3,bearColor,fontSizeText);
        }

      labelName=labelName=preamble+"label_W1_Circle_"+symbol;
      if(Stoch1_1>80 && Stoch2_1>80 && Stoch3_1>80)
        {
         SetObjText(chartId,labelName,CharToStr(110),xOffset+stochOffset+3 *(smallPanelWidth+smallPanelSpace)+5,yOffset+3,bearColor,fontSizeText);
        }
      else if(Stoch1_1<20 && Stoch2_1<20 && Stoch3_1<20)
        {
         SetObjText(chartId,labelName,CharToStr(110),xOffset+stochOffset+3 *(smallPanelWidth+smallPanelSpace)+5,yOffset+3,bullColor,fontSizeText);
        }
      else
        {
         SetObjText(chartId,labelName,CharToStr(20),xOffset+stochOffset+3 *(smallPanelWidth+smallPanelSpace)+5,yOffset+3,dbBackgroundColor,fontSizeText);
        }

      //rsioma
      tmpValue_7 = iCustom(symbol,PERIOD_W1,"RSIOMA Light", 14, 1, 0, 21, 1, 0, 0);
      tmpValue_8 = iCustom(symbol,PERIOD_W1,"RSIOMA Light", 14, 1, 0, 21, 1, 0, 1);
      panelName=preamble+"panel_M1_w1_"+symbol;
      SetPanel(panelName,(int)chartId,xOffset+stochOffset+3 *(smallPanelWidth+smallPanelSpace)+xInBetween,yOffset,smallPanelWidth,smallPanelheight,dbBackgroundColor,dbBorderColor,dbBorderWidth);
      labelName=preamble+"label_M1_w1_"+symbol;
      SetText(chartId,labelName,IntegerToString((int)tmpValue_7),xOffset+stochOffset+3 *(smallPanelWidth+smallPanelSpace)+5+xInBetween,yOffset+2,textColor,fontSizeText);

      if(tmpValue_7>tmpValue_8)
        {
         SetObjText(chartId,preamble+"Label_w1_rsioma_Arrow",CharToStr(233),xOffset+stochOffset+3 *(smallPanelWidth+smallPanelSpace)+25+xInBetween,yOffset+0,bullColor,fontSizeText);
        }
      else
        {
         SetObjText(chartId,preamble+"Label_w1_rsioma_Arrow",CharToStr(234),xOffset+stochOffset+3 *(smallPanelWidth+smallPanelSpace)+25+xInBetween,yOffset+3,bearColor,fontSizeText);
        }

      //

      // dds
      tmpValue_9=iCustom(symbol,PERIOD_W1,"DDS",8,13,9,0,0);
      tmpValue_10 = iCustom(symbol,PERIOD_W1,"DDS", 8, 13, 9, 0, 1);
      tmpValue_11 = iCustom(symbol,PERIOD_W1,"DDS", 8, 13, 9, 0, 2);
      tmpValue_12 = iCustom(symbol,PERIOD_W1,"DDS", 8, 13, 9, 1, 1);
      tmpValue_13 = iCustom(symbol,PERIOD_W1,"DDS", 8, 13, 9, 1, 2);
      panelName=preamble+"panel_W1_dds_"+symbol;
      //SetPanel(panelName,chartId, xOffset + stochOffset + 4 * (smallPanelWidth + smallPanelSpace) + xInBetween, yOffset, smallPanelWidth, smallPanelheight,dbBackgroundColor, dbBorderColor, dbBorderWidth);
      labelName=preamble+"label_W1_dds_"+symbol;
      if(tmpValue_10>tmpValue_12 && tmpValue_11<tmpValue_13)
        {
         SetPanel(panelName,(int)chartId,xOffset+stochOffset+4 *(smallPanelWidth+smallPanelSpace)+xInBetween,yOffset,smallPanelWidth,smallPanelheight,dbBackgroundColor,clrLime,dbBorderWidth+1);
        }
      else if(tmpValue_10<tmpValue_12 && tmpValue_11>tmpValue_13)
        {
         SetPanel(panelName,(int)chartId,xOffset+stochOffset+4 *(smallPanelWidth+smallPanelSpace)+xInBetween,yOffset,smallPanelWidth,smallPanelheight,dbBackgroundColor,clrRed,dbBorderWidth+1);
        }
      else
        {
         SetPanel(panelName,(int)chartId,xOffset+stochOffset+4 *(smallPanelWidth+smallPanelSpace)+xInBetween,yOffset,smallPanelWidth,smallPanelheight,dbBackgroundColor,dbBorderColor,dbBorderWidth);
        }
      SetText(chartId,labelName,IntegerToString((int)tmpValue_9),xOffset+stochOffset+4 *(smallPanelWidth+smallPanelSpace)+5+xInBetween,yOffset+2,textColor,fontSizeText);

      if(tmpValue_9>tmpValue_10)
        {
         SetObjText(chartId,preamble+"Label_w1_dds_Arrow",CharToStr(233),xOffset+stochOffset+4 *(smallPanelWidth+smallPanelSpace)+25+xInBetween,yOffset+0,bullColor,fontSizeText);
        }
      else
        {
         SetObjText(chartId,preamble+"Label_w1_dds_Arrow",CharToStr(234),xOffset+stochOffset+4 *(smallPanelWidth+smallPanelSpace)+25+xInBetween,yOffset+4,bearColor,fontSizeText);
        }

      //end dds

      // check DDS and RSIOMA opposite values 15 and 85
      panelName=preamble+"panel_RsiOma_DDS_Cross_W1";
      if(tmpValue_8>(100-RsiOma_DDS_Opposite) && tmpValue_10<RsiOma_DDS_Opposite)
        {
         SetPanel(panelName,0,xOffset+stochOffset+3 *(smallPanelWidth+smallPanelSpace)+xInBetween-2,yOffset-2,2 *(smallPanelWidth+smallPanelSpace),smallPanelheight+4,clrBlack,clrLime,2);
        }
      else if(tmpValue_8<RsiOma_DDS_Opposite && tmpValue_10>(100-RsiOma_DDS_Opposite))
        {
         SetPanel(panelName,0,xOffset+stochOffset+3 *(smallPanelWidth+smallPanelSpace)+xInBetween-2,yOffset-2,2 *(smallPanelWidth+smallPanelSpace),smallPanelheight+4,clrBlack,clrRed,2);
        }
      else
        {
         ObjectDelete(panelName);
        }

      //adx

      double val1 = iADX(symbol,PERIOD_W1,7, PRICE_CLOSE, MODE_MAIN, 0);
      double val2 = iADX(symbol,PERIOD_W1,7, PRICE_CLOSE, MODE_MAIN,  1);
      double dmip = iADX(symbol,PERIOD_W1,7, PRICE_CLOSE, MODE_PLUSDI, 0);
      double dmim = iADX(symbol,PERIOD_W1,7, PRICE_CLOSE, MODE_MINUSDI, 0);

      double val1_21 = iADX(symbol,PERIOD_W1,21, PRICE_CLOSE, MODE_MAIN, 0);
      double val2_21 = iADX(symbol,PERIOD_W1,21, PRICE_CLOSE, MODE_MAIN,  1);
      double dmip_21 = iADX(symbol,PERIOD_W1,21, PRICE_CLOSE, MODE_PLUSDI, 0);
      double dmim_21 = iADX(symbol,PERIOD_W1,21, PRICE_CLOSE, MODE_MINUSDI, 0);

      double val1_42 = iADX(symbol,PERIOD_W1,42, PRICE_CLOSE, MODE_MAIN, 0);
      double val2_42 = iADX(symbol,PERIOD_W1,42, PRICE_CLOSE, MODE_MAIN,  1);
      double dmip_42 = iADX(symbol,PERIOD_W1,42, PRICE_CLOSE, MODE_PLUSDI, 0);
      double dmim_42 = iADX(symbol,PERIOD_W1,42, PRICE_CLOSE, MODE_MINUSDI, 0);

      double val1_89 = iADX(symbol,PERIOD_W1,89, PRICE_CLOSE, MODE_MAIN, 0);
      double val2_89 = iADX(symbol,PERIOD_W1,89, PRICE_CLOSE, MODE_MAIN,  1);
      double dmip_89 = iADX(symbol,PERIOD_W1,89, PRICE_CLOSE, MODE_PLUSDI, 0);
      double dmim_89 = iADX(symbol,PERIOD_W1,89, PRICE_CLOSE, MODE_MINUSDI, 0);

      double val1_144 = iADX(symbol,PERIOD_W1,144, PRICE_CLOSE, MODE_MAIN, 0);
      double val2_144 = iADX(symbol,PERIOD_W1,144, PRICE_CLOSE, MODE_MAIN,  1);
      double dmip_144 = iADX(symbol,PERIOD_W1,144, PRICE_CLOSE, MODE_PLUSDI, 0);
      double dmim_144 = iADX(symbol,PERIOD_W1,144, PRICE_CLOSE, MODE_MINUSDI, 0);

      panelName=preamble+"panel_w1_ADX_"+symbol;
      SetPanel(panelName,(int)chartId,xOffset+stochOffset+5 *(smallPanelWidth+smallPanelSpace)+xInBetween,yOffset,smallPanelWidth,smallPanelheight,dbBackgroundColor,dbBorderColor,dbBorderWidth);
      labelName=preamble+"label_w1_ADX_"+symbol;
      // SetText(chartId, labelName,IntegerToString((int)val1),xOffset + stochOffset + 5 * (smallPanelWidth + smallPanelSpace) + 5, yOffset + 2, textColor, fontSizeText);

      if((val1>val2) && (dmip>dmim) && (val1_21>val2_21) && (dmip_21>dmim_21) && (val1_42>val2_42) && (dmip_42>dmim_42) && (val1_89>val2_89) && (dmip_89>dmim_89) && (val1_144>val2_144) && (dmip_144>dmim_144))
        {
         SetObjText(chartId,preamble+"Label_W1_ADX_Arrow1",CharToStr(233),xOffset+stochOffset+5 *(smallPanelWidth+smallPanelSpace)+25+xInBetween,yOffset+0,bullColor,fontSizeText);
        }
      else if((val1>val2) && (dmip<dmim) && (val1_21>val2_21) && (dmip_21<dmim_21) && (val1_42>val2_42) && (dmip_42<dmim_42) && (val1_89>val2_89) && (dmip_89<dmim_89) && (val1_144>val2_144) && (dmip_144<dmim_144))
        {
         SetObjText(chartId,preamble+"Label_W1_ADX_Arrow1",CharToStr(234),xOffset+stochOffset+5 *(smallPanelWidth+smallPanelSpace)+25+xInBetween,yOffset+4,bearColor,fontSizeText);
        }
      else
        {
         SetObjText(chartId,preamble+"Label_W1_ADX_Arrow1",CharToStr(108),xOffset+stochOffset+5 *(smallPanelWidth+smallPanelSpace)+25+xInBetween,yOffset+4,flatColor,fontSizeText);
        }
     }

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
//---
//double support_C,resistance_C;
   int pips;

   int sym_i=Sym;
   string sym_s=EnumToString(Sym);
   symbol=SymAndPrefix(sym_s,Symbol_Prefix);

//calculate_RS(Symbol(), timeFrame, support, resistance, support_C, resistance_C, 3);

   if(id==CHARTEVENT_OBJECT_CLICK)
     {
      //Alert(strButton);
      //Alert(sparam);
      if(sparam==objectpreamble+"panel_")
        {
         //Alert("hier");
         if(!showPips)
           {
            showPips=true;
            ObjectSetInteger(0,strButton,OBJPROP_STATE,0);
            ObjectSetString(0,strButton,OBJPROP_TEXT,"Pips");
            //calculate and show
            calculate_RS(symbol,timeFrame,supp,ress,supp_c,ress_c,3);
            //Alert(supp + "  " +  ress + "  " +  supp_c + "  " +  ress_c);
            if(supp!=0)
              {
               pips=(int)((MarketInfo(symbol,MODE_BID)-supp)*myMultiplier);
               SetText(0,strSupport,"S: "+IntegerToString(pips),xAnchor+170,yAnchor+fontSizeText+5,textColor,fontSizeText);
              }
            if(supp_c!=0)
              {
               pips=(int)((MarketInfo(symbol,MODE_BID)-supp_c)*myMultiplier);
               SetText(0,strSupport,"S: "+IntegerToString(pips),xAnchor+170,yAnchor+fontSizeText+5,textColor,fontSizeText);
              }
            if(ress!=0)
              {
               pips=(int)(-(MarketInfo(symbol,MODE_BID)-ress)*myMultiplier);
               SetText(0,strResistance,"R: "+IntegerToString(pips),xAnchor+240,yAnchor+fontSizeText+5,textColor,fontSizeText);
              }
            if(ress_c!=0)
              {
               pips=(int)(-(MarketInfo(symbol,MODE_BID)-ress_c)*myMultiplier);
               SetText(0,strResistance,"R: "+IntegerToString(pips),xAnchor+240,yAnchor+fontSizeText+5,textColor,fontSizeText);
              }
           }
         else
           {
            showPips=false;
            ObjectSetInteger(0,strButton,OBJPROP_STATE,0);
            ObjectSetString(0,strButton,OBJPROP_TEXT,"Value");
            //calculate and show
            calculate_RS(symbol,timeFrame,supp,ress,supp_c,ress_c,3);
            if(supp!=0)
              {
               SetText(0,strSupport,"S: "+DoubleToStr(supp,(int)myDigits),xAnchor+170,yAnchor+fontSizeText+5,textColor,fontSizeText);
              }
            if(supp_c!=0)
              {
               SetText(0,strSupport,"S: "+DoubleToStr(supp_c,(int)myDigits),xAnchor+170,yAnchor+fontSizeText+5,textColor,fontSizeText);
              }
            if(ress!=0)
              {
               SetText(0,strResistance,"R: "+DoubleToStr(ress,(int)myDigits),xAnchor+240,yAnchor+fontSizeText+5,textColor,fontSizeText);
              }
            if(ress_c!=0)
              {
               SetText(0,strResistance,"R: "+DoubleToStr(ress_c,(int)myDigits),xAnchor+240,yAnchor+fontSizeText+5,textColor,fontSizeText);
              }
           }

        }

     }

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+

void SetObjText(long chart_id,string name,string CharToStr,int x,int y,color colour,int fontsize=12)
  {
   if(ObjectFind(0,name)<0)
      ObjectCreate(0,name,OBJ_LABEL,(int)chart_id,0,0);
   ObjectSetInteger(0,name,OBJPROP_FONTSIZE,fontsize);
   ObjectSetInteger(0,name,OBJPROP_COLOR,colour);
   ObjectSetInteger(0,name,OBJPROP_BACK,false);
   ObjectSetInteger(0,name,OBJPROP_XDISTANCE,x);
   ObjectSetInteger(0,name,OBJPROP_YDISTANCE,y);
   ObjectSetString(0,name,OBJPROP_TEXT,CharToStr);
   ObjectSetString(0,name,OBJPROP_FONT,"Wingdings");
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void SetText(long chart_id,string name,string text,int x,int y,color colour,int fontsize)
  {
   if(ObjectFind(0,name)<0)
      ObjectCreate(0,name,OBJ_LABEL,(int)chart_id,0,0);
   ObjectSetInteger(0,name,OBJPROP_XDISTANCE,x);
   ObjectSetInteger(0,name,OBJPROP_YDISTANCE,y);
   ObjectSetInteger(0,name,OBJPROP_COLOR,colour);
   ObjectSetInteger(0,name,OBJPROP_FONTSIZE,fontsize);
   ObjectSetInteger(0,name,OBJPROP_CORNER,CORNER_LEFT_UPPER);
   ObjectSetString(0,name,OBJPROP_FONT,"Arial");
   ObjectSetString(0,name,OBJPROP_TEXT,text);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void SetPanel(string name,int chart_id,int x,int y,int width,int height,color bg_color,color border_clr,int border_width)
  {
   if(ObjectFind(0,name)<0) ObjectCreate(0,name,OBJ_RECTANGLE_LABEL,chart_id,0,0);
   ObjectSetInteger(0,name,OBJPROP_XDISTANCE,x);
   ObjectSetInteger(0,name,OBJPROP_YDISTANCE,y);
   ObjectSetInteger(0,name,OBJPROP_XSIZE,width);
   ObjectSetInteger(0,name,OBJPROP_YSIZE,height);
   ObjectSetInteger(0,name,OBJPROP_COLOR,border_clr);
   ObjectSetInteger(0,name,OBJPROP_BORDER_TYPE,BORDER_FLAT);
   ObjectSetInteger(0,name,OBJPROP_WIDTH,border_width);
   ObjectSetInteger(0,name,OBJPROP_CORNER,CORNER_LEFT_UPPER);
   ObjectSetInteger(0,name,OBJPROP_STYLE,STYLE_SOLID);
   ObjectSetInteger(0,name,OBJPROP_BACK,true);
   ObjectSetInteger(0,name,OBJPROP_SELECTABLE,false);
   ObjectSetInteger(0,name,OBJPROP_SELECTED,false);
   ObjectSetInteger(0,name,OBJPROP_HIDDEN,true);
   ObjectSetInteger(0,name,OBJPROP_ZORDER,0);
   ObjectSetInteger(0,name,OBJPROP_BGCOLOR,bg_color);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void Create_Button(string but_name,string label,int xsize,int ysize,int xdist,int ydist,int bcolor,int fcolor)
  {
   if(ObjectFind(0,but_name)<0)
     {
      if(!ObjectCreate(0,but_name,OBJ_BUTTON,0,0,0))
        {
         Print(__FUNCTION__,
               ": failed to create the button! Error code = ",GetLastError());
         return;
        }
      ObjectSetString(0,but_name,OBJPROP_TEXT,label);
      ObjectSetInteger(0,but_name,OBJPROP_XSIZE,xsize);
      ObjectSetInteger(0,but_name,OBJPROP_YSIZE,ysize);
      ObjectSetInteger(0,but_name,OBJPROP_CORNER,CORNER_LEFT_UPPER);
      ObjectSetInteger(0,but_name,OBJPROP_XDISTANCE,xdist);
      ObjectSetInteger(0,but_name,OBJPROP_YDISTANCE,ydist);
      ObjectSetInteger(0,but_name,OBJPROP_BGCOLOR,bcolor);
      ObjectSetInteger(0,but_name,OBJPROP_COLOR,fcolor);
      ObjectSetInteger(0,but_name,OBJPROP_FONTSIZE,8);
      ObjectSetInteger(0,but_name,OBJPROP_HIDDEN,true);
      ObjectSetInteger(0,but_name,OBJPROP_SELECTABLE,true);
      //ObjectSetInteger(0,but_name,OBJPROP_BORDER_COLOR,ChartGetInteger(0,CHART_COLOR_FOREGROUND));
      ObjectSetInteger(0,but_name,OBJPROP_BORDER_TYPE,BORDER_RAISED);
      ChartRedraw();
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void calculate_RS(string _pair,int _tf,double &supp,double &ress,double &supp_C,double &ress_C,int _lb=3)
  {

   set_prevBarTime(PERIOD_M1,NULL);
   set_prevBarTime(PERIOD_M5,NULL);
   set_prevBarTime(PERIOD_M15,NULL);
   set_prevBarTime(PERIOD_M30,NULL);
   set_prevBarTime(PERIOD_H1,NULL);
   set_prevBarTime(PERIOD_H4,NULL);
   set_prevBarTime(PERIOD_D1,NULL);
   set_prevBarTime(PERIOD_W1,NULL);
   set_prevBarTime(PERIOD_MN1,NULL);

   int maxBarsForPeriod=1000;
   double sup,res,supc,resc;
   if( get_prevBarTime( _tf ) == NULL || get_prevBarTime( _tf ) != iTime( _pair, _tf, 0 ) ||
      get_prevBarCount( _tf ) == NULL || get_prevBarCount( _tf ) != iBars( _pair, _tf ) )
     {
      set_prevBarTime(_tf,iTime(_pair,_tf,0));
      set_prevBarCount(_tf,iBars(_pair,_tf));
     }
   else return;

   int numBars=iBars(_pair,_tf);
   if(maxBarsForPeriod>0 && numBars>maxBarsForPeriod) numBars=maxBarsForPeriod;
   int TLBBuffShift=0;
   int limit=numBars;

   emulate_tlbmaxmin(_tf,numBars);

   int i,j;
   j=1;
   while(iClose(_pair,_tf,limit-1)==iClose(_pair,_tf,limit-1-j))
     {
      j++;
      if(j>limit-1)
         break;
     }

   if(iClose(_pair,_tf,limit-1)>iClose(_pair,_tf,limit-1-j))
     {
      set_max(_tf,0,iClose(_pair,_tf,limit-1));
      set_min(_tf,0,iClose(_pair,_tf,limit-1-j));
     }
   if(iClose(_pair,_tf,limit-1)<iClose(_pair,_tf,limit-1-j))
     {
      set_max(_tf,0,iClose(_pair,_tf,limit-1-j));
      set_min(_tf,0,iClose(_pair,_tf,limit-1));
     }

   for(i=1; i<_lb; i++)
     {
      while(iClose(_pair,_tf,limit-j)<=Diap(_tf,true,i,TLBBuffShift) && iClose(_pair,_tf,limit-j)>=Diap(_tf,false,i,TLBBuffShift))
        {
         j++;

         if(j>limit-1)
            break;
        }
      if(j>limit-1)
         break;

      if(iClose(_pair,_tf,limit-j)>get_max(_tf,i-1))
        {
         set_max(_tf,i,iClose(_pair,_tf,limit-j));
         set_min(_tf,i,get_max(_tf,i-1));
         TLBBuffShift++;
        }
      if(iClose(_pair,_tf,limit-j)<get_min(_tf,i-1))
        {
         set_min(_tf,i,iClose(_pair,_tf,limit-j));
         set_max(_tf,i,get_min(_tf,i-1));
         TLBBuffShift++;
        }
     }

   for(i=_lb; i<limit; i++)
     {
      while(iClose(_pair,_tf,limit-j)<=Diap(_tf,true,_lb,TLBBuffShift) && iClose(_pair,_tf,limit-j)>=Diap(_tf,false,_lb,TLBBuffShift))
        {
         j++;
         if(j>limit-1)
            break;
        }
      if(j>limit-1)
         break;

      if(iClose(_pair,_tf,limit-j)>get_max(_tf,i-1))
        {
         set_max(_tf,i,iClose(_pair,_tf,limit-j));
         set_min(_tf,i,get_max(_tf,i-1));
         TLBBuffShift++;
        }
      if(iClose(_pair,_tf,limit-j)<get_min(_tf,i-1))
        {
         set_min(_tf,i,iClose(_pair,_tf,limit-j));
         set_max(_tf,i,get_min(_tf,i-1));
         TLBBuffShift++;
        }
     }

   sup=0; res=0; supc=0; resc=0;
   int redCnt=0,blueCnt=0;
   int numObj= 0;
   for(i=1; i<=TLBBuffShift; i++)
     {
      if(get_max(_tf,i)>get_max(_tf,i-1))
        {
         if(blueCnt>=_lb)
            sup=get_max(_tf,i-_lb);
         else
            sup=get_min(_tf,i-blueCnt-1);

         resc = get_max( _tf, i );
         supc = 0;
         res=0;

         blueCnt++;
         redCnt=0;
        }
      if(get_max(_tf,i)<get_max(_tf,i-1))
        {
         if(redCnt>=_lb)
            res=get_min(_tf,i-_lb);
         else
            res=get_max(_tf,i-redCnt-1);

         supc= get_min(_tf,i);
         sup = 0;
         resc= 0;

         blueCnt=0;
         redCnt++;
        }

     }

   if(sup>0.0)
      supp=sup;
   else
      supp=0;

   if(res>0.0)
      ress=res;
   else
      ress=res;;

   if(supc>0.0)
      supp_C=supc;
   else
      supp_C=0;

   if(resc>0.0)
      ress_C=resc;
   else
      ress_C=resc;

  }

double TLBMax_M01[];
double TLBMax_M05[];
double TLBMax_M15[];
double TLBMax_M30[];
double TLBMax_H01[];
double TLBMax_H04[];
double TLBMax_D01[];
double TLBMax_W01[];
double TLBMax_MN1[];

double TLBMin_M01[];
double TLBMin_M05[];
double TLBMin_M15[];
double TLBMin_M30[];
double TLBMin_H01[];
double TLBMin_H04[];
double TLBMin_D01[];
double TLBMin_W01[];
double TLBMin_MN1[];

static datetime prevBarCount_M01 = NULL;
static datetime prevBarCount_M05 = NULL;
static datetime prevBarCount_M15 = NULL;
static datetime prevBarCount_M30 = NULL;
static datetime prevBarCount_H01 = NULL;
static datetime prevBarCount_H04 = NULL;
static datetime prevBarCount_D01 = NULL;
static datetime prevBarCount_W01 = NULL;
static datetime prevBarCount_MN1 = NULL;

static datetime prevBarTime_M01 = NULL;
static datetime prevBarTime_M05 = NULL;
static datetime prevBarTime_M15 = NULL;
static datetime prevBarTime_M30 = NULL;
static datetime prevBarTime_H01 = NULL;
static datetime prevBarTime_H04 = NULL;
static datetime prevBarTime_D01 = NULL;
static datetime prevBarTime_W01 = NULL;
static datetime prevBarTime_MN1 = NULL;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void set_prevBarTime(int mt4Period,datetime value)
  {
   switch(mt4Period)
     {
      case PERIOD_M1:  { prevBarTime_M01 = value; break; }
      case PERIOD_M5:  { prevBarTime_M05 = value; break; }
      case PERIOD_M15: { prevBarTime_M15 = value; break; }
      case PERIOD_M30: { prevBarTime_M30 = value; break; }
      case PERIOD_H1:  { prevBarTime_H01 = value; break; }
      case PERIOD_H4:  { prevBarTime_H04 = value; break; }
      case PERIOD_D1:  { prevBarTime_D01 = value; break; }
      case PERIOD_W1:  { prevBarTime_W01 = value; break; }
      case PERIOD_MN1: { prevBarTime_MN1 = value; break; }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
datetime get_prevBarTime(int mt4Period)
  {
   switch(mt4Period)
     {
      case PERIOD_M1:  { return (prevBarTime_M01); break; }
      case PERIOD_M5:  { return (prevBarTime_M05); break; }
      case PERIOD_M15: { return (prevBarTime_M15); break; }
      case PERIOD_M30: { return (prevBarTime_M30); break; }
      case PERIOD_H1:  { return (prevBarTime_H01); break; }
      case PERIOD_H4:  { return (prevBarTime_H04); break; }
      case PERIOD_D1:  { return (prevBarTime_D01); break; }
      case PERIOD_W1:  { return (prevBarTime_W01); break; }
      case PERIOD_MN1: { return (prevBarTime_MN1); break; }
     }

   return 0;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void set_prevBarCount(int mt4Period,int value)
  {
   switch(mt4Period)
     {
      case PERIOD_M1:  { prevBarCount_M01 = value; break; }
      case PERIOD_M5:  { prevBarCount_M05 = value; break; }
      case PERIOD_M15: { prevBarCount_M15 = value; break; }
      case PERIOD_M30: { prevBarCount_M30 = value; break; }
      case PERIOD_H1:  { prevBarCount_H01 = value; break; }
      case PERIOD_H4:  { prevBarCount_H04 = value; break; }
      case PERIOD_D1:  { prevBarCount_D01 = value; break; }
      case PERIOD_W1:  { prevBarCount_W01 = value; break; }
      case PERIOD_MN1: { prevBarCount_MN1 = value; break; }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int get_prevBarCount(int mt4Period)
  {
   switch(mt4Period)
     {
      case PERIOD_M1:  { return ((int)prevBarCount_M01); break; }
      case PERIOD_M5:  { return ((int)prevBarCount_M05); break; }
      case PERIOD_M15: { return ((int)prevBarCount_M15); break; }
      case PERIOD_M30: { return ((int)prevBarCount_M30); break; }
      case PERIOD_H1:  { return ((int)prevBarCount_H01); break; }
      case PERIOD_H4:  { return ((int)prevBarCount_H04); break; }
      case PERIOD_D1:  { return ((int)prevBarCount_D01); break; }
      case PERIOD_W1:  { return ((int)prevBarCount_W01); break; }
      case PERIOD_MN1: { return ((int)prevBarCount_MN1); break; }
     }

   return -1;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void set_max(int mt4Period,int shift,double value)
  {
   switch(mt4Period)
     {
      case PERIOD_M1:  { TLBMax_M01[ shift ] = value; break; }
      case PERIOD_M5:  { TLBMax_M05[ shift ] = value; break; }
      case PERIOD_M15: { TLBMax_M15[ shift ] = value; break; }
      case PERIOD_M30: { TLBMax_M30[ shift ] = value; break; }
      case PERIOD_H1:  { TLBMax_H01[ shift ] = value; break; }
      case PERIOD_H4:  { TLBMax_H04[ shift ] = value; break; }
      case PERIOD_D1:  { TLBMax_D01[ shift ] = value; break; }
      case PERIOD_W1:  { TLBMax_W01[ shift ] = value; break; }
      case PERIOD_MN1: { TLBMax_MN1[ shift ] = value; break; }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double get_max(int mt4Period,int shift)
  {
   switch(mt4Period)
     {
      case PERIOD_M1:  { return(TLBMax_M01[ shift ]); break; }
      case PERIOD_M5:  { return(TLBMax_M05[ shift ]); break; }
      case PERIOD_M15: { return(TLBMax_M15[ shift ]); break; }
      case PERIOD_M30: { return(TLBMax_M30[ shift ]); break; }
      case PERIOD_H1:  { return(TLBMax_H01[ shift ]); break; }
      case PERIOD_H4:  { return(TLBMax_H04[ shift ]); break; }
      case PERIOD_D1:  { return(TLBMax_D01[ shift ]); break; }
      case PERIOD_W1:  { return(TLBMax_W01[ shift ]); break; }
      case PERIOD_MN1: { return(TLBMax_MN1[ shift ]); break; }
     }
   return -1.0;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void set_min(int mt4Period,int shift,double value)
  {
   switch(mt4Period)
     {
      case PERIOD_M1:  { TLBMin_M01[ shift ] = value; break; }
      case PERIOD_M5:  { TLBMin_M05[ shift ] = value; break; }
      case PERIOD_M15: { TLBMin_M15[ shift ] = value; break; }
      case PERIOD_M30: { TLBMin_M30[ shift ] = value; break; }
      case PERIOD_H1:  { TLBMin_H01[ shift ] = value; break; }
      case PERIOD_H4:  { TLBMin_H04[ shift ] = value; break; }
      case PERIOD_D1:  { TLBMin_D01[ shift ] = value; break; }
      case PERIOD_W1:  { TLBMin_W01[ shift ] = value; break; }
      case PERIOD_MN1: { TLBMin_MN1[ shift ] = value; break; }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double get_min(int mt4Period,int shift)
  {
   switch(mt4Period)
     {
      case PERIOD_M1:  { return(TLBMin_M01[ shift ]); break; }
      case PERIOD_M5:  { return(TLBMin_M05[ shift ]); break; }
      case PERIOD_M15: { return(TLBMin_M15[ shift ]); break; }
      case PERIOD_M30: { return(TLBMin_M30[ shift ]); break; }
      case PERIOD_H1:  { return(TLBMin_H01[ shift ]); break; }
      case PERIOD_H4:  { return(TLBMin_H04[ shift ]); break; }
      case PERIOD_D1:  { return(TLBMin_D01[ shift ]); break; }
      case PERIOD_W1:  { return(TLBMin_W01[ shift ]); break; }
      case PERIOD_MN1: { return(TLBMin_MN1[ shift ]); break; }
     }
   return -1.0;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void emulate_tlbmaxmin(int mt4Period,int numBars)
  {
   switch(mt4Period)
     {
      case PERIOD_M1:  { EmulateDoubleBuffer(TLBMax_M01, numBars ); EmulateDoubleBuffer(TLBMin_M01, numBars ); break; }
      case PERIOD_M5:  { EmulateDoubleBuffer(TLBMax_M05, numBars ); EmulateDoubleBuffer(TLBMin_M05, numBars ); break; }
      case PERIOD_M15: { EmulateDoubleBuffer(TLBMax_M15, numBars ); EmulateDoubleBuffer(TLBMin_M15, numBars ); break; }
      case PERIOD_M30: { EmulateDoubleBuffer(TLBMax_M30, numBars ); EmulateDoubleBuffer(TLBMin_M30, numBars ); break; }
      case PERIOD_H1:  { EmulateDoubleBuffer(TLBMax_H01, numBars ); EmulateDoubleBuffer(TLBMin_H01, numBars ); break; }
      case PERIOD_H4:  { EmulateDoubleBuffer(TLBMax_H04, numBars ); EmulateDoubleBuffer(TLBMin_H04, numBars ); break; }
      case PERIOD_D1:  { EmulateDoubleBuffer(TLBMax_D01, numBars ); EmulateDoubleBuffer(TLBMin_D01, numBars ); break; }
      case PERIOD_W1:  { EmulateDoubleBuffer(TLBMax_W01, numBars ); EmulateDoubleBuffer(TLBMin_W01, numBars ); break; }
      case PERIOD_MN1: { EmulateDoubleBuffer(TLBMax_MN1, numBars ); EmulateDoubleBuffer(TLBMin_MN1, numBars ); break; }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double Diap(int mt4Period,bool up,int C,int shift)
  {
   int i;
   double MM;
   if(up)
     {
      MM=get_max(mt4Period,shift);
      for(i=1; i<C; i++)
         if(get_max(mt4Period,shift-i)>MM)
            MM=get_max(mt4Period,shift-i);
     }
   if(!up)
     {
      MM=get_min(mt4Period,shift);
      for(i=1; i<C; i++)
         if(get_min(mt4Period,shift-i)<MM)
            MM=get_min(mt4Period,shift-i);
     }
   return(MM);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void EmulateDoubleBuffer(double &buffer[],int numBars)
  {
//---- INDICATOR BUFFERS EMULATION
   if(ArraySize(buffer)<numBars)
     {
      ArraySetAsSeries(buffer,false);
      //----  
      ArrayResize(buffer,numBars);
      //----
      ArraySetAsSeries(buffer,true);
     }
  }
//+------------------------------------------------------------------+
bool MTF_NewBar0(int f_tf)
  {
   int tfIndex=-1;

//----
   switch(f_tf)
     {
      case 1    : tfIndex = 0; break;
      case 5    : tfIndex = 1; break;
      case 15   : tfIndex = 2; break;
      case 30   : tfIndex = 3; break;
      case 60   : tfIndex = 4; break;
      case 240  : tfIndex = 5; break;
      case 1440 : tfIndex = 6; break;
      case 10080: tfIndex = 7; break;
      default   : tfIndex =-1; break;
     }

   static int LastBar[8]={0,0,0,0,0,0,0,0};
   datetime curbar=iTime(Symbol(),f_tf,0);
   if(LastBar[tfIndex]!=curbar)
     {
      LastBar[tfIndex]=curbar;
      return (true);
     }
   else
     {
      return(false);
     }
  }
//+------------------------------------------------------------------+
bool MTF_NewBar1(int f_tf)
  {
   int tfIndex=-1;

//----
   switch(f_tf)
     {
      case 1    : tfIndex = 0; break;
      case 5    : tfIndex = 1; break;
      case 15   : tfIndex = 2; break;
      case 30   : tfIndex = 3; break;
      case 60   : tfIndex = 4; break;
      case 240  : tfIndex = 5; break;
      case 1440 : tfIndex = 6; break;
      case 10080: tfIndex = 7; break;
      default   : tfIndex =-1; break;
     }

   static int LastBar[8]={0,0,0,0,0,0,0,0};
   datetime curbar=iTime(Symbol(),f_tf,0);
   if(LastBar[tfIndex]!=curbar)
     {
      LastBar[tfIndex]=curbar;
      return (true);
     }
   else
     {
      return(false);
     }
  }
//+------------------------------------------------------------------+
//+----------------------------------------------------------------------------+
//                                                                             |
// Simbolis su prefixu
//+----------------------------------------------------------------------------+ 
string SymAndPrefix(string sym_="",string pr_="")
  {
   return(StringConcatenate(sym_,pr_));
  }

/* AUDCAD,AUDCHF,AUDJPY,AUDNZD,AUDUSD,CADCHF,CADJPY,CHFJPY,EURAUD,EURCAD,EURCHF,EURGBP,
  EURJPY,EURNZD,EURUSD,GBPAUD,GBPCAD,GBPCHF,GBPJPY,GBPNZD,GBPUSD,NZDCAD,NZDCHF,NZDJPY,NZDUSD,USDCAD,USDCHF,USDJPY*/
//+------------------------------------------------------------------+
