Как ускорить оптимизация советника в мт5 - страница 5

 
Алексей Тарабанов:

ЕрНИИММ? 

Помнится там практику проходил в далеком 1982г

 
Dmitry Fedoseev:

Хоть один примерчик покажите.

Дело в том, что любая структура - строка, в которой упакованы элементы этой структуры. 

Допустим, Ваша задача - формирование выборки из базы данных по совпадению нескольких (N) полей. 

При адекватном проектировании структуры базы данных под набор конкретных задач никто не мешает заменить совокупность N операций сравнения значений полей и N операций преобразования типов данных из строки в нужный формат на ОДНУ или ДВЕ операции со строкой. 

Я это делал в 1993 году в СУБД Clarion при разработке базы данных о коммерческих банках России по заказу КБ "Новый Символ". Банков тогда было примерно 4500, а техника была слабенькая, но алгоритм компенсировал ))

 
Petros Shatakhtsyan:

Об этом когда-то уже говорили, помню :)

Но первую программу написал еще раньше на Algol 68, на Минск 32, на перфоленте, а курсовая задача была линейное программирование, симплекс методом. 

На Минск 32 были перфокарты. Прогресс. 

 
Алексей Тарабанов:

На Минск 32 были перфокарты. Прогресс. 

На Минск32 я впервые работал с перфолентой. Но перфокарты тоже были.

Если программа небольшая, то лучше было использовать перфоленты. Считывание намного быстрее. Но чтобы что-то удалить, добавить или изменить, надо было заново его подготовить.

Вот автор темы спрашивает как ускорить оптимизацию. Почему старые профессионалы хорошо знают как это делать ?

Потому что мы раньше работали с большими массивами на больших ЭВМ, где  ОЗУ было всего 256KB, а пакет магнитных дисков 29MB.


Для ускорения оптимизации, в первую очередь надо написать оптимальный код. А потом, сначала надо оптимизировать на больших диапазонах входных параметров(но в разумных пределах).

При этом, чтобы уменьшить количество вариантов, нужно брать большой шаг изменения. И после анализа результатов каждый раз уменьшить количество вариантов(2 и более). И каждый раз начало и конец изменения параметров выбрать так, чтобы оптимальный вариант был в середине этого предела.

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

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

Также можно считать количество сделок. Если в течение месяца нет ни одной сделки, тоже можно прерывать. Это зависит от торговой стратегии.

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


К сожалению всё зависит от вашей модели торговой стратегии. Если у вас плохая модель, то никакая оптимизация не помогает, даже если это делается каждую неделю. Это от того, что поведение рынка всё время меняется.

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


P.S.  Когда кто-то на форуме пишет больше 3-х строк, то я не читаю  :)

 
 Ставлю период около месяца и таймфер около 15-13 минут, тогда проверка больше 5ти минут не занимает 
 
ELdorado76:
 Ставлю период около месяца и таймфер около 15-13 минут, тогда проверка больше 5ти минут не занимает 

Это время одного прохода или время оптимизации ?

Приведу пример: один проход за один год, несложный робот проходит за 15 сек в режиме реальных тиков, таймфрейм не имеет значение.

Довольно сложный робот тоже на реальных тиках проходит за 42 сек. Эти результаты после скачки тиковой истории.

Виртуальное тестирование несложного робота, проходит меньше 1 сек. К этому надо прибавить несколько секунд для копирования тиковой истории.

Количеств тиков ~25млн. Есть брокеры у кого тиковая история 3-4 раза больше. Скорость конечно зависит также от скорости процессора, ~3.6ГГц, и от диска.

 
Petros Shatakhtsyan:

Это время одного прохода или время оптимизации ?

Petros Shatakhtsyan:

Это время одного прохода или время оптимизации ?

Приведу пример: один проход за один год, несложный робот проходит за 15 сек в режиме реальных тиков, таймфрейм не имеет значение.

Довольно сложный робот тоже на реальных тиках проходит за 42 сек. Эти результаты после скачки тиковой истории.

Виртуальное тестирование несложного робота, проходит меньше 1 сек. К этому надо прибавить несколько секунд для копирования тиковой истории.

Количеств тиков ~25млн. Есть брокеры у кого тиковая история 3-4 раза больше. Скорость конечно зависит также от скорости процессора, ~3.6ГГц, и от диска.

 время оптимизации 
 

Вопрос к гуру оптимизации мт5

Может ли кто-то написать пример простенького и быстрого советника?

с использованием любого стандартного индикатора. например машки. с анализом на первом закрытом баре?

что то типа если open[0] > MA[1] то покупаем с фикс сл и тп и соотв. продаем от обратного.

нет сигнала, ждем когда нулевой бар закроется

не важен торговый результат, именно с точки зрения оптимизации скорости тестирования

именно чтобы летал, как некоторые приводили примеры таймингов

 
Здравствуйте, пытаюсь ускорить тестирование с помощью функции TestorStop() в ОnTiket останавливая отдельное тестирование если эксперт достигает неприемлемых значений. В результате отдельные прогоны идут быстрее других и один из агентов тестирование финиширует первым( где то читал что если агент тестирования простаивает какое то время, то он отключается) - когда все оставшиеся агенты финишируют, первому агенту задания не отправляются. И так один за одним агенты тестирования выбывают, пока не останется один агент - в этом случае  о скорости и говорить нечего. Тоесть скорость можно увеличить, но не позволяют технические ошибки реализации распределенных вычислений. Если запустить TestorStop() в OnInit() например для оптимизации 2 параметров один из которых должен быть больше другого при первом прогоне скорость тоже увеличивается, а после агенты тестирования перестают выполнять задания хотя задания отправляются, причем счётчик отправленных заданий увеличивается с большой скоростью, а счетчик решёных агентом заданий стоит. Может кто знает как это обойти, так - тема то интересная, скорость тестирования за счёт откидывания не нужных  результатов в 10-ки раз больше чем при обычном тестирование, к тому же обнуляя не нужные результаты в OnTest() можно направлять генетический алгоритм в нужном нам направлении!
MQL5 Cloud Network ускоряет расчеты
MQL5 Cloud Network ускоряет расчеты
  • www.mql5.com
Можно долго перечислять все преимущества новой торговой платформы MetaTrader 5 и приводить доводы в пользу того, что она лучше других программ для технического анализа и торговли на финансовых рынках. А можно одним словом прекратить любые споры и поставить жирную точку в подобных дискуссиях. И это слово - тестер торговых стратегий в клиентском...