Ошибки, баги, вопросы - страница 973

 
voix_kas:

...

Что могу сказать? Один Bitmap работает (!)на порядок медленнее, чем 26 обычных меток. Пробывал исключить из OnTick() операцию копирования шаблона в рабочую канву (массив uint 250*410), т.е. работа на одной канве. Выигрыш чувствуется только в реал-тайме. В тестере всё также - абсолютная просадка по производительности. Использовался режим COLOR_FORMAT_ARGB_NORMALIZE, т.к. остальные дают менее эстетический вид. Забегая вперед, надо сказать, что работать на одной канве сложно, так как придётся отслеживать наложение предыдущих надписей (очищать области).

...

У Вас в тестере в режиме визуализации отображаются объекты типа OBJ_BITMAP_LABEL ?
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов - Документация по MQL5
 
tol64:

Спасибо, я это знаю. У vdv2001 какая-то проблема с этим:

//---

Хотел посмотреть, как он это делает, чтобы найти у него ошибку. 


Тогда еще цитата из справки

CHART_MOUSE_SCROLL

Прокрутка графика левой кнопкой мышки по горизонтали. Прокрутка по вертикали также будет доступна, если установлено в true значение любого из трех свойств: CHART_SCALEFIX, CHART_SCALEFIX_11 или CHART_SCALE_PT_PER_BAR

bool

 
А, понял в чём дело. )) 
vdv2001:

Да объект выделяется но сдвинуть его мышкой (как 4 терминале) не удается.

Или теперь перемещение всех созданных экспертом объектов нужно обрабатывать через события.

В MT5 нужно точно на точку привязки при выделенном объекте курсор мыши целить. В MT4 это происходит автоматом. Но лично мне больше нравится перемещать объекты без выделения через события. Выше Rosh показал свойство, которое включает/отключает скроллинг графика, чтобы не мешал перемещать объекты.
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Свойства объектов
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Свойства объектов
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы объектов / Свойства объектов - Документация по MQL5
 
tol64:
А, понял в чём дело. )) В MT5 нужно точно на точку привязки при выделенном объекте курсор мыши целить. В MT4 это происходит автоматом. Но лично мне больше нравится перемещать объекты без выделения через события. Выше Rosh показал свойство, которое включает/отключает скроллинг графика, чтобы не мешал перемещать объекты.

Увеличил график на максимум, установил мышь на точку привязки выделенного объекта "вдавил" левую кнопку мыши в пол, приложил максимальные усилия и ...

Объект остался на месте 

Повторить этот процесс не сложно, создай объект CChartObjectTrend, задай свойства и попробуй его сдвинуть. У меня не получилось.

CHART_MOUSE_SCROLL попробовал спасибо, график перестает двигаться но объект передвинуть не удается.

P.S.

Хотя если обрабатывать перемещение объекта через события это и правильно (известна старая координата) . Буду делать через события. Спасибо, вопрос закрыт.

 
vdv2001:

Увеличил график на максимум, установил мышь на точку привязки выделенного объекта "вдавил" левую кнопку мыши в пол, приложил максимальные усилия и ...

Объект остался на месте 

Повторить этот процесс не сложно, создай объект CChartObjectTrend, задай свойства и попробуй его сдвинуть. У меня не получилось.

...

Вот так получается, если что:

void OnStart()
  {
   double low[];
   datetime time[];
   string name_object="Trend_Test";
//---
   ArraySetAsSeries(low,true);
   ArraySetAsSeries(time,true);
//---
   CopyLow(_Symbol,_Period,0,50,low);
   CopyTime(_Symbol,_Period,0,50,time);
//---
   if(ObjectCreate(0,name_object,OBJ_TREND,0,time[0],low[0],time[49],low[49]))
      ObjectSetInteger(0,name_object,OBJPROP_SELECTABLE,true);
  }
 

Кому-нибудь удалось повторить подвиг  voix_kas

 
voix_kas:
...
Что могу сказать? Один Bitmap работает (!)на порядок медленнее, чем 26 обычных меток. Пробывал исключить из OnTick() операцию копирования шаблона в рабочую канву (массив uint 250*410), т.е. работа на одной канве. Выигрыш чувствуется только в реал-тайме. В тестере всё также - абсолютная просадка по производительности. Использовался режим COLOR_FORMAT_ARGB_NORMALIZE, т.к. остальные дают менее эстетический вид. Забегая вперед, надо сказать, что работать на одной канве сложно, так как придётся отслеживать наложение предыдущих надписей (очищать области).

...


У Вас в тестере в режиме визуализации отображаются объекты типа OBJ_BITMAP_LABEL !?

//--- 

Или это опечатка? )))

 
По расчету производительности битмапов желательно посмотреть на код. Может там лишние операции перерисовки стоят.
 
tol64:

Вот так получается, если что:

Точно, я разобрался почему у меня не происходило перемещение, я устанавливаю свойство объекта OBJPROP_TIMEFRAMES после чего объект перестает перемещаться.

Т.е. для минутного графика я указываю свойство 

obj.Timeframes(OBJ_PERIOD_M1);

и объект перестает передвигатся,  походу это глюк.

Все начинает работать нормально после переключения периода графика типа переключаемся на М2, а потом М1 и все ок.

 

voix_kas:

Что могу сказать? Один Bitmap работает (!)на порядок медленнее, чем 26 обычных меток. Пробывал исключить из OnTick() операцию копирования шаблона в рабочую канву (массив uint 250*410), т.е. работа на одной канве. Выигрыш чувствуется только в реал-тайме. В тестере всё также - абсолютная просадка по производительности. Использовался режим COLOR_FORMAT_ARGB_NORMALIZE, т.к. остальные дают менее эстетический вид. Забегая вперед, надо сказать, что работать на одной канве сложно, так как придётся отслеживать наложение предыдущих надписей (очищать области).


1. Как замеряете скорость?

2. Можете приложить исходник (в личку или в СД)?

 
alexvd:


1. Как замеряете скорость?

2. Можете приложить исходник (в личку или в СД)?

К сожалению, код не сохранил в виду отсутствия интереса. Если в общих словах:

OnInit():

1. Создаётся Bitmap на чарте.

2. Создаются две канвы (uint 250*410): шаблон и рабочая. На шаблон наносятся (TextOut) 13 меток с наименованием статистических параметров.

OnTick():

1. На рабочую канву копируется шаблон.

2. На рабочую канву наносятся (TextOut) 13 меток с соответствующими значениями статистических параметров.

3. Создаётся ресурс.

4. Обновляется график.

 

Специально хронометражом не занимался, т.к. и на глаз понятно, что скорость снижается на порядок. Что в тестере, что в реал-тайме (при скролле графике совершенно очевидные подвисания/дёргания).

Пробывал удалить пункт 1. из OnTick(). В реал-тайме становится сносно, но тестер еле ползёт. Опять же, в жизни такое нельзя делать, так как в местах ранее нанесённых меток на рабочей канве очистка не проводилась.

 

Повторюсь, использовал режим COLOR_FORMAT_ARGB_NORMALIZE, т.к. без альфа-канала метки (TextOut) выглядят неэстетично.