funny59
Гуру форума
Доброе время суток уважаемые форумчане!
Ранее в одной из веток взял на себя обязательства по описанию технологии нейросетей и их возможном применении в трейдинге – как на форексе, так в любой другой области.
Ввиду того, что писатель из меня ещё тот и я самоучка, поэтому применяемая мной в дальнейшем терминология – это так сказать мой сленг и сильно за это прошу не «пинать». Своё повествование буду вести не о внутреннем устройстве сетей, т.е. не о перцептроне и как там всё внутри (входные функции, приведение типов, масштабирование, нейроны, синапсы и пр.), а так сказать на более высоком уровне.
Для описания буду использовать Matlab, т.к. он у меня есть и я им владею в определённой степени. В принципе честно говоря не важен программа, важен сам принцип …
Итак, что такое нейросети? Как многие говорят – это чёрный ящик, у которого может быть N-ое количество входов и N-ое количество выходов. Многих я конечно могу расстроить, но по факту это так и есть. Но если абстрагироваться от общепринятых ярлыков я скажу, что большинство нейросетей это простые математические модель (ну иногда не простые, а динамические, нелинейные и пр.).
Вообще в настоящее время этих нейросетей очень много всяких разных, о всех о них рассказывать очень и очень долго и я многого даже не знаю. В своём повествовании остановлюсь лишь на нескольких.
Что лично я понимаю под математической моделью? Простым языком даже трудно описать, но я попробую это сделать на примере. Возьмёт график (см. скрин ниже) – это два синуса 13Гц и 42Гц с разными амплитудами и начальными фазами с постоянной составляющей по уровню.
Формула что-то типа Y=A0+A1*SIN(F1+Q1)+A2*SIN(F2+Q2), но представим, что мы не знаем этих переменных, по которым построен сигнал. Но нам очень-очень надо сгенерировать точно такой же сигнал. Это можно сделать с помощью нейросети, которая после обучения будет генерировать этот сигнал.
Выбирается определённый тип нейросети – их различное множество, но когда начинаешь этим вопросом заниматься, то можешь сразу сказать какая сеть тут подойдёт в лучшей степени.
Чтобы сгенерировать такой сигнал нам нужно определиться со входами. По каждую задачу разные подходы, но для нашей пусть это будет 10 отсчётов графика, а выходом будет следующее значение. Что мы имеем в итоге будет N-ое количество векторов входов и один выход следующего значения.
Далее формируем внутренности чёрного ящика – в нашем примере достаточно указать количество нейронов нейросети. Поскольку я использую Matlab и у меня есть определённый опыт, то для решения данной задачи буду использовать сеть fitnet (прочитайте про неё самостоятельно).
Получается, что на вход чёрного ящика мы подаём вектор из 10-ти значений, а выход одно значение. В целом ничего больше настраивать в матлабе не надо. Нейросеть получилась вот такая.
Внутри этого чёрного ящика обыкновенные математическая формула! Формула зависит от конкретного типа нейросети, а также количестве нейронов и прочих первичных настроек.
Далее проводится обучение нейросети. Происходит это методом подстройки коэффициентов формулы в зависимости от входов и выхода – в matlab есть несколько разных методов.
В результате данный конкретный пример с имеющимся сигналом за 1000 итераций обучения (подстройки математической формулы) или 12 секунд довёл точность до ошибки порядка 10-6, а то и лучше. Теперь с помощью обученной нейросети можем генерировать данный график:
Данный график построен при ошибке нейросети 4.4*10-7. Тоже, но с ошибкой 9,8*10-7 имеет совершенно другую форму графика:
Ну как Вам результаты??? Разброс на втором графике обусловлен нарастающей ошибкой, т.к. на вход нейросети мы подали полученные ею же данные. Входные данные начали со временем давать ошибку, которая в итоге привела к такому результату.
Вот именно этим примером я попытался показать, что любая нейросеть (чёрный ящик) - это математическая модель, которая просто выполняет функцию сопоставления входов с выходами.
Как это применить в трейдинге? Да очень просто! Прогнозируя любые индикаторы или саму цену. Горизонт прогноза и его точность очень сильно зависит от выбранных входов и выходов. Универсального подхода к этому нет, а если бы был, то форекс бы уже разорили …
Всё описанное выше это затравка, т.к. методом проб и ошибок как мне кажется я смог создать данный «прибор», о котором в определённой степени буду рассказывать далее. Конечно все секреты не выдам, но направление, как и что подскажу.
Вот скрин прибора …
Сиреневые точки - это прогноз бирюзовой линии, только для обучения она сдвинута на пять баров вперёд, т.е. на выход нейросети при обучении подавалась бирюзовая линия, которая появляется по факту только через пять баров. Сиреневая линия это средняя от точек прогноза. Чуть позже беру на себя обязательства по записи видео работы «прибора».
При дальнейшем нашем общении если нарисуются другие интересные идеи, то мы совместно сможет опробовать их состоятельность. На этом первый пост новой темы закончен. Готов ответить на интересующие вопросы.
С уважением, RomFil
Ранее в одной из веток взял на себя обязательства по описанию технологии нейросетей и их возможном применении в трейдинге – как на форексе, так в любой другой области.
Ввиду того, что писатель из меня ещё тот и я самоучка, поэтому применяемая мной в дальнейшем терминология – это так сказать мой сленг и сильно за это прошу не «пинать». Своё повествование буду вести не о внутреннем устройстве сетей, т.е. не о перцептроне и как там всё внутри (входные функции, приведение типов, масштабирование, нейроны, синапсы и пр.), а так сказать на более высоком уровне.
Для описания буду использовать Matlab, т.к. он у меня есть и я им владею в определённой степени. В принципе честно говоря не важен программа, важен сам принцип …
Итак, что такое нейросети? Как многие говорят – это чёрный ящик, у которого может быть N-ое количество входов и N-ое количество выходов. Многих я конечно могу расстроить, но по факту это так и есть. Но если абстрагироваться от общепринятых ярлыков я скажу, что большинство нейросетей это простые математические модель (ну иногда не простые, а динамические, нелинейные и пр.).
Вообще в настоящее время этих нейросетей очень много всяких разных, о всех о них рассказывать очень и очень долго и я многого даже не знаю. В своём повествовании остановлюсь лишь на нескольких.
Что лично я понимаю под математической моделью? Простым языком даже трудно описать, но я попробую это сделать на примере. Возьмёт график (см. скрин ниже) – это два синуса 13Гц и 42Гц с разными амплитудами и начальными фазами с постоянной составляющей по уровню.
Формула что-то типа Y=A0+A1*SIN(F1+Q1)+A2*SIN(F2+Q2), но представим, что мы не знаем этих переменных, по которым построен сигнал. Но нам очень-очень надо сгенерировать точно такой же сигнал. Это можно сделать с помощью нейросети, которая после обучения будет генерировать этот сигнал.
Выбирается определённый тип нейросети – их различное множество, но когда начинаешь этим вопросом заниматься, то можешь сразу сказать какая сеть тут подойдёт в лучшей степени.
Чтобы сгенерировать такой сигнал нам нужно определиться со входами. По каждую задачу разные подходы, но для нашей пусть это будет 10 отсчётов графика, а выходом будет следующее значение. Что мы имеем в итоге будет N-ое количество векторов входов и один выход следующего значения.
Далее формируем внутренности чёрного ящика – в нашем примере достаточно указать количество нейронов нейросети. Поскольку я использую Matlab и у меня есть определённый опыт, то для решения данной задачи буду использовать сеть fitnet (прочитайте про неё самостоятельно).
Получается, что на вход чёрного ящика мы подаём вектор из 10-ти значений, а выход одно значение. В целом ничего больше настраивать в матлабе не надо. Нейросеть получилась вот такая.
Внутри этого чёрного ящика обыкновенные математическая формула! Формула зависит от конкретного типа нейросети, а также количестве нейронов и прочих первичных настроек.
Далее проводится обучение нейросети. Происходит это методом подстройки коэффициентов формулы в зависимости от входов и выхода – в matlab есть несколько разных методов.
В результате данный конкретный пример с имеющимся сигналом за 1000 итераций обучения (подстройки математической формулы) или 12 секунд довёл точность до ошибки порядка 10-6, а то и лучше. Теперь с помощью обученной нейросети можем генерировать данный график:
Данный график построен при ошибке нейросети 4.4*10-7. Тоже, но с ошибкой 9,8*10-7 имеет совершенно другую форму графика:
Ну как Вам результаты??? Разброс на втором графике обусловлен нарастающей ошибкой, т.к. на вход нейросети мы подали полученные ею же данные. Входные данные начали со временем давать ошибку, которая в итоге привела к такому результату.
Вот именно этим примером я попытался показать, что любая нейросеть (чёрный ящик) - это математическая модель, которая просто выполняет функцию сопоставления входов с выходами.
Как это применить в трейдинге? Да очень просто! Прогнозируя любые индикаторы или саму цену. Горизонт прогноза и его точность очень сильно зависит от выбранных входов и выходов. Универсального подхода к этому нет, а если бы был, то форекс бы уже разорили …
Всё описанное выше это затравка, т.к. методом проб и ошибок как мне кажется я смог создать данный «прибор», о котором в определённой степени буду рассказывать далее. Конечно все секреты не выдам, но направление, как и что подскажу.
Вот скрин прибора …
Сиреневые точки - это прогноз бирюзовой линии, только для обучения она сдвинута на пять баров вперёд, т.е. на выход нейросети при обучении подавалась бирюзовая линия, которая появляется по факту только через пять баров. Сиреневая линия это средняя от точек прогноза. Чуть позже беру на себя обязательства по записи видео работы «прибора».
При дальнейшем нашем общении если нарисуются другие интересные идеи, то мы совместно сможет опробовать их состоятельность. На этом первый пост новой темы закончен. Готов ответить на интересующие вопросы.
С уважением, RomFil
Последнее редактирование модератором: