3 экрана

 
Здравствуйте! Подскажите пожалуйста, как в МТ5 в одной вкладке определённого инструмента(например EURUSD или GBPUSD и др.)отобразить одновременно 3 экрана с разными временными периодами этого инструмента, что бы в этих окнах можно было устанавливать индикаторы. При нанесении, например линии на график или  другого объекта в одном окне, то эта линия проресовывалась бы в двух других окнах этого инструмента? Подскажите пожалуйста!
 
Aleksei_A:
Здравствуйте! Подскажите пожалуйста, как в МТ5 в одной вкладке определённого инструмента(например EURUSD или GBPUSD и др.)отобразить одновременно 3 экрана с разными временными периодами этого инструмента, что бы в этих окнах можно было устанавливать индикаторы. При нанесении, например линии на график или  другого объекта в одном окне, то эта линия проресовывалась бы в двух других окнах этого инструмента? Подскажите пожалуйста!

Средствами MT5 ни как. 

Нужный вам функционал можно получить продуктами из маркета или CodeBase.

 
Petr Zharuk #:

Средствами MT5 ни как. 

Нужный вам функционал можно получить продуктами из маркета или CodeBase.

И как мне его там найти? Не подскажите?
 
#property strict

input bool bSyncVLine=true;
//---------------------------------------------------------------------------------------------
struct tagObj { string name; long dt,clr,wth,style,sel; };
//---------------------------------------------------------------------------------------------
//int OnInit() { EventSetMillisecondTimer(10000); return INIT_SUCCEEDED; }
int OnInit() { EventSetTimer(1); return INIT_SUCCEEDED; }
//---------------------------------------------------------------------------------------------
void OnTimer()
  {
   if(!TerminalInfoInteger(TERMINAL_TRADE_ALLOWED)) return;

   long cid=ChartID();
   ChartSetInteger(cid,CHART_AUTOSCROLL,false);
   ChartSetInteger(cid,CHART_SHIFT,false);
   long fb=ChartGetInteger(cid, CHART_FIRST_VISIBLE_BAR);
   long wb=ChartGetInteger(cid, CHART_WIDTH_IN_BARS);
   ENUM_TIMEFRAMES tf=ChartPeriod(cid);
   long scale=ChartGetInteger(cid,CHART_SCALE);
   long mode=ChartGetInteger(cid,CHART_MODE);
   long id=ChartFirst();

   tagObj vr[]; 
   int vn=0;
   if(bSyncVLine)
   {
      int n=ObjectsTotal(cid,0,OBJ_VLINE);
      for(int i=0; i<n;++i) 
      { 
        ArrayResize(vr,vn+1); 
        GetObj(cid,ObjectName(cid,i,0,OBJ_VLINE),vr[vn]); vn++; 
      }
   }
   do
     {
      if(id!=cid)
        {
         ChartSetInteger(id,CHART_SCALE,scale);
         ChartSetSymbolPeriod(id,ChartSymbol(id),tf);
         
         if(ChartGetInteger(id,CHART_FIRST_VISIBLE_BAR)!=fb) ChartNavigate(id,CHART_END,-int(fmax(fb-wb+2,0)));
         
         ChartSetInteger(id,CHART_AUTOSCROLL,false);
         ChartSetInteger(id,CHART_SHIFT,0,0);                    ///<---------------------------
         ChartSetInteger(id,CHART_MODE,mode);

         if(bSyncVLine) 
           { 
            ObjectsDeleteAll(id,0,OBJ_VLINE); 
            for(int i=0; i<vn;++i) NewObj(id,vr[i]); 
          }
         ChartRedraw(id);
        }
      id=ChartNext(id);
     }  while(id>0);
  }
//---------------------------------------------------------------------------------------------
void GetObj(long cid,string name,tagObj &vl)
  {
   vl.name=name;
   vl.clr=ObjectGetInteger(cid,name,OBJPROP_COLOR);
   vl.dt=(datetime)ObjectGetInteger(cid,name,OBJPROP_TIME,0);
   vl.wth=ObjectGetInteger(cid,name,OBJPROP_WIDTH);
   vl.style=ObjectGetInteger(cid,name,OBJPROP_STYLE);
   vl.sel=ObjectGetInteger(cid,name,OBJPROP_SELECTED);
  }
//---------------------------------------------------------------------------------------------
void NewObj(long cid,tagObj &vl)
  {
   ObjectCreate(cid,vl.name,OBJ_VLINE,0,vl.dt,0);
   ObjectSetInteger(cid, vl.name, OBJPROP_COLOR, vl.clr);
   ObjectSetInteger(cid, vl.name, OBJPROP_WIDTH, vl.wth);
   ObjectSetInteger(cid, vl.name, OBJPROP_STYLE, vl.style);
   ObjectSetInteger(cid, vl.name, OBJPROP_SELECTED, vl.sel);
  }
//---------------------------------------------------------------------------------------------
void OnDeinit(const int reason) { EventKillTimer(); }
//---------------------------------------------------------------------------------------------
тут вертикальная линия для 4, но можно переделать для 5