Блог им. akumidv
Если вы используете стратегии в трейдингвью, например чтобы быстро накидать прототип идеи из какого нибудь источника и посмотреть её, то у вас наверняка также появлялся вопрос поиска приемлемых параметров и проверка как они влияют на стратегию. Делать это вручную крайне трудозатратно. Простейшая стратегия двух скользящих средних может давать 400 и более вариантов параметров. А любое увеличение кол-ва параметров и диапазона их значений приводит к необходимости перебора значений растущих в геометрической прогрессии. Например стратегия из 5 параметров по 15 значений дает 15 ^ 5 = 759 375 вариантов. Подобрать их руками, когда один вариант вычисляется пару секунд не реально.
А можно ли автоматизировать этот процесс? Ниже описание решения через расширение для браузера на основе Chrome.
В прошлый раз я публиковал статью, в которой говорил об ассистенте для tradingview реализованного как расширение для хрома. Расширение позволяло загрузить внешние сигналы покупки/продажи с метками времени на график. В этом расширении и была реализована дополнительная функциональность для тестирования стратегий.
Небольшое видео с короткими комментариями на английском (расширение для универсальности также сделано на английском).
Что расширение позволяет делать:
Все проверки начинаются с поиска лучшего состояния из текущего значения результатов тестирования стратегии, параметров по умолчанию и лучшего найденного. Логика методов такая.
Случайный метод выбирает случайным образом параметр и случайно определяет его значение из диапазона значений. Если найденное значение соответствует фильтру (или фильтр отключен) и оно лучше чем предыдущее по оптимизируемому параметру, это состояние запоминается и следующий поиск будет осуществляться из него. Случайная комбинации всех параметров не проверяется. Этот метод подойдет если параметров достаточно много и нужно попытаться улучшить текущий результат без их перебора и выйти из «неглубокого» экстремума.
Последовательный метод проходит все параметры по очереди в соответствии с заданным приоритетом. Для каждого параметра осуществляется проверка всех значений. Если при каком-то значение параметра результат лучше, то это состояние и комбинация параметров запоминаются и далее они используются для оптимизации. Метод подойдет для поиска лучшего значений в «окрестности» уже найденной комбинации параметров.
Метод отжига. Реализация его не самая эффективная, так как необходимо было решить противоречивую задачу нахождения чего-нибудь разумного за малое кол-во итераций (1000 итераций в tradingview можно перебрать в лучшем случае за час). Метод работает следующим образом. В основе метода функция температуры — т.е. «остывания» она влияет на случайность. Температура используется в трех условиях влияющих на выбор состояния:
Метод отжига больше подойдет для первичного поиска параметров. Его можно запускать множество раз — он позволяет выйти из локальных экстремумов параметров в которых будут застревать случайный и последовательный метод.
К сожалению моя реализация метода отжига неоптимальна и более того не канонична (метод коши и больцмановские формулы у меня показали плохие результаты на большом количестве параметров) и больше базируется на основе практических соображений. Если есть у кого-то ссылки на материал где рассматривается эффективная оптимизации множества параметров сразу, в т.ч. другими методами не сложными алгоритмически, буду благодарен.
Мои эксперименты с функцией обычной параболы, у которой только один экстремум, при подборе оптимума для неё в многомерном пространстве параметров (т.е. комбинация из 10-15 функций с 10ю значениями параметров это 576 650 390 625 комбинаций), показывают, что метод работает не очень. Иногда и 80% эффективности не показывает от возможного максимума (диапазон результатов обычно 85-95%). Соответственно для сложных функций все конечно будет ещё хуже, хотя он быстрый. Примерный максимум достигается за 1000 шагов и далее от количества циклов почти не улучшается (если «встряска» не выводит из экстремума), но можно перезапустить заново.
Скачать можно из репозитория на github. Прямая ссылка на архив zip.
Как установить, описывал в предыдущей статье. Коротко:
Возможно это ускорить?
Maxim Protasov, время вычисления обуcловлено двумя факторами:
1. Все вычисления стратегий происходят на сервере трейднигвью, туда отправляется запрос, происходит вычисление и получается ответ, потом этот ответ отрисовывается в таблице результатов. Все это занимает от 1 до 3 секунд обычно. Это невозможно ускорить.
2. Время открытия окна и задания параметров. Здесь открытие окна невозможно изменить, это браузер. А вот с параметрами теоретически можно ускорить, но это очень большой объем работы. Сейчас реализован проход по элементам параметров. Чем их в стратегии больше, тем дольше это происходит. Здесь задержка до 0.5 секунд обычно. Т.е. 20% от всего времени потенциально.
В новой версии 1.1. которая сегодня отправлена на публикацию немного ускорен парсинг данных, но это доли секунды.
По первому сообщению — сначала нужно расчитать саму стратегию, чтобы были результаты для сохранения.
Leonard Prokopenko, такая ошибка была 18 августа и исправлена 20 августа, у вас точно поледняя версия 1.15 расширения?
Ошибки лучше писать на гитахбе.
Спасибо огромное! )
Блин, TV опять поменяло UI, расширение, естественно, перестало работать. Буду крайне признателен, если восстановите работоспособность.
С неизменным уважением и благодарностью, HansQu
Позвольте узнать, почему сохранение настроек часто сбоит? Ну то, что русские слова идут набором иероглифов, это еще ладно, но когда сохраненное загружаешь, то нет гарантии, что все «встанет», как оно сохранено. И достаточно часто. Этим грешит и версия Давида и ваша.
Под соответствующую кодировку, чтоб не мучиться, скачал отдельный аналог эксель, 90% сразу решились. НО! нет гарантий, что все записи встают корректно в ячейки. Часто скачут вправо, слетает выравнивание по краям. Как избавиться от перечисленных проблем и нет ли в планах сделать подобный проект для русскоязычной аудитории? Где не надо переходить по ссылке и работает с нашей кодировкой.
спасибо
Джорж Сорос, я переделываю структуры работы с параметрами, чтобы реализовать возможость устанавливать с одинаковыми именами (т.е. по порядку) и в одной строке.
После этого сделаею рефакторинг и сохранения/загрузки параметров. В коде используется протой конверт в CSV возможно там для определенных комбинацией названий — есть проблемы. Это обсусловлено некоторыми лимитами на расширение.
Александр Трофимов, изначально целевая аудитория англоязычная — основной язык в браузере английский у > 50%.
По установкам расширения русский язык у 10%, но региональные установки в России около 5%. Вообщем нет смысла для опенсорсного расширения.
Jozeph Mayson, this error are occurs when extension does not find results of backtesing when you click to save them or after backtesting. There are two possible reasons:
— changes in TV UI, but I checked today — it works (but some countries have early updates before another one)
— backtesting parameters for your strategy are very narrow, so strategy does not have any results (performance table is empty)
It's better to take screenshot with error and TV chart and attach it issue on github repository: github.com/akumidv/tradingview-assistant-chrome-extension/issues