Новая версия платформы MetaTrader 5 build 1930: Плавающие окна графиков и .Net библиотеки в MQL5 - страница 103

 

Что то в 1970 билде поломали...

То что в предыдущих билдах работало в 1968 начало хромать а в 1970 вообще работает с проблемами, просто не загружается и никакой реакции...

Журнал то же молчит...

Есть какая то зависимость от компиляции, бывает скомпилируешь код все работает сразу и без проблем , тут же код без изменений компилируешь запускаешь и он либо долго не стартует либо пишет ошибки

 

билд 1970

перестал компилироваться Canvas.mqh

'data' cannot be used as it has undefined type 'BitmapHeader'   FileBin.mqh     488     38
 
Nikolai Semko:

билд 1970

перестал компилироваться Canvas.mqh

Причина

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Новая версия платформы MetaTrader 5 build 1930: Плавающие окна графиков и .Net библиотеки в MQL5

fxsaber, 2019.01.10 22:42

1969 имеет такой сюрприз
template<typename T>
uint ReadStruct( T &data )
{
  return(FileReadStruct(0, data)); // 'data' cannot be used as it has undefined type 'STRUCT'
}
  
void OnStart()
{
  struct STRUCT
  {
    int i;
  } Struct;

  ReadStruct(Struct);
}


Из-за этого Canvas.mqh больше не компилируется.

В догонку

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Новая версия платформы MetaTrader 5 build 1930: Плавающие окна графиков и .Net библиотеки в MQL5

fxsaber, 2019.01.10 22:54

Продолжение темы сюрпризов

template<typename T>
T Func()
{
  T Res = {0};

  return(true ? Res : Res); // '?' - parameter passed as reference, variable expected
}
  
void OnStart()
{
  MqlTick Tick = Func<MqlTick>();
}


Похоже, теперь возврат идет по ссылке. Что дает, конечно, скорость - не создается копия объекта.

Уважаемые разработчики, поясните ситуацию. Некоторый свой (да и Ваш) код перестал компилироваться на 1969 билде. Новые правила останутся в силе или это недоразумение до следующего билда?

 
fxsaber:

Причина

В догонку

Ну да, понял уже. Пока просто выкусил из canvas.mqh файловую  функцию.
 
Nikolai Semko:
Ну да, понял уже. Пока просто выкусил из canvas.mqh файловую  функцию.

Не надо выкусывать. BitmapHeader-определение структуры вынесите из метода. Теперь типы, определенные внутри функций/методов, не видны шаблонами.

 
fxsaber:

Не надо выкусывать. BitmapHeader-определение структуры вынесите из метода. Теперь типы, определенные внутри функций/методов, не видны шаблонами.

Понял, спасибо. 
Некоторые вещи у меня стали неправдоподобно быстро работать (по замерам в 10-15 раз). Не понимаю причину. Даже стал грешить на функцию GetMicrosecondCount
 
Nikolai Semko:
Понял, спасибо. 
Некоторые вещи у меня стали неправдоподобно быстро работать (по замерам в 10-15 раз). Не понимаю причину. Даже стал грешить на функцию GetMicrosecondCount

Предлагаю Вам портировать это

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

HELP! ЗАСТАВКА ДЛЯ ИНДИКАТОРА, помогите!

fxsaber, 2019.01.12 20:49

Заставку можно сделать очень быстро. Например, как это было сделано в DOOM.

Точно так же можно эффектно "поджечь" бары или линии сопротивления/поддержки.


Коротких исходников для этого дела в сети полно. Было бы желание и фантазия.

Тот же чарт с барами можно красиво запихать в туннель и т.д.

 
Windows 10 x64. Build 1070. Запускаю советник в режиме отладки на реальных данных (F5). Советник загружен, судя по логам. А дальше ничего не происходит. В коде робота используется канвас. Определение struct BitmapHeader в файле Canvas.mqh вынес за пределы определения класса. Т.е. компиляция проходит успешно.
 

Обновился до 1970 но проблему с ObjectFind так и не решили.

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Неожиданная внутренняя ошибка

Alexey Viktorov, 2019.01.09 16:35

Поочерёдно убирал. И только убрав обе, индикатор стал работать. Но это-же не правильно. Пусть можно обойтись без принудительного обновления графика, а как можно создавать объект не проверив его наличие? Умышленно создавать ошибки???