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

 
Andrey Barinov:

Это оптимизация кода.

Если в metaeditor.ini в поле [Experts] прописать OPTIMIZE=0 то скорость компиляции будет как в 4-ке. У меня некоторые проекты компилятся по 20 сек, а некоторые входят в бесконечный цикл оптимизации :)

Вау, спасибо, дружище! Где ж ты раньше был! ) А мы тут мучаемся... Самое странное что разработчики об этой опции молчали
 
Alexey Navoykov:
Вау, спасибо, дружище! Где ж ты раньше был! ) А мы тут мучаемся... Самое странное что разработчики об этой опции молчали

Не молчали. На форуме есть топик в 18 страниц, где эта опция как раз описывалась.

Кстати, оптимизация не включается при компиляции под отладку.

 
Andrey Barinov:

Это оптимизация кода.

Если в metaeditor.ini в поле [Experts] прописать OPTIMIZE=0 то скорость компиляции будет как в 4-ке. У меня некоторые проекты компилятся по 20 сек, а некоторые входят в бесконечный цикл оптимизации :)

Точно! При этом я сам когда-то и поставил значение 1 и просто забыл об этом. ))

Alexey Navoykov:
... А мы тут мучаемся... Самое странное что разработчики об этой опции молчали

Тема была и подробно обсуждалась: Тестирование нового компилятора MQL5 для x64 платформ - ускорение расчетов от 2 до 10 раз! >>> 

Это я просто забыл. ) 

У меня даже сначала эта оптимизация не работала. То есть компиляция в некоторых случаях заканчивалась ошибкой. Но потом удалось найти причину. Затем её исправили и я в одном из терминалов установил параметр на 1 и забыл об этом. А вчера сижу и думаю, почему в одном редакторе MT5 компиляция проходит значительно быстрее, чем в другом редакторе MT5. 

 

//---

Теперь, если поставить на 0, то компиляция проходит в ~25 раз быстрее.

0 error(s), 0 warning(s), compile time: 668 msec                1       1
 
Anatoli Kazharski:

Самые сложные из моих проектов в MetaTrader 5 конечно тоже долго компилируются. Доходит даже до 11 секунд. Точно такие же версии, но в MetaTrader 4 бывает до 25 раз быстрее.

В МТ5 компилятор более продвинутый, он оптимизирует код так, что тот работает до 10 раз быстрее чем в МТ5. Об этом мы писали и объясняли раньше.

Компилятор MQL5 вынужден создавать для совместимости две копии кода - для старой 32 битной версии (без полной оптимизации) и максимально оптимизированный вариант для 64 битов. Вся сила MQL5 раскрывается только в 64 битах.

 
Renat Fatkhullin:

В МТ5 компилятор более продвинутый, он оптимизирует код так, что тот работает до 10 раз быстрее чем в МТ5.

Кроме того, компилятор вынужден создавать для совместимости две копии кода - для старой 32 битной версии (без полной оптимизации) и максимально оптимизированный вариант для 64 битов. Вся сила MQL5 раскрывается только в 64 битах.

Спасибо. Я уже освежил память по ветке, где обсуждалось всё это.

На время разработки буду ставить значение 0, так как бывает очень часто нужно проводить компиляцию и ждать по 10 секунд утомительно. А для готового продукта перед финальной компиляцией, буду ставить 1.

 
Renat Fatkhullin:

В МТ5 компилятор более продвинутый, он оптимизирует код так, что тот работает до 10 раз быстрее чем в МТ5. Об этом мы писали и объясняли раньше.

Компилятор MQL5 вынужден создавать для совместимости две копии кода - для старой 32 битной версии (без полной оптимизации) и максимально оптимизированный вариант для 64 битов. Вся сила MQL5 раскрывается только в 64 битах.

если при запущенном MetaEditor изменить параметр OPTIMIZE, то нужно ли его перегрузить для принятия настроек или нет?
 
coderex:
если при запущенном MetaEditor изменить параметр OPTIMIZE, то нужно ли его перегрузить для принятия настроек или нет?
Быстрее попробовать самому. Вот только что протестировал. Перезагружать редактор необязательно.
 
Maxim Kozin:
Подскажите, трудность вот в чем. В советнике идет стандартный анализ индикаторов, если условие совпало, функция открытия ордера прописана в коде, с проверкой корректности ТП, СЛ корректности цени и прочее. Цикла нет. После проверки на открытие запоминаем бар, чтобы на этом баре и на следующем не открывалась, и потом стоит return;
Так вот в тестере все отлично работает :) на счетах с исполнением Instant тоже ордер нормально открывается. А на ЕСН счетах открывается сразу два ордера с разницей пару секунд. Как такое может быть? И как с этим бороться? Может, какую то дополнительную проверку нужно?
Как минимум - проверить вкладку "Журнал".
 
#property strict

void OnStart()
{
  int Array[] = {0};

  ArrayResize(Array, 5); // MQL5 - cannot be used for static allocated array, MQL4 - без проблем
}

Разное поведение MQL4 и MQL5 в такой ситуации - это ошибка?

 
fxsaber:

Разное поведение MQL4 и MQL5 в такой ситуации - это ошибка?

Нет. В четвёрке все массивы - динамические