chart in chart with object chart auto shift not exist ?

 
Hi guys i have  this code 
//+------------------------------------------------------------------+
//|                  TripleTF + Indicators (XAUUSD H1|M5|M1)         |
//|  Requirement: 3 charts with different timeframes + input indicators|
//+------------------------------------------------------------------+
#property copyright ""
#property version   "1.03"
#property indicator_plots 0
#property indicator_separate_window
#property strict

//+------------------------------------------------------------------+
input string InpSymbol      = "XAUUSD";   // Symbol
input string InpIndicators  = "RSI";      // Indicators: "RSI;MACD:2"
//+------------------------------------------------------------------+

string ObjNames[3] = {"", "", ""}; // Initialized dynamically

//+------------------------------------------------------------------+
int OnInit()
{
   EventSetTimer(1);
   return INIT_SUCCEEDED;
}

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const int begin,
                const double &price[])
{
   long chart_id = ChartID();
   int subwin = (int)ChartGetInteger(chart_id, CHART_WINDOWS_TOTAL) - 1;

   SymbolSelect(InpSymbol, true);

   static bool first_run = true;
   if(first_run)
   {
      ENUM_TIMEFRAMES tfs[] = {PERIOD_H1, PERIOD_M5, PERIOD_M1};
      string tfLabels[] = {"H1", "M5", "M1"};

      for(int i = 0; i < 3; i++)
      {
         ObjNames[i] = StringFormat("TF_%s_%s", InpSymbol, tfLabels[i]);

         if(!ObjectCreate(chart_id, ObjNames[i], OBJ_CHART, subwin, 0, 0.0))
         {
            Print(" ObjectCreate error: ", GetLastError());
            continue;
         }

         ObjectSetString(chart_id, ObjNames[i], OBJPROP_SYMBOL, InpSymbol);
         ObjectSetInteger(chart_id, ObjNames[i], OBJPROP_PERIOD, tfs[i]);
         ObjectSetInteger(chart_id, ObjNames[i], OBJPROP_CORNER, CORNER_LEFT_UPPER);
         ObjectSetInteger(chart_id, ObjNames[i], OBJPROP_DATE_SCALE, false);
         ObjectSetInteger(chart_id, ObjNames[i], OBJPROP_PRICE_SCALE, false);
         ObjectSetInteger(chart_id, ObjNames[i], OBJPROP_CHART_SCALE, 4);

         long handle = ObjectGetInteger(chart_id, ObjNames[i], OBJPROP_CHART_ID);
         if(handle != 0)
            ApplyIndicatorsToChart(handle, InpIndicators);
      }

      ResizeCharts();
      first_run = false;
   }

   UpdateEmbeddedCharts();
   return rates_total;
}

//+------------------------------------------------------------------+
void UpdateEmbeddedCharts()
{
   long main_chart = ChartID();
   ENUM_TIMEFRAMES tfs[] = {PERIOD_H1, PERIOD_M5, PERIOD_M1};

   for(int i = 0; i < 3; i++)
   {
      long embedded_id = ObjectGetInteger(main_chart, ObjNames[i], OBJPROP_CHART_ID);
      if(embedded_id <= 0) continue;

      string symbol = InpSymbol;
      ENUM_TIMEFRAMES tf = tfs[i];

      // Force history data loading (minimum required)
      datetime dummy[];
      int copied = CopyTime(symbol, tf, 0, 200, dummy);
      if(copied <= 0) continue;

      // Get total number of available bars
      long total_bars;
      if(!SeriesInfoInteger(symbol, tf, SERIES_BARS_COUNT, total_bars))
         continue;
      if(total_bars <= 0) continue;

      // Estimate: embedded charts typically display around 100 bars
      int visible_bars = 100;

      // Calculate the first visible bar to show the latest bar
      long first_visible = MathMax(0, total_bars - visible_bars);

      // Apply scrolling
      ChartSetInteger(embedded_id, CHART_FIRST_VISIBLE_BAR, first_visible);
   }
}

//+------------------------------------------------------------------+
void ApplyIndicatorsToChart(long chart_handle, string indicators)
{
   if(StringLen(indicators) == 0) return; // Fixed: was "retaurn"

   StringTrimLeft(indicators);
   StringTrimRight(indicators);
   if(StringGetCharacter(indicators, StringLen(indicators) - 1) != ';')
      StringAdd(indicators, ";");

   int start = 0;
   for(int i = 0; i < StringLen(indicators); i++)
   {
      if(indicators[i] == ';')
      {
         string item = StringSubstr(indicators, start, i - start);
         StringTrimLeft(item);
         StringTrimRight(item);
         if(StringLen(item) > 0)
         {
            int scale = 4;
            string name = ParseScale(item, scale);
            string tpl = name + ".tpl";
            if(!ChartApplyTemplate(chart_handle, tpl))
               Print(" Template not found: ", tpl, " (create it in MetaTrader)");
         }
         start = i + 1;
      }
   }
}

//+------------------------------------------------------------------+
string ParseScale(string token, int &scale)
{
   scale = 4;
   int p = StringFind(token, ":", 0);
   if(p != -1)
   {
      scale = (int)StringToInteger(StringSubstr(token, p + 1));
      if(scale < 0 || scale > 5) scale = 4;
      return StringSubstr(token, 0, p);
   }
   return token;
}

//+------------------------------------------------------------------+
void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam)
{
   if(id == CHARTEVENT_CHART_CHANGE)
      ResizeCharts();
}

//+------------------------------------------------------------------+
void ResizeCharts()
{
   long chart_id = ChartID();
   int subwin = (int)ChartGetInteger(chart_id, CHART_WINDOWS_TOTAL) - 1;

   int width  = (int)ChartGetInteger(chart_id, CHART_WIDTH_IN_PIXELS, subwin);
   int height = (int)ChartGetInteger(chart_id, CHART_HEIGHT_IN_PIXELS, subwin);
   int w = width / 3;

   for(int i = 0; i < 3; i++)
   {
      ObjectSetInteger(chart_id, ObjNames[i], OBJPROP_XDISTANCE, i * w);
      ObjectSetInteger(chart_id, ObjNames[i], OBJPROP_XSIZE, w);
      ObjectSetInteger(chart_id, ObjNames[i], OBJPROP_YSIZE, height);
   }

   ChartRedraw(chart_id);
}

//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
   long chart_id = ChartID();
   for(int i = 0; i < 3; i++)
   {
      if(ObjectFind(chart_id, ObjNames[i]) != -1)
         ObjectDelete(chart_id, ObjNames[i]);
   }
}
//+------------------------------------------------------------------+

it  open a indicator with 3 chart H1, M5 and M1 , but  the chart not  auto scroll in left  therefore if i scroll by hand , stay right one second and return  back is possible to fix it ?  thanks anyone have idea  how to do that ? thanks