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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Oleksii Chepurnyi
1627
Oleksii Chepurnyi  
Nikolai Semko:

Переименовать не сложно. Благо есть Ctrl+H

Но я согласен с Андреем. Ищите у себя #define T или  #include <Canvas\iCanvas.mqh>   поставьте самым первым в проекте

Благо поиск по файлам автоматический ) Ни в одном файле в папке MQL5 нету #define T

Удалось выяснить, что конфликт с чем-то в TypeToBytes.mqh из TradeTransactions https://www.mql5.com/ru/code/22166

Эта библиотека давно не менялась, так что скорее всего в одном из новых билдов появилось какое-то нововведение или баг )

fxsaber
16073
fxsaber  
Oleksii Chepurnyi:

Удалось выяснить, что конфликт с чем-то в TypeToBytes.mqh из TradeTransactions https://www.mql5.com/ru/code/22166

Эта библиотека давно не менялась, так что скорее всего в одном из новых билдов появилось какое-то нововведение или баг )

Это баг компилятора.

#include <TypeToBytes.mqh> // https://www.mql5.com/ru/code/16282

class CLASS
{
  void Method()
  {
    datetime T[1];
    
    T[0] = 0; // '[' - name expected
  };
};

void OnStart()
{
  datetime T[1];
  
  T[0] = 0; // OK
}
Nikolai Semko
5787
Nikolai Semko  
Понял. Спасибо. Тогда исправлю конечно. 
Andrey Khatimlianskii
55560
Andrey Khatimlianskii  

Ура, нашли! )


@fxsaber, отслеживаете ветки по "своим" ключевым словам чем-то автоматическим, или просто листаете все ветки регулярно? Уж очень оперативно отвечаете на "таргетированные" вопросы.

fxsaber
16073
fxsaber  
Andrey Khatimlianskii:

@fxsaber, отслеживаете ветки по "своим" ключевым словам чем-то автоматическим, или просто листаете все ветки регулярно? Уж очень оперативно отвечаете на "таргетированные" вопросы.

Случайно выходит.

Nikolai Semko
5787
Nikolai Semko  

Хочу прояснить заинтерисованным программистам важным момент работы канваса в режиме тестера. 
Ко мне обратился один известный программист в этом сообществе с таким вопросом:

 - Почему в режиме тестера панель, созданная на объектах перерисовывается на порядок быстрее, чем реализованная на канвасе, тогда как в обычном режиме со скоростью канваса все в порядке?

Разобравшись, понял причину и решение данной проблемы.

Дело в том, что при объектах перерисовка происходит вместе с перерисовкой всего экрана, а экран в тестере перерисовывается не чаще, чем 30 кадров с секунду.

Объекты - это в конечном счете тот же канвас (внутренний), но когда вы изменяете своиства объекта, то канвас объекта не формируется(не пересчитывается), а формируется лишь в момент обновления экрана (ChartRedraw), что происходит в тестере (да и в обычном режиме тоже) не чаще, чем способен различить изменения наш глаз, т.е. не чаще ~ 32 кадров в секунду.

Допустим панель меняется каждый тик. Тогда и в тестере по умолчанию канвас будет пересчитываться каждый тик, но перерисовка в тестере происходит все равно не чаще ~30 милисекунд (~30 кадров в секунду).

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

Решением данной проблемы будет контроль пересчета и перерисовывания канваса не чаще, чем раз в 15-30 милисекунд компьютерного времени, тогда и не будет лишних циклов пустых персчетов.

Например так:

void OnTick()
  {
  static uint lastCalc=0;
  uint cur=GetTickCount();
  if (cur-lastCalc>15) {
    ReDrawMyCanvas();
    lastCalc=cur;
   }
  }
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий