Новая версия платформы MetaTrader 5 build 5260: улучшения в Algo Forge, расширение OpenBLAS и новые правила наследования в MQL5 - страница 6

 
fxsaber #:

Интересно, можно ли заметить ускорение при отказе от виртуальных функций...

Расплата за виртуальность

Game++. Performance traps
Game++. Performance traps
  • 2025.05.29
  • habr.com
Стандартная библиотека C++ содержит множество классов и функций, которые легко интегрируются в проект, безопасны и протестированы на множестве кейсов. Однако за удобность и всеядность приходится платить производительностью. В играх, если производительность сразу не стоит на первом месте, то к концу проекта вы получаете такой технический долг...
 
Rorschach #:

Расплата за виртуальность

помниться было что-то подобное, на том-же хабре..."заменим виртуальные функции на всякую дичь и получим выигрыш в скорости" (самодельные VTABLE, указатели на функции и т.п.)

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

 
Maxim Kuznetsov #:

помниться было что-то подобное, на том-же хабре..."заменим виртуальные функции на всякую дичь и получим выигрыш в скорости" (самодельные VTABLE, указатели на функции и т.п.)

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

Чувак в геймдеве, знает о чем пишет

Там под спойлером история еще есть
 

Так и остаётся этот баг:

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

Как получить собственное имя и путь файла ex5 ?

fxsaber, 2025.01.30 12:15

Alex Renko #:

2)  MQLInfoString(MQL_PROGRAM_NAME) тоже пробывал - возвращает тоже самое что INDICATOR_SHORTNAME

Не должно быть так.

а тут тогда как ? почему оно коряво через  раз работает ? первы мой пост прочтите

MQL_PROGRAM_NAME всегда находится в конце MQL_PROGRAM_PATH. Иначе - баг. Если есть код воспроизведения бага, поделитесь для багрепорта.


 

Здравствуйте!

Недавно у меня МТ обновился до версии 5273.

Похоже в новой версии OrderCalcMargin перестала правильно работать. При вервом вызове возвращается правильное значение маржи, а при последующих вызовах возвращается 0.

Это можно проверить на примере из справки.

В версии 5260 все работает правильно.

Исправьте пожалуйста.

Спасибо!

 
Rorschach #:

Чувак в геймдеве, знает о чем пишет

Там под спойлером история еще есть

"чувак" забыл слово const для константных методов..дальше можно не читать

 
Rorschach #:

Расплата за виртуальность

С интересом читаю статью, спасибо. Вот этот момент не понял.

std::optional<ParticleSystem> make_baked_particle_system() {
    const ParticleSystem ps(100); // `const` блокирует RVO
    return ps;
}

Вроде, в MQL5 на выходе будет move, а не copy.

 
Dmytro Kucherenko #:

Недавно у меня МТ обновился до версии 5273.

Похоже в новой версии OrderCalcMargin перестала правильно работать. При вервом вызове возвращается правильное значение маржи, а при последующих вызовах возвращается 0.

В b5274 исправлено.

 

Еще один давний баг.

При вызове iCustom в подчиненный индикатор не передается _AppliedTo, т.е. для созданных программно индикаторов он всегда равен умолчанию (close), хотя документация утверждает, что можно передавать тип ряда после всех параметров индикатора.

 
можно безопасно преобразовать  int  в  double , выполнить деление с плавающей запятой и привести результат обратно к  int . Это позволяет использовать блоки процессора, предназначенные для операций с  double , которые выполняют деление вещественных чисел всего в пять раз быстрее, чем целочисленный ALU целых.
Кто так делал?