Библиотеки: Easy Canvas - страница 16

 

Приветствую, Николай.

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

Посмотрел, как генерируется имя объекта для iCanvas и обнаружил следующее:

Name+=IntegerToString(GetTickCount());

 Такой способ при загрузке терминала как раз и приводит к получению одинаковых имен объектов на разных чартах, если речь идет о советниках, т. к. все советники в терминале при загрузке получают одно и то же значение GetTickCount(). У индикаторов такой проблемы нет.

Для решения проблемы предлагаю такой способ генерации уникального имени объекта:

   Name += IntegerToString(ChartID()) + IntegerToString(GetTickCount());

Здесь уникальность гарантируется следующими соображениями:

  1. Индикаторы получают разное значение GetTickCount() даже если все они запущены на одном графике. Поэтому для них такой способ работает.
  2. Советники получают одинаковое значение GetTickCount(), но так как советник может быть на графике только один, то его объект получает уникальность за счет идентификатора графика.
 
Ihor Herasko #:

Приветствую, Николай.

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

Посмотрел, как генерируется имя объекта для iCanvas и обнаружил следующее:

 Такой способ при загрузке терминала как раз и приводит к получению одинаковых имен объектов на разных чартах, если речь идет о советниках, т. к. все советники в терминале при загрузке получают одно и то же значение GetTickCount(). У индикаторов такой проблемы нет.

Для решения проблемы предлагаю такой способ генерации уникального имени объекта:

Здесь уникальность гарантируется следующими соображениями:

  1. Индикаторы получают разное значение GetTickCount() даже если все они запущены на одном графике. Поэтому для них такой способ работает.
  2. Советники получают одинаковое значение GetTickCount(), но так как советник может быть на графике только один, то его объект получает уникальность за счет идентификатора графика.

Согласен. 
Спасибо, Игорь!
Залил исправленную версию.

Странно, я думал, что у меня так и формировалось имя. :))

 
Последняя версия 1.49
Файлы:
iCanvas.mqh  58 kb
 
обновил версию до 1.49
укоротил имя ресурса, т.к. нарвался на слишком длинное имя
 

 Nikolai Semko #:
 обновил версию до 1.49
 укоротил имя ресурса, т.к. нарвался на слишком длинное имя

Добрый день!
В файле iCanvas.mqh (по ссылке на MT5 версию) стоит "#property version   "1.09"...
Где можно скачать последнюю актуальную версию?
И про версию для MT4 тоже вопрос - в скачиваемом архиве версия "#property version   "1.47"
- это последняя для  MT4? И если нет - то где можно  скачать последнюю актуальную версию?

Спасибо.

 
Maksims Ignatovs #:

Добрый день!
В файле iCanvas.mqh (по ссылке на MT5 версию) стоит "#property version   "1.09"...
Где можно скачать последнюю актуальную версию?
И про версию для MT4 тоже вопрос - в скачиваемом архиве версия "#property version   "1.47"
- это последняя для  MT4? И если нет - то где можно  скачать последнюю актуальную версию?

Спасибо.

Приветствую!
Вы наверное скачиваете zip файл. Никогда его не скачивайте. Это недоработка MQ. Когда я обновляю версию, zip файл не перезаписывается, а доступа у меня нет к нему. 
Кликните мышкой по самому файлу iCanvas.mqh или скопируйте из просмотра



 
Nikolai Semko #:

Приветствую!
Вы наверное скачиваете zip файл. Никогда его не скачивайте. Это недоработка MQ. Когда я обновляю версию, zip файл не перезаписывается, а доступа у меня нет к нему. 
Кликните мышкой по самому файлу iCanvas.mqh или скопируйте из просмотра



Благодарю! 
 


Спасибо, что поделились им.
Я давно думал о создании такого инструмента, и теперь могу использовать ваш код в качестве основы для своего.

Отличная работа!
 
Guilherme Mendonca #:


Спасибо, что поделились им.
Я давно думал о создании такого инструмента, и теперь могу использовать ваш код в качестве основы для своего.

Отличная работа!
Спасибо!
 
Последняя версия 1.53
Файлы:
iCanvas.mqh  71 kb