Новая версия платформы MetaTrader 5 build 2485: улучшения в iCustom и общая оптимизация в MQL5 - страница 11

 
Vasiliy Pushkaryov:

Что-то не пойму, в СБ и в 5-ке и в 4-ке в функции CWndContainer::Destroy() есть цикл for. Но внутри не видно, чтобы использовалась переменная инкремент i.

Это наверное ошибка?

Это точно не ошибка, т.к. функция удаляет ВСЕ элементы, для простоты с нулевым индексом. цикл нужен просто для кол-ва.

а в этой функции из CArrayObj уже элементы "смещаются", и на индексе 0 становится тот, что был перед предыдущим удалением на 1-ом и т.д.

m_controls.Delete(0);
 
2491 - примерно в два раза возросла скорость компиляции. Например, было 39 секунд, стало - 19.
 
Aleksey Mavrin:

Это точно не ошибка, т.к. функция удаляет ВСЕ элементы, для простоты с нулевым индексом. цикл нужен просто для кол-ва.

а в этой функции из CArrayObj уже элементы "смещаются", и на индексе 0 становится тот, что был перед предыдущим удалением на 1-ом и т.д.

Понятно, спасибо
 
fxsaber:
2491 - примерно в два раза возросла скорость компиляции. Например, было 39 секунд, стало - 19.

У меня при полной оптимизации скорость не изменилась. b2489>>b2491

 

Как вычисляется значение столбца "Изменение" (Изменение прибыли). Билд 2485. В справке не нашёл.


 
Edgar Akhmadeev:

У меня при полной оптимизации скорость не изменилась. b2489>>b2491

fxsaber:
2491 - примерно в два раза возросла скорость компиляции. Например, было 39 секунд, стало - 19.

Одно и то же?

 

Выделить бы этот режим тестирования как-то.

Не заметил, как случайно переключился с реальных тиков на сгенерированные. Столько времени потрачено на тестерный грааль...


ЗЫ Всем граале-писателям рекомендую прописывать такую защиту.

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

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

fxsaber, 2017.11.23 00:21

// Возвращает true только в случае, если выбран (в тестере) режим по реальным тикам
// Перед использованием должен быть хотя бы один OnTick вызван тестером
bool IsRealTicks( void )
{
  MqlTick Tick;
  
  return(SymbolInfoTick(_Symbol, Tick) && (Tick.volume || !(Tick.flags & TICK_FLAG_LAST)));
}


Пример использования

// Советник будет тестироваться только в режиме по реальным тикам
void OnTick()
{
  static bool IsRemove = true;
  
  if (IsRemove)
  {
    IsRemove = MQLInfoInteger(MQL_TESTER) && !IsRealTicks();
    
    if (IsRemove)
    {
      Print("Real ticks mode is needed!");
      
      ExpertRemove();
      
      return;
    }
  }
  
  //........
}
Как это сделать в OnInit (без OnTick) - не знаю.
 
Сергей Таболин:

Одно и то же?

Да. Речь о компиляции с максимальной оптимизацией (релизный вариант + галочка полной оптимизации). Неясно выразился.

 
2492 - во вкладке результатов оптимизации галочки фильтров означают не включение фильтра, а выключение. Не отфильтровывать, а пропускать. Нелогично, или это моя личная логика? 
 
2492. Постоянно сталкиваюсь с таким в Оптимизаторе
2020.06.17 18:01:58.762 Core 3  USDSEK: ticks synchronization started

Если нажать Стоп - намертво вешается Терминал.


ЗЫ Если оставить только один Локальный Агент, то Оптимизация по всем символам из Обзора рынка идет без таких проблем.