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

 
gumgum:

 всего 290 и... дальше) 

 

Полный перебор делает 290. 

 

Я так понимаю, что прохода(реального прогона) нет но он фиксируется(если есть совпадения)?

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

Неразумно при столь малом количестве (290) проходов запускать генетику. Генетический алгоритм нужно использовать при исходном переборе как минимум десятков тысяч, а лучше миллионов/миллиардов/триллионов вариантов.

Генетические алгоритмы - это просто!
Генетические алгоритмы - это просто!
  • 2010.05.25
  • Andrey Dik
  • www.mql5.com
В статье автор расскажет об эволюционных вычислениях с использованием генетического алгоритма собственной реализации. Будет показано на примерах функционирование алгоритма, даны практические рекомендации по его использованию.
 

Опечатка в Справочник MQL5 - Стандартная библиотека - Классы для организации данных - CArrayObj (на сайте и в хелпе):

 2. Механизм управления памятью выключен.

В этом случае, CArrayObj не ответствечает за освобождение памяти

Документация по MQL5: Стандартная библиотека
Документация по MQL5: Стандартная библиотека
  • www.mql5.com
Стандартная библиотека - Документация по MQL5
 
Renat:

Да, не нужно проводить тестирование до самой последней существующей даты.

Выберите разумную фиксированную конечную дату в виде 00:00 предыдущего рабочего дня или даже конец прошлой рабочей недели. Если постоянно использовать последний день, то конец графика будет периодически плавать, особенно если процесс тестирования долгий с использованием удаленных или клауд агентов.


В качестве конечной даты использовал воскресенье. Куда еще разумнее? Торгов в воскресенье нет. Что там может плавать???
 
MoneyJinn:
В качестве конечной даты использовал воскресенье. Куда еще разумнее? Торгов в воскресенье нет. Что там может плавать???

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

Если нужно больше, пропускайте кусок истории после старта эксперта, на длину превышающую [необходимое_число_баров - 100]. У меня это решило проблемы с соответствием результатов тестера и оптимизатора.

 
MetaDriver:

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

Если нужно больше, пропускайте кусок истории после старта эксперта, на длину превышающую [необходимое_число_баров - 100]. У меня это решило проблемы с соответствием результатов тестера и оптимизатора.

Спасибо, но по скринам видно, что при оптимизации через сеть потерялась история за пятницу (24.06.11)

 

Не принципиальный вопрос, но все же. Конкатенация строк. В документации описаны две функции StringAdd и StringConcatenate.

В первой указано: "Функция StringAdd() работает быстрее и экономнее по памяти, чем связывание строк при помощи операций сложения".

Во второй: "Функция StringConcatenate() работает быстрее и экономнее по памяти, чем связывание строк при помощи операций сложения за счет того, что не используются временные переменные типа string". 

void OnStart() {
  string string1 = "sdfdsfjssdfads";
  string string2 = "bsadfasdfaaa";
  string string3 = "ssdfsdgasgsaggsda";
  string result;
  uint i, start, stop, length = 10000000;

  start = GetTickCount();
  for(i = 0; i < length; i++)
    result = string1 + string2 + string3;
  stop = GetTickCount();
  Print("№1 ", (stop-start), " milliseconds, i = ", i);
 
  start = GetTickCount();
  for(i = 0; i < length; i++) {
    StringAdd(result, string1);
    StringAdd(result, string2);
    StringAdd(result, string3);
  }
  stop = GetTickCount();
  Print("№2 ", (stop-start), " milliseconds, i = ", i);

  start = GetTickCount();
  for(i = 0; i < length; i++)
    StringConcatenate(result, string1, string2, string3);
  stop = GetTickCount();
  Print("№3 ", (stop-start), " milliseconds, i = ", i);
}

Результат:

2011.06.26 19:10:55 test (EURUSD,H1) №1 2012 milliseconds, i = 10000000
2011.06.26 19:11:04 test (EURUSD,H1) №2 8269 milliseconds, i = 10000000
2011.06.26 19:11:10 test (EURUSD,H1) №3 6661 milliseconds, i = 10000000

Выходит, все же, обычное сложение быстрее

Документация по MQL5: Строковые функции / StringConcatenate
Документация по MQL5: Строковые функции / StringConcatenate
  • www.mql5.com
Строковые функции / StringConcatenate - Документация по MQL5
 
voix_kas:

Выходит, все же, обычное сложение быстрее

Вопрос уже возникал: https://www.mql5.com/ru/forum/58/page13#comment_59630 Посмотрите обсуждение далее по тексту. Разработчикам: напрашивается вывод о недостаточности освещения данного вопроса в справочных материалах.
Изучаем и пишем вместе на MQL5
Изучаем и пишем вместе на MQL5
  • www.mql5.com
2) вывод всей возможной информации по инструментам, ордерам и др.
 
MoneyJinn:
В качестве конечной даты использовал воскресенье. Куда еще разумнее? Торгов в воскресенье нет. Что там может плавать???

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

Проблема конечно же в истории и ее синхронизированности.

 
voix_kas:

Не принципиальный вопрос, но все же. Конкатенация строк. В документации описаны две функции StringAdd и StringConcatenate.

В первой указано: "Функция StringAdd() работает быстрее и экономнее по памяти, чем связывание строк при помощи операций сложения".

Во второй: "Функция StringConcatenate() работает быстрее и экономнее по памяти, чем связывание строк при помощи операций сложения за счет того, что не используются временные переменные типа string". 

Результат:

2011.06.26 19:10:55 test (EURUSD,H1) №1 2012 milliseconds, i = 10000000
2011.06.26 19:11:04 test (EURUSD,H1) №2 8269 milliseconds, i = 10000000
2011.06.26 19:11:10 test (EURUSD,H1) №3 6661 milliseconds, i = 10000000

Выходит, все же, обычное сложение быстрее

Похоже, что это срабатывает оптимизация конкатенации строк через +.

У нас сейчас серьезно изменяется компилятор в плане включения давно ожидаемых режимов оптимизации. Через некоторое время будем показывать результаты.

 
Renat:

Похоже, что это срабатывает оптимизация конкатенации строк через +.

У нас сейчас серьезно изменяется компилятор в плане включения давно ожидаемых режимов оптимизации. Через некоторое время будем показывать результаты.

Ясно. Ну, если можно вы об этом явно опишите на форуме (стараюсь следить за всеми ветками).

Пока в алгоритме оставил работу "+". 

Причина обращения: