Обсуждение статьи "Практическое использование нейросетей Кохонена в алгоритмическом трейдинге (Часть II). Оптимизация и прогнозирование"

 

Опубликована статья Практическое использование нейросетей Кохонена в алгоритмическом трейдинге (Часть II). Оптимизация и прогнозирование:

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

Попробуем на этот раз спрогнозировать поведение серебра и визуализируем весь процесс в тестере. Индикатор будет обучаться на лету на последних 250 днях (1 год) и переучиваться каждые 20 дней (1 месяц). Файл с настройками unity-forecast-xag.set приведен в конце статьи. Важно отметить, что набор инструментов расширен: EURUSD,GBPUSD,USDCHF,USDJPY,AUDUSD,USDCAD,NZDUSD,XAUUSD,XAGUSD. Таким образом, мы прогнозируем XAG не только на основе котировок валют Forex и самого серебра, но и золота.

Вот как выглядит тестирование на периоде с 01.07.2018 по 01.12.2018.

Unity-Forecast: прогнозирование движений серебра по кластеру Forex и золота в визуальном тестере MetaTrader 5

Unity-Forecast: прогнозирование движений серебра по кластеру Forex и золота в визуальном тестере MetaTrader 5

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

Автор: Stanislav Korotky

 
Спасибо за качественный и интересный материал. Две статьи в одной, по сути.
 
Посмотрел статью - вторая часть достаточно оригинальна, но в первой части про анализ результатов оптимизации нет ничего полезного. Хотя тема анализа результатов оптимизации крайне важна для выбора таких параметров, которые станут залогом стабильной работы советника. Достаточно известной гипотезой тут считается предположение, что если выбрать такой локальный максимум прибыльности, около которого убывание прибыльности идет полого при отклонениях в значениях входных параметрах, т.е. вокруг которого градиентная функция убывает плавно, тогда мол даже при изменении рыночных условий реальные результирующие показатели работы советника будут ухудшаться плавно относительно эталонных и ожидаемых  значений, определенных при тестировании.  В более продвинутом случае нужно включить в целевую функцию не только прибыльность, но еще оценку устойчивости иных выходных показателей. Т.е. необходимо искать не плато, а холмы в пространстве выходных переменных, но расположенные на примыкающих друг к другу участках входных переменных. 
К сожалению не увидел вообще что бы автор решил эту задачу картами Кохонена.
Более того, сам подход, когда автор удаляет убыточные точки в корне неверен - это как раз могут быть соседние точки в пространстве входящих переменных, провалы доходности в которых свидетельствуют о нестабильности прибыльной комбинации. 
 

Работа, безусловно, качественная. Хорошее пособие по использованию нейросетей в аналитике и трейдинге.

В качестве обсуждения, хотел бы добавить следующее (по разделу «Оптимизация»):

По утверждения автора, «эксперимент не позволил выявить оптимальных настроек». По моему мнению, причины следующие:

1. В качестве исследуемых (при оптимизации) использовались параметры традиционных индикаторов (RSI, MA. Parabolic). В целом, это очень грубые аналитические инструменты, поэтому опытные трейдеры, как правило, не используют их для реальной торговли. Результат должен улучшиться, если вместо указанных  индикаторов использовать свечной анализ, но неклассические модели (мой опыт тестирования «классики» показал их неэффективность). То есть в качестве оптимизируемых параметров можно использовать параметры свечи (амплитуда, величина тела свечи, величина теней). Изменение этих параметров во времени является значительно более точным аналитическим инструментом, чем сигналы традиционных индикаторов.

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

3. В качестве анализируемых финансовых инструментов, автор выбирает золото и серебро (защитные активы, по мнению автора менее зависимые от фундаментальных факторов). Думаю, что для полноценного анализа, наоборот, надо использовать наиболее торгуемые инструменты, и прежде всего EURUSD как наиболее характерный (с точки зрения динамики) финансовый инструмент. Также (в анализе) не надо бояться волатильности и так называемого «шума» рынка (движений на малых таймфреймах), так как это проявления природы рынка, его естественные элементы.

 
Согласен с замечаниями. По некоторым пунктам в статье привел объяснения (например, что касается использования результатов генетической оптимизации, необходимости добавления других масштабов/показателей и пр.). Одна из задач была - предоставить инструментарий и общие подходы для исследования на боевых роботах. Поделитесь своими результатами.
 
Stanislav Korotky:
Согласен с замечаниями. По некоторым пунктам в статье привел объяснения (например, что касается использования результатов генетической оптимизации, необходимости добавления других масштабов/показателей и пр.). Одна из задач была - предоставить инструментарий и общие подходы для исследования на боевых роботах. Поделитесь своими результатами.

Это не замечания, а просто предложения, так как статья отличная.

 

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

   TesterStatistics(STAT_PROFIT_TRADES)/TesterStatistics(STAT_LOSS_TRADES). Или такой TesterStatistics(STAT_MAX_CONPROFIT_TRADES)/TesterStatistics(STAT_MAX_CONLOSS_TRADES). В реальности надо увязывать больше параметров.

 

Заинтересовала часть статьи, что касается выбора плато на результатах Оптимизации. Не совсем понимаю, как можно делать какой-то анализ из карт, если они получены из случайного CSV? В статье об этом прямо написано, что был сделан просто ГА с отбрасыванием мусора после.


Как бы ближе к практике подойти? Вот есть советник и надо найти плато.


И еще. По какому принципу выбираются ячейки при построении карт? Наверное, что-то пропустил в описании, но очень туго идет понимание.

 
fxsaber:

Заинтересовала часть статьи, что касается выбора плато на результатах Оптимизации. Не совсем понимаю, как можно делать какой-то анализ из карт, если они получены из случайного CSV? В статье об этом прямо написано, что был сделан просто ГА с отбрасыванием мусора после.

Как бы ближе к практике подойти? Вот есть советник и надо найти плато.

И еще. По какому принципу выбираются ячейки при построении карт? Наверное, что-то пропустил в описании, но очень туго идет понимание.

В статье - больше про сам инструмент, а про то, как получены данные для анализа - хоть и сказано, но исследований не проводилось. Это фронт для еще может не одной статьи - в частности, по сравнению пространств решений обычной и генетической оптимизаций. Полный перебор никаких смещений не дает - если есть возможность, используйте его. Однако термин "случайный CSV" вряд ли уместен, или же подобран некорректно - иначе можно сказать, что все результаты оптимизации в МТ случайные. Отбрасывание явных выбросов - нормальная практика имхо.

По поводу выбора ячеек при построении карт - не понял вопроса.

 
Stanislav Korotky:

В статье - больше про сам инструмент, а про то, как получены данные для анализа - хоть и сказано, но исследований не проводилось. Это фронт для еще может не одной статьи - в частности, по сравнению пространств решений обычной и генетической оптимизаций. Полный перебор никаких смещений не дает - если есть возможность, используйте его. Однако термин "случайный CSV" вряд ли уместен, или же подобран некорректно - иначе можно сказать, что все результаты оптимизации в МТ случайные. Отбрасывание явных выбросов - нормальная практика имхо.

Случайность ГА  - сползание в локальный экстремум, который может происходить по-разному каждый раз. Т.е. картина ГА и полного перебора могут очень сильно отличаться (после выбрасывания мусора в обоих вариантах).

Вот с такой ерундой столкнулся на ГА

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Новая версия платформы MetaTrader 5 build 1930: Плавающие окна графиков и .Net библиотеки в MQL5

fxsaber, 2019.02.02 09:54

Лог генетической оптимизации
PH      0       11:40:35.073    Tester  genetic optimization finished on pass 9216 (of 30240000)
FI      0       11:40:35.563    Statistics      optimization done in 1 minutes 51 seconds
JP      0       11:40:35.563    Statistics      shortest pass 0:00:00.014, longest pass 0:00:01.329, average pass 0:00:00.177
II      0       11:40:35.563    Statistics      local 3891 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)

Из 30 миллионов вариантов сделано меньше 4К, что длилось меньше двух минут. Как увеличить точность ГА? Лучше бы 2 часа считал, но выдал более объективный результат.

В MT4 такого же не происходит.

Получается, что для более-менее объективности нужно десяток раз запустить ГА хотя бы с одним и тем же OnTester. Видел, что Вы рекомендуете различные критерии делать для разных подходов к Оптимизации. Но все же штатный ГА какой-то странный. Поэтому решил сделать иначе - см. ниже.

По поводу выбора ячеек при построении карт - не понял вопроса.

В статье во время анализа разных карт используется свойство, что в двух картах ячейка с совпадающими координатами (X; Y) соответствует одному и тому же набору входных параметров ТС. Как это правило формируется?


Спасибо огромное за Ваши труды в виде статей и блог-записей! Материал очень сильно отличается от среднего.

На основе Вашей реализации МРЧ хочу сделать альтернативу штатному ГА и сделать сравнительный анализ. У штатного ГА уж больно сильный разброс от запуска к запуску. А ограничение на 10К проходов сильно не совпадает с ГА из MT4. Видел Вашу реализацию виртуализации, хочу использовать схожий подход, но при этом использовать GUI тестера.

 

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

https://www.monographies.ru/en/book/view?id=707

Причина обращения: