Да, это именно то, над чем я предлагаю совместно поработать. Надеюсь, достаточно заинтриговал Ждите подробностей и собственно изложения самой сути дела...
Линейный адаптивный предиктивный фильтр
Сообщений 1 страница 18 из 18
Поделиться22006-12-28 16:46:18
Если вдруг кто-то совсем не в курсе, то посм. вот тут для начала: Планирую написать на Delphi свою собственную реализацию НС...
Поделиться32007-01-04 13:12:59
Не взирая на обрушившиеся на нас праздники продолжаем потихоньку...
Итак. Собственно идея следующая. Написать некий нейросетевой индикатор для MT. Что он будет делать? Он будет брать линейную комбинацию из N прошлых баров + текущий и на этой основе делать прогноз на один бар вперёд. Возможно, кого-то смущает прилагательное «линейный». Не спорю. На ФОРЕКСЕ обычным линейным моделям делать нечего. Это совершенно точно. Ключевой момент здесь заключается в слове «адаптивный». Это собственно и будет «нейросетевой» частью нашего будущего индикатора. В отличие от обычных линейных моделей типа классической линейной регрессии вес. коэффициенты нашего индикатора будут постоянно меняться в надежде отследить изменчивую структуру рынка. Осуществляться это будет при помощи специального правила обучения – т.н. «LMS rule» (least mean squares). LMS – это «облегченная» версия знаменитого алгоритма обратного распространения – back prop’а (вернее говоря, это то, из чего он со временем вырос).
Каковы положительные стороны предлагаемого мною проекта?
1. Есть надежда получить прибыльную торг. стратегию. Конечно, она есть всегда, даже, напр., когда придумывают стратегию на СС. Но здесь эта надежда имеет под собой достаточно прочное научно-теоретическое (а не магическое, астрологическое и т.д., и т.п.) обоснование.
2. Написанный индикатор в дальнейшем можно использовать в качестве кирпичика для более сложных – нелинейных адаптивных индикаторов, т.е. собственно НС во всей их красе.
3. Герои, подвизавшиеся писать всё это дело, получат неплохой опыт как MQL вообще, так и реализации НС-методов в нём в частности.
Отрицательные стороны в основном вытекают из пункта первого положительных. Их поэтому рассматривать не будем.
Предлагаю наречь будущий индикатор рабочим названием ЛАПФ – линейный адаптивный предиктивный фильтр.
Поделиться42007-01-05 12:01:55
Радостно, что мы пережили праздники! Я тоже все еще тут. Только пока что шевелюсь с трудом.
По поводу ЛАПФ у меня такой вопрос: что именно будет прогнозироваться? Т.е. будут указываться предполагаемый максимум и минимум (приблизительно так я понимаю)... или как? Если так, то это - очень интересно, полезно и важно.
Насчет того "за" я или "против" - то у меня и спрашивать не надо: я только "за" всеми конечностями.
Поделиться52007-01-05 20:11:49
что именно будет прогнозироваться?
Будущее значение цены. Цены закрытия, если говорить более определенно. Т.е. на текущем баре индикатор будет показывать будующую цену закрытия (конечно, её прогноз )
Поделиться62007-01-08 17:08:00
Ранее я указывал ссылку на статью, где говорилось что прогнозирование цены закрытия нецелесообразно. CLOSE это значение цены на какой то момент времени (окончание периода) и трудно прогнозируется. Я предлагаю параллельно прогнозировать HIGH и LOW для взаимной подстраховки.
Поделиться72007-01-08 21:02:59
Я думаю, что это нецелесообразно. Ясно, что цена закрытия - величина случайная: ну вот закрыли бы бар, скажем, на пару минут позднее, и она бы была больше/меньше, скажем на пару пунктов. Но это не суть. Суть в том, что если прогнозируемая будущая цена закрытия выше текущей, значит, движение в целом будет идти вверх, т.е. надо открывать позицию на покупку и т.п. Т.е. это не принципиально, можно вооще сделать выбор в окошке индикатора какую цену брать для рассчёта и прогнозирования O, H, L или C. Кстати, все эти цены очень сильно коррелированы, поэтому принципиальной разницы между ними нет. Просто сложилась традиция так давать котировки. С математической т.з., напр., было бы целесообразнее давать среднюю цену за период. На графиках Daily такой среденей ценой могла бы быть величина вычисленная по часовым графикам, на часовых - по 5-минутным и т.д.
Поделиться82007-01-09 08:31:08
Тогда может лучше прогнозировать тренд? Я вот сколько прог видел конкретных цифр никто не выдавал, чисто общее направление
Поделиться92007-01-09 19:05:49
Ну для начала мы будем прогнозировать "тело" будущей "свечки" - это всё-таки попроще, чем сразу тренд.
Поделиться102007-01-10 00:25:01
а тренд вообще легко определяется... классическими (линейными) методами анализа. Тогда, спрашивается, есть ли смысл "огород городить" ?... Не приходим ли мы к тому, от чего, вроде бы, начинали?...
Что такое тренд? - да это элементарно направление движения некоторой скользящей средней. Если она вверх смотрит, то тренд восходящий. Если вниз, - то, соответственно, нисходящий.
Могу даже больше того сказать. Во многих источниках, которые мне доводилось читать (но, это, конечно, источники не по анализу данных, как таковому, а по трейдингу), сказано, что до сих пор вообще не придумано ничего лучше, чем скользящие средние...
Поделиться112007-01-10 00:29:53
Но (и об этом уже написано на страницах форума) знание о том, что скользящая средняя (особенно, если речь идет о МА с большим периодом усреднения) направлена вверх (и, следовательно, тренд восходящий), в общем-то не дает нам никакого преимущества, так как любой из нас, очевидно, определит тренд и так, просто глядя на монитор.
И даже знание о том, каким будет будущее знаение скользящей средней (а возможность прогнозировать скользяшки с достаточно высокой точностью уже была показана на страницах этого форума, и даже доказана практически) - не дает нам практически никакого преимущества, т.к. в рамках тренда могут быть такие движения, которые могут и к разорению привести, а тренд все еще будет восходящим.
То, что предлагает Вадим, а именно, прогнозирование тела свечки - это интересно. Даже, более чем интересно. Ждем описания алгоритма.
Если мы будем знать
1) размер свечи с достаточной точностью ... или
2) размер свечи и предположительную направленность с точностью более 50%.... то это уже дает нам весьма ощутимые преимущества.
Поделиться122007-01-11 14:26:16
Описание то я могу хоть сейчас. Но пока повременим. Сейчас я тестирую в NS его потенциальную продуктивность. Златых гор сразу скажу - не обещаю. Пока могу высказать следующее впечатление: работает лучше, чем вход "по монетке", но насколько - следует уточнить. Пока продуктивность колеблется в основном в рамках 51-54% правильных прогнозов. Я считаю, что это не так уж и плохо. Есть надежда, что оптимизация некоторых параметров (длинны "окошка", порога принятия решения) позволит улучшить качество прогнозов. Эти параметры кстати будет, наверно, удобнее в Метатрейдере уже оптимизировать.
Поделиться132007-01-12 02:00:27
Ну, что же... все, что лучше монетки нас очень даже радует ждем изо всех сил!
Поделиться142007-01-26 15:20:58
Всё - составил алгоритм. На вс. сл. проверю всё ещё раз и на сл. неделе точно уже выложу...
Поделиться152007-01-29 16:22:05
Сказано - сделано!
ЛАПФ
Обозначения:
N – длина окна
s – размер шага
p – приращение цены
w – весовой коэффициент
x=[p1; p2; … pn] – входной вектор приращений
y – выход фильтра
d – желаемое (аппроксимируемое) значение
e – ошибка
Параметры индикатора, задаваемые пользователем:
А) Длина окна
Б) Размер шага (определяет скорость обучения).
Индикатор отображается в отдельном окне
---------------------------------------------------------------------------------------------------------------------------------
1. Переходим от уровней цены к их приращениям в пунктах: p=(С-О)*10000. Так должна обработаться вся имеющаяся в наличии история котировок.
2. Генерируется N сл. значений весовых коэффициентов (w), N=длина окна. Они должны быть симметричны относительно нуля – в принципе равномерно распределены.
3. Берутся N первых приращений ряда и умножаются на вектор вес. коэффициентов (т.е. находится скалярное произведение вектора приращений и вектора весов): p1*w1+p2*w2+…+pn*wn=y
4. В результате получается выход фильтра – y.
5. Далее находится разница N+1 приращения (т.е. «будущего» значения свечи) и выхода фильтра, что есть ошибка аппроксимации: e=d-y.
6. Находим значения весов (w+1) для следующего шага. Для этого к текущему вектору весов (w) прибавляем входной вектор (x) из N значений ценовых приращений умноженный на ошибку (e) и на размер шага (s): w+1=w+x*e*s или в развёрнутой форме: p1*e*s; p2*e*s;…; pn*e*s – вход, умноженный на ошибку и размер шага, который прибавляем к текущему вектору весов.
И в итоге: w+1=
w1+p1*e*s;
w2+p2*e*s;
…
wn+pn*e*s.
7. Процедуру прогоняем по всей истории котировок. В результате на текущем баре получается прогноз будущего приращения цены.
P.S. Потом ещё напишу пример с подставлением конкретных значений...
Поделиться162007-01-29 19:57:54
:sorry:
ну, лично я сейчас это не осилю... мне бы не забыть, как меня зовут... :help:
Поделиться172007-01-31 19:12:35
Ну ничего. Я и сам щас в запарке. Может Gray заинтересуется? В принципе если есть опыт написания индикаторов на MQL, то ничего сложного тут нет - алгоритм то довольно прост в вычислительном плане.
Поделиться182007-02-06 13:10:58
Заинтересуюсь. Тока лучше в асе обсудить.