Переход на другой инструмент в том же окне

 

В autochartist есть вот такое диалоговое окно. 


При клике на кнопке Вид происходит очень быстрый переход на другой инструмент в том же окне.
Если кто то знает как это реализовано на уровне кода подскажите пожалуйста , очень нужно.
Возможно ли как то ускорить функцию ChartSetSymbolPeriod (я использую ее при клике на кнопке в своей системе.Работает очень медленно) или может быть есть какие то другие решения без этой функции. 
Буду рад и благодарен любым идеям.
 
Никак вы не ускорите.
Неудачная оптимизационная архитектура всё хранить в памяти, обязывает её освобождать при не использовании. 
Соответственно когда данные автоматически уже выгружены из памяти, требуется время чтоб снова подгрузить новые данные.
Принцип гетеров сеттеров, если понимаете о чём речь.
 
И ChartRedraw(); не помогает? Не верю, как Станиславский.
Документация по MQL5: Операции с графиками / ChartRedraw
Документация по MQL5: Операции с графиками / ChartRedraw
  • www.mql5.com
ChartRedraw - Операции с графиками - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 

Как мне кажется единственный выход для быстрого переключения, это держать все графики по инструментам открытыми.
Так они будут строится в реал тайм, соответственно подгружены, и не будут автоматически выгружаться из памяти.
А как известно, максимальное количество открытых графиков ограничено.
И возможно для такой задачи лучше будет просто в цикле с какой-то периодичностью делать любое обращение ко всем символам, так сказать держать их на готове.
В общем корень проблемы, в автоматической выгрузке данных из памяти если к символу какое-то время не было обращений.
А потом когда обращаешься к этому символу, то происходит подгрузка и построение, а это время.

Так же это касается кастомных символов, в которые уже импортирована история, но не поступают реал тайм данные.
В этом случае подгрузки и построения не происходит, а только аллоцирование данных в память.
И даже в этом случае наблюдается замедленное открытие графика по другому кастомному символу.

Не пойму одного, зачем автоматически выгружать данные по символу, если он ещё выбран в Обзоре рынка.
Ну при удалении символа из Обзора рынка и очищали бы ресурсы.

 
Alexey Viktorov #:
И ChartRedraw(); не помогает? Не верю, как Станиславский.

Я использую вот такой  код

  if(id==CHARTEVENT_OBJECT_CLICK && f_keyPress == 0){
      obj_text = ObjectGetString(0,sparam,OBJPROP_TEXT);
      sym = StringSubstr(StringTrimLeft(obj_text),0,6);
      ChartSetSymbolPeriod(0,sym,PERIOD_CURRENT);
      ChartRedraw();                                
    }

работает очень медленно
я хочу узнать какой код использует Autochartist.ex4
ведь там тоже используется клик по кнопке и переход на другой инструмент  в том же окне
 

Скорее всего дело в том, что там вообще навешано на графике.

Вот такой код:

   if(id==CHARTEVENT_OBJECT_CLICK){
      if(Symbol()=="EURUSD"){
         ChartSetSymbolPeriod(0,"GBPUSD",PERIOD_CURRENT);
      }
      else{
         ChartSetSymbolPeriod(0,"EURUSD",PERIOD_CURRENT);      
      }
   }
   

переключает моментально.

 

Roman #:


Как мне кажется единственный выход для быстрого переключения, это держать все графики по инструментам открытыми.
Так они будут строится в реал тайм, соответственно подгружены, и не будут автоматически выгружаться из памяти.
А как известно, максимальное количество открытых графиков ограничено.
И возможно для такой задачи лучше будет просто в цикле с какой-то периодичностью делать любое обращение ко всем символам, так сказать держать их на готове.
В общем корень проблемы, в автоматической выгрузке данных из памяти если к символу какое-то время не было обращений.
А потом когда обращаешься к этому символу, то происходит подгрузка и построение, а это время.

Так же это касается кастомных символов, в которые уже импортирована история, но не поступают реал тайм данные.
В этом случае подгрузки и построения не происходит, а только аллоцирование данных в память.
И даже в этом случае наблюдается замедленное открытие графика по другому кастомному символу.


Не пойму одного, зачем автоматически выгружать данные по символу, если он ещё выбран в Обзоре рынка.
Ну при удалении символа из Обзора рынка и очищали бы ресурсы.




моя система следит за всем рынком(Инструменты, на которых я торгую) независимо от того какой инструмент открыт
Реализованы кнопки кликая по которым я перехожу на нужный инструмент(Помимо этого они показывают мне что происходит на том или ином инструменте , какие ордера на данный момент на нем находится и тд.)

Все очень удобно и функционально единственная проблема -  Я не могу достигнуть такого же быстродействия ( Клик по кнопке переход на другой инструмент в том же окне ) как это реализовано в Autochartist.ex4

Меня интересует как это можно реализовать на программном уровне

 
Roman #:
Никак вы не ускорите.
Неудачная оптимизационная архитектура всё хранить в памяти, обязывает её освобождать при не использовании. 
Соответственно когда данные автоматически уже выгружены из памяти, требуется время чтоб снова подгрузить новые данные.
Принцип гетеров сеттеров, если понимаете о чём речь.
Я хочу понять как в Autochartist.ex4 реализован быстрый переход на другой инструмент в том же окне через клик по кнопке

Я вешаю   Autochartist.ex4 на график ( К тому что уже есть )и он делает быстрый переход это именно то что мне надо.

 
Dmitry Fedoseev #:

Скорее всего дело в том, что там вообще навешано на графике.

Вот такой код:

переключает моментально.

К тому что на графике я добавляю Autochartist.ex4 и он исполняет практически моментальный переход на другие инструменты( При помощи тех кнопок которые реализованы в нем )
 
Всем огромное спасибо за участие и  помощь я решил проблему
Причина обращения: