Особенности языка mql5, тонкости и приёмы работы - страница 85

 
Nikolai Semko:

Очень интересно...
А есть мысли, почему так происходит?

Каков механизм?

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

Поэтому рекомендовал бы не только для самоконтроля, но и для компилятора максимально использовать const.

 
fxsaber :

It's hard to say for sure. When you know beforehand that the variable will not change, you can find a more elegant way of storing it, uncovering cycles and other compiler optimizations.

Therefore, I would recommend not only for self-monitoring, but also for the compiler to use const as much as possible.

Вы проверяли другие функции StringXXX? Может быть, они все медленные: -D
 
Alain Verleyen:
Вы проверяли другие функции StringXXX? Может быть, они все медленные: -D

Не проверял. Мне нужно было для этого.

Скрипты: ThirdPartyTicks
Скрипты: ThirdPartyTicks
  • 2018.04.11
  • www.mql5.com
ThirdPartyTicks: Автор: fxsaber...
 

fxsaber:

void OnStart()
{  
  const string Str = "123.456";
  
  BENCH(Print(Bench1(1e7, Str)));
  BENCH(Print(Bench2(1e7, Str)));
  BENCH(Print(Bench3(1e7, Str)));
}

Result (Release)

1234559999.924436
Time[Print(Bench1(1e7,Str))] = 1656182
1234559999.924436
Time[Print(Bench2(1e7,Str))] = 1639179
1234559999.924436
Time[Print(Bench3(1e7,Str))] = 147382

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

 
Alexey Navoykov:

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

Учитывал это обстоятельство, но более тяжелый код не стал выкладывать. Там такой ре результат.

 

Продублирую здесь, там видимо затерялось

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

Вопросы от начинающих MQL5 MT5 MetaTrader 5

Vitaly Muzichenko, 2018.04.18 14:54

Подскажите, после теста в мультивалютном режиме в тестере видим результат только ..., впрочем, мы ничего не видим, кроме общего результата.

Где-то встречал или в статье, или в кодобазе код, который показывает результаты по каждому символу раздельно. Кто что знает об этом?

 
Vitaly Muzichenko:

Продублирую здесь, там видимо затерялось

https://www.mql5.com/ru/articles/4562

Работаем с результатами оптимизации через графический интерфейс
Работаем с результатами оптимизации через графический интерфейс
  • 2018.04.05
  • Anatoli Kazharski
  • www.mql5.com
Продолжаем развивать тему обработки и анализа результатов оптимизации. В предыдущей статье было показано, как визуализировать результаты оптимизации через графический интерфейс MQL5-приложения. На этот раз усложним задачу: выберем  100 лучших результатов оптимизации и отобразим их в таблице графического интерфейса.  Кроме этого, продолжим...
 

Это находил, но немного не то. 

Спасибо!

 

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

Выпустили бета-версию MetaTrader 5 build 1795 на MetaQuotes-Demo

fxsaber, 2018.04.24 09:37

Тестер
TESTER_EURUSD : real ticks begin from 2018.04.02 00:00:00
TESTER_EURUSD : 2018.04.03 00:00 - 2018.04.24 00:00  last prices absent for 15 whole days, bars built by bid prices
final balance 10000000.00 USD
OnTester result 203343
TESTER_EURUSD,M1: 1407448 ticks, 21591 bars generated. Environment synchronized in 0:00:00.172. Test passed in 0:00:00.905 (including ticks preprocessing 0:00:00.203).


Какое отношение last-цены имеют к символу с такими настройками?

Нужно занулять SYMBOL_TICKS_BOOKDEPTH, иначе (на скрине = 9) Тестер будет ожидать ласт-цены (даже если их нет), как выше в сообщении.

Поэтому после "Скопировать из:" следите за этим параметром.
 
В СБ увидел, не знал о такой возможности
template <typename T>
struct TMP
{
  T Tmp;
};

TMP<int>Var; // Между типом и названием переменной нет пробела