У хорошего мастера должны быть хорошие инструменты – у кузнеца – молот, у столяра – рубанок, у алготрейдера… — оптимизатор.
Выкатил новую версию.
Настоящий мужской оптимизатор конечно же должен быть консольным. Этот красавчик быстр – 10 лет 5-минуток на простой стратегии вместе с вычислением всяких там PF, RF 0,3 секунды. И это на одном потоке! (с многопоточностью, к слову, пока не смог подружить, но заложил такую возможность).
Бэктестер берет задания из csv файла и пашет. Т.е. на данный момент задания на оптимизацию задаются в момент создания файла с заданиями, решил поменять план оптимизации – меняю файл – меняется дальнейшая оптимизация. Т.е. по факту сейчас план на оптимизацию предустановленный, но легко прикрутить в дальнейшем оптимизацию с обратной связью на результаты предыдущих бэктестов. Меня всегда смущали стандартные оптимизаторы в этой части – где перебирается один параметр, или несколько строго итерационно, но я не мог задать явно другие алгоритмы перебора или в общем случае даже не перебора, а «изменения» значений. А здесь могу: т.е., могу за раз закинуть задания сразу на нужное количество гипотез, хочу посмотреть, как стратегия себя ведет между тикерам – не трогаю ничего, меняю только тикер, хочу проверить как ведет себя между тайм-фреймами – меняю только тайм-фреймы и т.д., т.е. минут за 5-10 во всемогущем экселе можно создать файл с заданиями для нужного набора гипотез. Потом когда бэктестер отработает – берешь эксельку и дата-майнишь данные.
Все-таки когда ты точно знаешь, чего хочешь, свой бэктестер это кайф! Нужна скорость, но не нужна какая-то функциональность – супер, не делаешь тормозящую функциональность, получая преимущество в скорости, интересует какая-то конкретная парадигма в оптимизации – отлично, пилишь архитектуру именно под парадигму, без оглядки на стандартные «лучшие практики», «модные мнения» и прочие «а вот я так делаю, а ты какую-то херню».
Более менее ООПшная прога получилась, так что есть надежда, что можно мяса при необходимости накрутить с контролируемым уровнем сложности и поддерживаемости.
Если вдруг кто-то собирался завидовать – не надо, вам бы не понравился мой оптимизатор. Думаю, он будет нравиться только мне! :)
Вселенная откликается на мой зов) – плотнее врастаю в алгоритмическую торговлю и алгоритмическую среду общения, всего становится больше и в целом много), а учитывая, что я пока не оторвался от островка безопасности в виде не связанной с трейдингом наёмной работы, это может представлять некоторые сложности)). Один из секторов этого «много» — самописный тестер. Сейчас буду проводить тесты скорости, сравнивать в Велс-лабом. Что-то мне подсказывает, что на длинной дистанции (большое кол-во баров) Велс вообще сломается, не говоря о скорости)). А скорость, действительно, любопытно замерить. Если она будет не хуже – это для меня уже победа, если лучше – вообще супер. Хотя я знаком с выражением «архитектура приложения» поскольку-постольку, но тем не менее постарался архитектурно заложить большой потенциал)). Когда всё заработало (написанная удобным образом простенькая стратегия посчиталась и выдался результат прогона) – испытал неизведанное доселе и довольно приятное ощущение от того, что ты точно ЗНАЕШЬ, как работает твое приложение и ты можешь в рамках архитектуры править всё что хочешь, нет табу, нет нельзя, нет ограничений, есть только приоритеты, ну и конечно, как сказал выше – архитектура. Одна из целей написания своего тестера – желание реализовать свои идеи в процесс оптимизации, которые невозможны/не удобные в случае существующего на рынке софта. В общем, посмотрим.