При смене ТФ текст удаляется, как исправить?

 
Добрый день, подскажите пожалуйста как исправить что при смене ТФ текст времени удаляется?
#property copyright "Loev Nikita"
#property link      "https://www.ya.com"
#property version   "1.00"
#property strict
#property indicator_chart_window

string perDayWeek = "";
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
  EventSetTimer(1); 
//---

   ObjectCreate(0,"but",OBJ_BUTTON,0,0,0);
//--- установим координаты объекта 
   ObjectSetInteger(0,"but",OBJPROP_XDISTANCE,200); 
   ObjectSetInteger(0,"but",OBJPROP_YDISTANCE,18); 
   ObjectSetInteger(0,"but",OBJPROP_CORNER,CORNER_RIGHT_UPPER); 
//--- установим размеры объекта 
   ObjectSetInteger(0,"but",OBJPROP_XSIZE,150); 
   ObjectSetInteger(0,"but",OBJPROP_YSIZE,25);
//--- установим текст 
   ObjectSetString(0,"but",OBJPROP_TEXT," Нажми на меня"); 
//--- установим начлаьное положение кнопки 
   ObjectSetInteger(0,"but",OBJPROP_STATE,false);
   
   ObjectCreate(0,"time",OBJ_LABEL,0,0,0);
   //--- установим координаты метки 
   ObjectSetInteger(0,"time",OBJPROP_XDISTANCE,200); 
   ObjectSetInteger(0,"time",OBJPROP_YDISTANCE,50); 
//--- установим угол графика, относительно которого будут определяться координаты точки 
   ObjectSetInteger(0,"time",OBJPROP_CORNER,CORNER_RIGHT_UPPER); 
   //--- установим цвет 
   ObjectSetInteger(0,"time",OBJPROP_COLOR,clrRed); 
//--- установим текст 
   ObjectSetString(0,"time",OBJPROP_TEXT,""); 
   
   
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   EventKillTimer();
   ObjectDelete(0,"but");


   
  }
//+------------------------------------------------------------------+
//| 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()
  {

//--- время торгового сервера при первом вызове OnTimer();
   static datetime start_tradeserver_time=TimeCurrent();
//--- вычисляемое время торгового сервера
   static datetime calculated_server_time=TimeCurrent();

     
    if(ObjectGetInteger(0,"but",OBJPROP_STATE) == true)
      {
       string time=TimeToString(calculated_server_time,TIME_MINUTES|TIME_SECONDS);
       ObjectSetString(0,"time",OBJPROP_TEXT,time); 
      }

    if(ObjectGetInteger(0,"but",OBJPROP_STATE) == false)
      {
       string time=TimeToString(calculated_server_time,TIME_MINUTES|TIME_SECONDS);
       ObjectSetString(0,"time",OBJPROP_TEXT,"");
      }


    calculated_server_time=calculated_server_time+1;
   
  }
 
vebster005:
Добрый день, подскажите пожалуйста как исправить что при смене ТФ текст времени удаляется?
void OnDeinit(const int reason)
  {
   EventKillTimer();
   if(reason!=3) ObjectDelete(0,"but");
  }
 
Vitaly Muzichenko:

Спасибо что ответили, пробывал уже так, все равно удаляется текст при смене ТФ

 
vebster005:

Спасибо что ответили, пробывал уже так, все равно удаляется текст при смене ТФ

При инициализации так-же нужно проверять, а вдруг объект уже создан?

int OnInit()
  {
//--- indicator buffers mapping
  EventSetTimer(1); 
//---
if(ObjectFind(0,"but")== -1) // Нет объекта - создадим
 {
   ObjectCreate(0,"but",OBJ_BUTTON,0,0,0);
//--- установим координаты объекта 
   ObjectSetInteger(0,"but",OBJPROP_XDISTANCE,200); 
   ObjectSetInteger(0,"but",OBJPROP_YDISTANCE,18); 
   ObjectSetInteger(0,"but",OBJPROP_CORNER,CORNER_RIGHT_UPPER); 
//--- установим размеры объекта 
   ObjectSetInteger(0,"but",OBJPROP_XSIZE,150); 
   ObjectSetInteger(0,"but",OBJPROP_YSIZE,25);
//--- установим текст 
   ObjectSetString(0,"but",OBJPROP_TEXT," Нажми на меня"); 
//--- установим начлаьное положение кнопки 
   ObjectSetInteger(0,"but",OBJPROP_STATE,false);
   
   ObjectCreate(0,"time",OBJ_LABEL,0,0,0);
   //--- установим координаты метки 
   ObjectSetInteger(0,"time",OBJPROP_XDISTANCE,200); 
   ObjectSetInteger(0,"time",OBJPROP_YDISTANCE,50); 
//--- установим угол графика, относительно которого будут определяться координаты точки 
   ObjectSetInteger(0,"time",OBJPROP_CORNER,CORNER_RIGHT_UPPER); 
   //--- установим цвет 
   ObjectSetInteger(0,"time",OBJPROP_COLOR,clrRed); 
//--- установим текст 
   ObjectSetString(0,"time",OBJPROP_TEXT,""); 
   
   
   return(INIT_SUCCEEDED);
  }
}
 
Vitaly Muzichenko:

При инициализации так-же нужно проверять, а вдруг объект уже создан?

Спасибо большое, то и то делал только но одновременно