Быстрое открытие графика какого либо инструмента перетаскиванием мыши или клика по объекту

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

я попробовал это реализовать при помощи вот этой  функции  но она работает очень медленно. 
ChartSetSymbolPeriod(0,sym,PERIOD_H1);

подскажите пожалуйста , при помощи  какого кода можно реализовать такую же скоростью  исполнения  как в терминале?
для меня это очень важно , ведь если терминал это  исполняет значит это возможно  на программном уровне.

long  ChartOpen(
   string           symbol,     // имя символа
   ENUM_TIMEFRAMES  period      // период
   );

Эта функция тоже очень медленая и не сохраняет шаблон графика.

Документация по MQL5: Операции с графиками / ChartOpen
Документация по MQL5: Операции с графиками / ChartOpen
  • www.mql5.com
ChartOpen - Операции с графиками - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
intersheff_mql5:
В терминале есть такая возможность, из списка ордеров мышью перетаскиваете на график какой либо ордер  и очень быстро открывается график  этого инструмента .
Это очень удобно при интенсивных  торгах  когда  торгуешь на многих инструментах. 

я попробовал это реализовать при помощи вот этой  функции  но она работает очень медленно. 

подскажите пожалуйста , при помощи  какого кода можно реализовать такую же скоростью  исполнения  как в терминале?
для меня это очень важно , ведь если терминал это  исполняет значит это возможно  на программном уровне.

Эта функция тоже очень медленая и не сохраняет шаблон графика.

Я сейчас проверил скриптом. Работает так-же быстро как и перетаскивание из обзора рынка.

Если это в советнике, то попробуйте сразу обновить график функцией ChartRedraw.

 

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

я попробовал это реализовать при помощи вот этой  функции  но она работает очень медленно. 


подскажите пожалуйста , при помощи  какого кода можно реализовать такую же скоростью  исполнения  как в терминале?
для меня это очень важно , ведь если терминал это  исполняет значит это возможно  на программном уровне.

Эта функция тоже очень медленая и не сохраняет шаблон графика.


на данном этапе я так и не нашел функцию которая бы смогла обеспечить мне такое же быстродействие как в терминале
для меня это очень важно и я буду на форуме подымать этот вопрос

функции

long  ChartOpen( 
   string           symbol,     // имя символа 
   ENUM_TIMEFRAMES  period      // период 
   );

и

bool  ChartSetSymbolPeriod( 
   long             chart_id,     // идентификатор графика 
   string           symbol,       // имя символа 
   ENUM_TIMEFRAMES  period        // период 
   );

работают медлено

я хочу докапаться до того функционала который заложен в терминале

надеюсь мне кто нибуть поможет

 

Я так понял, что тебе нужно быстро переключатся между инструментами на одном графике, для ручной торговли?
И ты пытаешься использовать скрипт с mql функциями? И всё равно этот скрипт тянешь на график в ручную?


Попробуй другой подход. Наведи курсор в левый нижний угол.
Сделай двойной клик в эту область.

s1


Откроется поле ввода, введи имя инструмента, и нажми Enter.  

s2


 

 
Roman #:


Я так понял, что тебе нужно быстро переключатся между инструментами на одном графике, для ручной торговли?
И ты пытаешься использовать скрипт с mql функциями? И всё равно этот скрипт тянешь на график в ручную?


Попробуй другой подход. Наведи курсор в левый нижний угол.
Сделай двойной клик в эту область.





Откроется поле ввода, введи имя инструмента, и нажми Enter.  

 

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

сейчас у меня вот какая задача 
это кнопки индикатора которые выводятся на интерфейс терминала (картинка неудачная)

zzz   (клик увеличить)

прости объяснять функционал  индикатора  сейчас не буду

клик по кнопки открывает инструмент  при помощи вот  такой функции
bool  ChartSetSymbolPeriod(
   long             chart_id,     // идентификатор графика
   string           symbol,       // имя символа
   ENUM_TIMEFRAMES  period        // период
   );
у этой функции есть 1 особенность
Функция работает асинхронно, то есть отдает команду и не ждет окончания ее выполнения. Отданная команда поступает в очередь сообщений графика и выполняется только после обработки всех предыдущих команд.
мне нужно это  обойти и сделать быстроту реакции как в терминале при перетаскивании мышью ордера на график  из списка ордеров
 
Вот, теперь немного стал понятен алгоритм реализации.
С очередью сообщений графика, никогда не работал, но есть подозрение что проблема в ней.
Не получится сделать так? 
Запускаешь функцию асинхронно, но не передаёшь в очередь сообщений графика.
Критично ли это будет для твоей реализации?

Или как предложил Aleksey, попробуй сразу обновить график функцией ChartRedraw.
 
Roman #:
Вот, теперь немного стал понятен алгоритм реализации.
С очередью сообщений графика, никогда не работал, но есть подозрение что проблема в ней.
Не получится сделать так? 
Запускаешь функцию асинхронно, но не передаёшь в очередь сообщений графика.
Критично ли это будет для твоей реализации?

Или как предложил Aleksey, попробуй сразу обновить график функцией ChartRedraw.




    ChartRedraw.  не помогает.
  ( Запускаешь функцию асинхронно, но не передаёшь в очередь сообщений графика. )  а как это можно реализовать на уровне кода я честно сказать не знаю.

     если это возможно подскажите как
Причина обращения: