Блог им. UHSF
TSLab конечно хорошо, но сколько можно ждать? Жизни не хватит все идеи в нем проверить.
Чтобы уложиться в несколько часов, приходится сокращать периоды тестирования, параметры и увеличивать шаги перебора. Но это же неправильно.
А как правильно? Он же большие периоды сутками будет считать. К тому же, неожиданно синий экран смерти может появиться и придется все заново делать.
Чем больше времени идет расчет, тем более вероятен такой сюрприз и более неприятен.
В комментариях где-то мимолетно упоминали, что прогоняют несколько лет на минутных свечах за считанные минуты. В текущих ожиданиях TSLabа вообще не представляю, как такое возможно. Какая-то фантастика))
Расскажите как, с помощью чего оптимизируете и тестируете стратегии? Вроде многие занимаются, но нигде достаточно подробно не упоминается данная тема. Странно. Такая засекреченная тема или настолько сложная?
Поподробнее, пожалуйста! А то что-то туманное промелькнет в комментариях, что остается только мечтать…
Синий экран смерти говорит о проблемах с Вашим железом, а не о проблемах ТСЛаб. Можете запустить утилиту для тестирования устойчивости конфигурации машины под нагрузкой — и тоже будете получать BSOD-ы.
Может быть, пора пропылесосить все радиаторы в системнике. Может быть, снизить тактовую процессору и добавить кулеров, и/или заменить термопасту (только крайне аккуратно!). А то бывают варианты, когда покупаешь процессор через «друзей» они его разгоняют до предела и радостно говорят тебе, что «урвали топовый камень со скидкой». А система в целом становится нестабильной и периодически голубит.
BSOD был один раз спустя 5 часов оптимизации, вот и упомянул о нем.
Система в целом стабильна, проводились стресстесты в свое время. Но хоть редко, но бывают сбои.
UHSF, странно все же (про бсод). Гоняю оптимайзу сутками напролет с загрузкой проца под 100%. Все нормально.
Сбои питания парируются чуть более серьезным УПСом. У меня 8-12 часов может поддерживать функционирование всех машин.
ПС Либо брать VDS в дата-центре с оплатой «за использование ресурсов». Там вопрос с питанием уже решен давно и надежно.
А принципиально другие способы тестирования и оптимизации можете подсказать? Очень уж долго.
UHSF, пишите на support.tslab.ru чтобы сделали генетическую оптимизацию. Если наберется большая инициативная группа и Вы сможете показать им на пальцах сколько клиентов они теряют из-за того, что недоделан встроенный оптимизатор, то процесс сдвинется с мертвой точки.
Как опционщик, торгую стратегии, которые работают «по построению». Накопленный реальный опыт намного ценнее любых курвафитингов, которые сделает оптимизатор в моей ситуации.
Friendly Deep Space, здесь, возможно, срабатывает экономика.
В оффлайне тестирование и оптимизация бесплатны. Соответственно, есть отдельные безответственные граждане, которые сначала до посинения тестируют/оптимизируют в ТСЛаб, а потом идут переписывать найденную торговую стратегию под МТ или Квик. Или просто переносят сделки руками из тестера стратегий в рынок.
Соответственно, развитие оптимизатора для ТСЛаб не принесет никогда никакой коммерческой выгоды. Только если договориться, что генетический оптимизатор будет работать только при условии наличия оплаченного боевого подключения.
Либо надо делать как в другом софте, который продается «по частям»: чтобы за работу в нормальном оптимизаторе надо было платить отдельную абонентскую плату.
Но есть 2 основных «непринципиальных» способа:
1. Увеличить+улучшить память
2. Настроить ТСЛаб так, чтобы он её использовал по максимуму.
Пункт непростой — советую обратиться к техподдержке, помогут.
Ну и можно попробовать использовать облачные вычисления.
Как это делается в лабе не знаю. В Метатрейдере это элементарно — можно даже с друзьями друг другу помогать мощностями.
Советую мт5 — гиперзвук оптимизации.
А сама выработка матрицы занимает 3-5 минут на инструмент. Плюс кодирование и отладка, но последнее не регламентировано.
А. Г., поддерживаю.
обрабатывая руками результаты можно гораздо глубже понять то что получено, а заодно и оптимизировать идею, а то и новую создать.
есть еще вариант. Писать алго в МТ5 и пользовать их платным облачным вычислением. Миллиард проходов на длинной истории за считанные минуты =))
>>«прогоняют несколько лет на минутных свечах за считанные минуты»
речь об чем? — об одном прогоне (стратегия-инструмент-таймСерия-наборЗначенийПараметров)? или о всей оптимизации? — если о всей — тут как бы многое зависит от числа прогонов)).
Юзаю свой софт на C#. Быстро и под себя). Промежуточные результаты в файл — чтобы не было мучительно больно если что-то упало + можно в любой момент остановить и потом начать с того же места. Для того чтобы поддать жару можно юзать облака, которые можно масштабировать по производительности, ну и софт, конечно надо на потоки масштабировать, благо наши задачи на это дело отлично масштабируются.
Свой софт это наверное самое сложное решение. Но и самое лучшее видимо.
UHSF, Если запросов куча, то сложное, если мало и узкие — не сложное и отличный вариант. В общем всем ты я такое рекомендовать не стал, но в некоторых случаях — очень хороший вариант.
Ну тогда, раз вы про всю оптимизацию, обозначьте кол-во прогонов, по которым вы ожидаете что все за минуты просчитается.
Сколько кстати ТСлаб один прогон на 5 годах минуток, например, будет делать?
ТСлаб сильно теряет в скорости из-за больших периодов. Еще и по мере расчета скорость снижается. Вот что я зафиксировал, к примеру, на 158000 вариантов на всего 2-х годах уходит 4-5 часов (минутки). А если взять 10 лет… Ну это сколько оптимизировать я буду. Пока прооптимизируешь, уже забудешь что оптимизируется или не актуально станет вовсе))
Суть оптимизации в том чтобы получить табличку динамики параметров которую обычно можно охватить одним взглядом на экране. Тогда можно посмотреть зоны оптимальности, тренды итд.
Если же количество вариантов таково что Вы обозреваете пару сотен лучших (0.12% от 158000) то там нет идеи, это курв.
Как бы Вы предложили проводить оптимизацию? Начинать с большим шагом перебирать параметры, а потом максимально подходящий результат оптимизировать уже с меньшим шагом?
UHSF,
Начинать с большим шагом перебирать небольшое количество параметров, лучше по одному. Подобрали один, подобрали второй, вернулись назад и опять первый погоняли, даже так.
Вы в таком количестве вариантов теряете идею. Скажем есть у нас некая трендовуха на ударный день. Отложили от открытия икс и оптимизируем его, всего один параметр и смотрим как средний трейд растет, профит фактор растет, количество трейдов падает, доха падает. Другие параметры не трогаем. Нашли некий оптимум (или недооптимум но сделок побольше), гоняем фильтры — попробуем по тренду на дневках лучше нет? Потом тейкпрофит (хотя это дичь) отдельно на уже оптимальном параметре. Вернулись на итерацию назад.
И отсматриваем эквити, Вам декабрь 2014 к примеру вынесет в «хорошую» или наоборот «опустит» редкими событиями. Важно понимать Вы на удачном периоде подняли или есть некая робастность. Или оно уже во флете много лет и весь профит в 2014.
Т е разумно рисечим. Вообще мне сложно представить стратегию где больше сотни вариантов параметров, которые имеют смысл. Обычно один два параметра грубо и фильтры типа выше ниже тренда на большем фрейме или там неценовых данных.
«то Питон от C# уже будет отличаться на порядок или пару.»
Если бегать по барам то да, но есть векторные вычисления и numpy.
я думал речь про таймсерии, индикаторы и тд. Их подкеширование в память, чтобы лишний раз не гонять расчеты. Тогда прогоны идут в разы быстрее
А как у них с базой я и сам не знаю =)
все тестим в несколько этапов:
1. бэктестинг — на тиковой истории
2. демо-счет (мин. полгода)
3. реал-счет (мин. полгода)
P.S. торгую форекс (портфолио)
Когда параметров много лучше использовать более эффективные методы поиска их оптимальных комбинаций. Есть два известных метода более быстрого подбора параметров — случайный поиск (достаточно легко реализовать самому) и байесовская оптимизация. Для реализации второго подхода требуется много усилий, но они стоят того. Сам пишу на Питоне для него есть много библиотек для байесовской оптимизации — одна из наиболее известных hyperopt
Оперативки занято Амиброкером 296мб. Вирт машина на i5-3470, 4гб. Ну может кеширование на обычном компе будет подольше.
ТСлаб для рисеча? Не, нас и тут неплохо кормят.
2. Если не можете, оптимизируйте за один заход по 1 координате.
3. На крайний случай — метод монтекарло. Генерим случайную точку в пространстве парамеров и делаем один прогон. Если точка лучше, запоминаем. Повторяем не в очень напряжном цикле. В методе монте-карло хорошо работает чередование маленького случайного СДВИГА от наилучшей точки и случайного броска на всю площадь.
Quantstrat
Довольно древний, очень много возможностей. Есть оптимизатор. Кушает бары, тики. Страты нужно писать R.
github.com/braverock/quantstrat
QuantTools
Очень быстрый. Кушает бары, тики, бидаски. Есть оптимизатор. Исполнение через R, логика страт на С++
quanttools.bitbucket.io/
Arms22/backtest
Довольно быстрый. Кушает бары, тики. В оптимизаторе можно выбирать, что именно будем оптимизировать и за какое количество итераций. Графики пока не рисует, но можно и самому написать. Python.
github.com/arms22/backtest
У программистов свои илюзии на счет рынков.
у него ядро тестирование оптимизированно под кэш процессора, т.е. скорость максимальна, т.к нет обращения к медленно внешней памяти
2 обычно хороший бот это 1-2 параметра оптимизации… причем их можно тестить раздельно… еслии параметров много, то идея скорее всего не рабочая
Или все настолько круты, что тестят годовую линию по тикам?
p.s. Уточню, что речь идёт о том, что раньше сработает на такой свече: TP или SL?
По TSLabу спрашивайте лучше на их форуме, там точнее ответят по нюансам работы программы.
Создайте тему с этим вопросом, много нового узнаете, заодно и рейтинг поднаберется.