Jump to content

Рубрика: оптимизация кода и подбор железа для ускорения оптимизации советников


Recommended Posts

Programmer
На сайте http://articles.mql4.com/ru/80 написано:
Особенности работы тестера стратегий на истории

- Некоторые функции отрабатываются/пропускаются без вывода

Это Sleep(), Alert(), SendMail(), SpeechText(), PlaySound(), MessageBox(), WindowFind(), WindowHandle(), WindowIsVisible()

 

Это не совсем точно. Посмотрите логи в ходе тестирования советника на истории. Ф-я Alert() отрабатывается и выводится в них.

Link to post
Share on other sites
ReasonMan
Я придерживаюсь своей т. зр.: Alert() и Print() замедляют оптимизацию.

Поясню.

Когда происходит компиляция кода в рабочий файл *.ex4 компилятор выбрасывает все закомментированные строки. Поэтому, если Alert() и Print() закомментированы, то повлиять они никак на оптимизацию не могут.

Идём далее. Пусть Alert() и Print() не закомментированы. Действительно, при оптимизации в логи ничего не выводится, но за счёт чего это достигается? Ведь, эти ф-ии всё же присутствуют в исполняемом файле. Достигается вот за счёт чего: программа-оптимизатор, выполняя Ваш код, каждый раз, когда натыкается на ф-ю, которая должна быть проигнорирована, принимает решение об игнорировании оной. Это занимает процессорное время, соответственно, тормозит оптимизацию.

Логично, согласен. По тестам как раз и получается разница в несколько процентов видимо из-за этого.

Только что проверил. Alert действительно выводится в логи в режиме тестирования. М-да, таки не всему написанному можно верить...

Спасибо за пояснения! :yes:

Link to post
Share on other sites
Programmer
Логично, согласен. По тестам как раз и получается разница в несколько процентов видимо из-за этого.

Только что проверил. Alert действительно выводится в логи в режиме тестирования. М-да, таки не всему написанному можно верить...

Спасибо за пояснения! :yes:

 

Нет проблем. :beer_drink:

Обращайтесь!

Link to post
Share on other sites
  • 10 years later...
Aleks54321

Привет! Подскажите, пожалуйста, оптимизировал советник полгода назад за 2005 - 2015 года и подобрал хороший сет за 2000 - 2020 года. Сделки на реале совпадают с тестером. Сейчас прогнал этот сет у того же брокера, с тем же спредом и на том же периоде, а результаты другие, намного хуже. Брокер Альпари, хотя у других брокеров то же самое выявил. В чем может быть проблема.

Link to post
Share on other sites
Ugar68
6 часов назад, Aleks54321 сказал:

Привет! Подскажите, пожалуйста, оптимизировал советник полгода назад за 2005 - 2015 года и подобрал хороший сет за 2000 - 2020 года. Сделки на реале совпадают с тестером. Сейчас прогнал этот сет у того же брокера, с тем же спредом и на том же периоде, а результаты другие, намного хуже. Брокер Альпари, хотя у других брокеров то же самое выявил. В чем может быть проблема.

По описанию похоже что проблема в советнике. Особенно если он старый.


Пишу советники и индикаторы по вашим алгоритмам. Пишите в личку.
Чужие программы не переделываю.

Link to post
Share on other sites
  • 4 weeks later...
BauBok

Поделюсь определенным опытом.

1. Начинал оптимизирвоать а MT4 генетическим алгоритмом. Штука прикольная, но работает не очень быстро.

2. Написал свой тестировщик на Delphi. Загружаю графики и тестирую стратегию. Затем эти коэффициенты дают приблизительно похожие результаты с тестированием на MT4. Получается можно писать свои тестировщики на разных языках.

3. Подбор параметров (оптимизацию) сначала осуществлял генетичесиким алгоритмом, потом нашел более гениальный алгоритм- называется - метод роя частиц.

4. Все алгоритмы оптимизации можно паралелить на многоядерных машинах, я запускал и на 32 ядерных. Скорость тестирования и оптимизации - аховая, по сравнению с пунктом 1.

 

 

 

Edited by Capman
Link to post
Share on other sites
Ugar68
11.01.2021 в 18:32, BauBok сказал:

Поделюсь определенным опытом.

1. Начинал оптимизирвоать а MT4 генетическим алгоритмом. Штука прикольная, но работает не очень быстро.

2. Написал свой тестировщик на Delphi. Загружаю графики и тестирую стратегию. Затем эти коэффициенты дают приблизительно похожие результаты с тестированием на MT4. Получается можно писать свои тестировщики на разных языках.

3. Подбор параметров (оптимизацию) сначала осуществлял генетичесиким алгоритмом, потом нашел более гениальный алгоритм- называется - метод роя частиц.

4. Все алгоритмы оптимизации можно паралелить на многоядерных машинах, я запускал и на 32 ядерных. Скорость тестирования и оптимизации - аховая, по сравнению с пунктом 1.

Генетический алгоритм не очень хорошая штука. Он пропускает проходы. Не всегда находит лучший. Простой перебор всех проходов точно ничего не пропустит. Генетику и другие методы выбора проходов стоит применять когда их количество большое и жизни не хватит дождаться окончания оптимизации.

Тестер МТ4 старый и не обновляется давно. Метаквоты на него забили. На все обращения они рекомендуют переходить на МТ5. Тестер МТ5 действительно гораздо больше может. При оптимизации не только может раскидать проходы по потокам, но и задействовать сетевые агенты. Я бы не сказал что тестер МТ5 быстрый, но возможностей гораздо больше чем у старшего брата МТ4.


Пишу советники и индикаторы по вашим алгоритмам. Пишите в личку.
Чужие программы не переделываю.

Link to post
Share on other sites
  • 4 weeks later...
BauBok
15.01.2021 в 18:04, Ugar68 сказал:

Генетический алгоритм не очень хорошая штука. Он пропускает проходы. Не всегда находит лучший. Простой перебор всех проходов точно ничего не пропустит. Генетику и другие методы выбора проходов стоит применять когда их количество большое и жизни не хватит дождаться окончания оптимизации.

Тестер МТ4 старый и не обновляется давно. Метаквоты на него забили. На все обращения они рекомендуют переходить на МТ5. Тестер МТ5 действительно гораздо больше может. При оптимизации не только может раскидать проходы по потокам, но и задействовать сетевые агенты. Я бы не сказал что тестер МТ5 быстрый, но возможностей гораздо больше чем у старшего брата МТ4.

Не ну, конечно, в моем случае перебор не реален. Хотя может и возможен с больши шагом. Насчет Mt5 интересная информация.

Вообще лучше оперировать конкретными числами. Например, временем одного прохода, или частотой подбора "W". Т.ь сколько проходов за секунду.

В мт4 это число для 3х летнего графика будет меньше единицы W~0.03, т.к там может и минуту обсчитытвать один график. У меня получается на Xiaomi Air c 4мя потоками и по моей методе W¬3-10 а то и больше.    

Link to post
Share on other sites
Ugar68
5 часов назад, BauBok сказал:

Не ну, конечно, в моем случае перебор не реален. Хотя может и возможен с больши шагом. Насчет Mt5 интересная информация.

Вообще лучше оперировать конкретными числами. Например, временем одного прохода, или частотой подбора "W". Т.ь сколько проходов за секунду.

В мт4 это число для 3х летнего графика будет меньше единицы W~0.03, т.к там может и минуту обсчитытвать один график. У меня получается на Xiaomi Air c 4мя потоками и по моей методе W¬3-10 а то и больше.    

В МТ4 моделируются тики по алгоритмам в зависимости от формы бара. И сохраняются в fxt файл. Далее тестер работает с этим файлом.

А какой в Вашем тестере алгоритм моделирования тиков? И как тестер потом работает с ними? Или Ваш тестер только по истории баров работает без тиков?

Или Вы сравниваете с тестером МТ4 в режиме "по ценам открытия..."? Тогда он то же с целыми барами работает, но всё же сначала создаёт fxt файл, но уже в нём тик это бар.


Пишу советники и индикаторы по вашим алгоритмам. Пишите в личку.
Чужие программы не переделываю.

Link to post
Share on other sites
BauBok
07.02.2021 в 00:10, Ugar68 сказал:

В МТ4 моделируются тики по алгоритмам в зависимости от формы бара. И сохраняются в fxt файл. Далее тестер работает с этим файлом.

А какой в Вашем тестере алгоритм моделирования тиков? И как тестер потом работает с ними? Или Ваш тестер только по истории баров работает без тиков?

Или Вы сравниваете с тестером МТ4 в режиме "по ценам открытия..."? Тогда он то же с целыми барами работает, но всё же сначала создаёт fxt файл, но уже в нём тик это бар.

Я считаю, что лучше работать с барами (я лично испольую 30 минутные) Т.ь. всего 4 значения Open Close Highe Low  . D MT4 режим тестирования соответствует по ценам открытия. Таким образом тестироваие происходит намного быстрее и собственно сделки начинать в момомент прихода(окончания) бара. Учитывать все тики занятие бксполезное, все равно все индикаторы считаются по барам. Такая методика значительно ускоряет процесс оптимизации советника.

 

Link to post
Share on other sites
Ugar68
1 час назад, BauBok сказал:

Я считаю, что лучше работать с барами (я лично испольую 30 минутные) Т.ь. всего 4 значения Open Close Highe Low  . D MT4 режим тестирования соответствует по ценам открытия. Таким образом тестироваие происходит намного быстрее и собственно сделки начинать в момомент прихода(окончания) бара. Учитывать все тики занятие бксполезное, все равно все индикаторы считаются по барам. Такая методика значительно ускоряет процесс оптимизации советника.

 

Но тогда и советник должен всё делать только в моменты открытия новых баров. Даже применение обычных стопов и тейков под большим вопросом. А тестер МТ4 придуман как универсальный инструмент. Именно по этому он использует fxt файл посредник, а не бежит прямо по файлу истории. Хотя к файлам истории других символов он может обращаться, но моделировать тики по ним не может. Тестер МТ5 сильно отличается. Он не только может обращаться к файлам истории других символов, но и моделировать тики по всем используемым символам. А самое интересное что он умеет работать по реальным тикам, если брокер предоставляет их историю.


Пишу советники и индикаторы по вашим алгоритмам. Пишите в личку.
Чужие программы не переделываю.

Link to post
Share on other sites
MG4
2 часа назад, BauBok сказал:

Я считаю, что лучше работать с барами (я лично испольую 30 минутные) Т.ь. всего 4 значения Open Close Highe Low  .

 

если стоп и тейк укладываются в high - low одного бара, кто будет вперед?

стоп или тейк?


— Маржинкольщик наколи мне маржинкол.

Только качественная аналитика в ветке ПАММ-а MTSavg

 

Link to post
Share on other sites
DVargo

 

15 часов назад, Ugar68 сказал:

Именно по этому он использует fxt файл посредник, а не бежит прямо по файлу истории. Хотя к файлам истории других символов он может обращаться, но моделировать тики по ним не может.

файлы fxt, так и файлы истории можно собирать самому.

Я на заказ делал людям нестандартные таймфреймы, 1с, 30 с и др., тики как бар.

Некоторые делают экзотику, например в 12 мин, 6 с и т.д. - для чего это им надо не знаю.

 

Раз делал потиковое моделирование в Excel на заказ. Там чел новости обыграть хотел. Я его сразу предупреждал, что результаты тестов очень сильно будет от реала отличатся. офквоты уже лет 10 как вылечить не могут. И счета иногда на новостях в аут на пару минут уходят.

 

Каждый изгаляется как может. Не всем хватает возможностей МТ4 штатных, а МТ5 не везде есть, да и люди в основном не программисты.

 

Edited by Capman
п.1
  • Upvote 1
Link to post
Share on other sites
BauBok
15 часов назад, Ugar68 сказал:

...

Привет, в общем про fxt файл посредник я узнал только сегодня, из ваших писем, и в целом я не вижу разницы откуда читать историю из файла некого fxt или файла истории... я просто скажу как у меня и какая логика. Если сделки происходят с частотой раз в день или 2-3 раза в день, то вполне можно открывать сделки только в момент прихода 30 мин. баров. Стопы и тейк профиты при моделировании отрабатываются значениями баров H/L с учетом спреда. Спред выставляется экспериментальный из реальных наблюдений и одинаковый для всей истории -точнее не абсолютное значение, а его относттельное значение. Понятно, что срабатывание стоплоса/тейкпрофита  моделируется с точностью в пределах длительности бара - 30 мин, но для задачи моделирвоания это не важно, главное знать, что  событие произошло. В целом эта методика правильно моделирует реальную ситуацию, помоему.

 

12 часов назад, DVargo сказал:

А вот тестить на ноутах это абсдец. Их системы охлаждения не предназначены для убивания процессора.

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

 

15 часов назад, MG4 сказал:

если стоп и тейк укладываются в high - low одного бара, кто будет вперед?

стоп или тейк?

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

Link to post
Share on other sites
DVargo
10 часов назад, BauBok сказал:

почему-то ноутов стало жалко, современные ноуты уже без охлаждения, дают фору любым 32 ядерным стационарникам.

Ваш хаоми ват 40-45? А например у AMD Ryzen 9 3950X BOX 105 ват. Вы знаете за счет чего такая разница и куда ваты идут.

(Ноут полная мощность и чисто процессор, если что).

 

Ваш хуоме за 60К (ориенировочно) 4 ядра по 1,4-1,6?

Ryzen 9 3950X 16 ядер по 3,5.

и рязань стоит 70К  + мать, видюха, память, блок - около 20К, и того 90К.

Монитор, клава, мыш - возможно у вас осталась от предыдущего компа, но можно и БУ. ибо не критично.

 

Я что-то пока 16 ядерных ноутов в продаже не видел.

8 ядер

Acer Nitro 5 AN515-44-R78Y 8 по 2,9 стоит 73К.

 

Edited by Capman
п.1
  • Upvote 1
Link to post
Share on other sites
DVargo

Забыл, по поводу fxt файла.

 

А  разница есть - в зависимости от тикового объема или реальных тиков fxt файл может быть очень большим.

У меня файлик минуток 50 мб за 2,5 года (870К минуток).

Такой же fxt будет в районе гига или больше, проверять надо. не делал давно большие тесты.

И потом вопрос, а как мы с ним работаем - загоняем в память и грузим оперативку и если пишем свой тестер не на мт4, то можно резать на отдельные файлики, например по месяцам, и уже с ними работать.

А это уже оптимизация времени теста.

Не все так однозначно.

 

Да и цифры странные 50М - минутки.

1Г или около - тики. разница 20раз.

 

В сутках 1440 минут и около 100К тиков - разница в 70 раз.

Но в миутках - 4 котировки (дабла), время, объем.

В тиках 2 + время.

По памяти не помню структуру файла, забывается все.

 

Так что появился такой вопрос - скорость чтения и записи на винт и объем оперативки.

Это для МТ4.

 

А вот если МТ5 и мультивалютник - вот этого я не знаю, не пробовал.

Там файлик больше будет и на сколько - количество пар?

И работает ли мт5 с одним файлом. Что-то как-то с этим не парился.

Тестил на мт4 и переписывал код под мт5.

На мт5 тестил только на работоспособность.

Надо будет проверить, когда не лень будет.

 

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

А битность у нас 64 - то есть пределом в 4Гига мы не ограничены.

Edited by DVargo
Link to post
Share on other sites
BauBok
7 часов назад, DVargo сказал:

..

 

Файлы истории скачиваю прям из MT4 , из раздела архивные данные, если используете спец ссылки и гигабайтные файлы, то ок, у меня файлы 30 мин выходят порядка 2-4 MБ, в этом и преимущество отказа от тиковой торговли и перхода на баровые, таскать гигабайтник по памяти как то неудобно.

Вот как раз AMD Ryzen 9 3950X 16 ядерный у меня и есть и ноут Xiaomi air, первый насобирали за 120 т, второй стоит 40, производительность у них отличается в зависимости от алгоритма в 2 -3 раза, мне ваши ваши перемножения никчему, у меня есть конкретные цифры скорости рассчета по методу роя частиц, в многопотоковом режиме.  

Теперь об интересном. Метод роя частиц при 10-20  подбираемых параметрах, конечно, на AMD Ryzen дает хорошие результаты, но Xiaomi air находит результаты не хуже... понятно, что в такой системе трудно найти абсолютный оптимум функции оптимизируемой. Но факт остается фактом -Xiaomi air хоть и 2-3 раза слабее, все равно позволяет локально находить хорошие сеты.  

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

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

 

Edited by Capman
Link to post
Share on other sites
DVargo

Я не знаком ни с методом роя частиц, ни с тем как вы его воплотили в коде.

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

Например Ryzen 3200 4х3,6ГГц в производительности дает как I-5 4х3 ГГц. Вот это очень похоже на правду.

И где гарантия что у вас там дополнительно какого-то интерфейса нет или умеете грузить все ядра -

где скрины тестов, это у вас теория с практикой не сходится, а у нас все по теории.

 

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

на 2-3 раза слабее очень уж сомнения, вот 4-8 где то похоже, и то если в турбо, и не дольше 2-3 часов.

По теплопакету раз в 5-6 получается.

 

и вы там что-то говорили про "производительность/цена" - где расчет или наоборот цена/производительность?

 

4 часа назад, BauBok сказал:

у меня есть конкретные цифры скорости рассчета по методу роя частиц, в многопотоковом режиме.

Так ознакомьте нас с ними, а то у нас все по другому, и скрины загрузки проца приложите.

Edited by DVargo
Link to post
Share on other sites
BauBok
2 часа назад, DVargo сказал:

Так ознакомьте нас с ними, а то у нас все по другому, и скрины загрузки проца приложите.

Тут возникает вопрос как тестировать железо, чтобы это был тест приближенный к полевым условиям (с учетом скорости обращения к памяти). Если взять тестеры из интернета, например, https://www.guru3d.com/files-get/cinebench-15-download,1.html   то он действительно дает превосходство CPU  у Ryzen и Xiaomy Air в 26 раз

1.  4156 cb - на AMD Ryzen 9 3950 16-Core - вот только протестил

2. 156 cb  - 2 Core Intel Core m3-7Y30  

Если я беру задачу оптимизации, в качестве тестовой функции можно взятьфункцию Шейфеля, ее оптимум известен Xi=420.9687....  см.  сайт https://www.sfu.ca/~ssurjano/schwef.html  можно взять 15 размерную - с 15 неизвестными .

И делаю программу на Delphi 7 поиском решения методом роя частиц

то при 100% загрузке 1) Выдает скорость поиска 1600 частиц/ms  (30 потоков)  второй 500 частиц/ms (4 потока)

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

Если кто понимает в чем дело, напишите. 

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

 

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...