Машинное обучение в трейдинге: теория, модели, практика и алготорговля - страница 230

 

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


Сначала об основных понятиях:

1. Сигнатура - цифровое описание характера изменения значения параметра. Сигнатура состовляется специальным алгоритмом. Имеет формат. Хранится в специальном блоке (массиве). Является конечным результатом работы всех алгоритмов, мат.расчетов и операций.

2. Текущий период - установленный промежуток времени. Реализуется в кольцевом буфере через который проходят значения параметра. Каждое новое знаение двигает всю очередь записанных ранее значений и встает во главу массива, а самое старое значение стирается. Текущих периодов может быть много, и каждый может быть предназначен для своего временного масштаба и своего параметра.

3. Диапазон значений параметра - рамки внутри которых меняется значение параметра. Устанавливается опытным путем во время тестирования системы. Диапазон между мин. и макс. значениями может включать в себя разделения на малые диапазоны, служащие для раздробления всего многообразия значений параметра и приведения их к удобной шкале.

4. Временные промежутки между приходящими значениями - замеряются в процессе поступления значений в кольцевой буфер. Наравне с диапазонами необходимы для составления характера изменения значения и последущего математического анализа.

5. Кривая изменения значения - условное, внутрипрограммное представление изменение значения объединяющее как сами значения, так и временные промежутки между ними. В итоге получается графическая кривая (представленная в двумерном массиве) к которой можно применять различные методы математического анализа.

6. Математические фильтры - методы анализа (формулы) выявляющие различные особенности изменения значения внутри текущего периода.

7. Приведение значения к диапазону - обощение текущего значения с целью сокращения кол-ва его вариантов. Необходимо в анализе характера изменения.

8. Сбор статистики сигнатур - Процесс который осуществляется во время тестирования системы или во время прогонки в реальных условиях. Фактически собирается "опыт" системы, осуществляется ее "ознакомление" с различными ситуациями, представляющими различные характеры поведения значений различных параметров. Эти сигнатуры сохраняются в специальной базе.

9. База сигнатур - Блок памяти где сохраняются все актуальные сигнатуры. Место сохранения "опыта" системы, фильтруемого постоянным статистическим отбором. Внутри базы осуществляется отбор и ротация актуальных сигнатур и постепенное вытеснение менее актуальных. Отбор движет текущий период от которого в базу принимаются те или иные сигнатуры после их состовления (после анализа и фильтрации значений, разумеется.) Самые часто повторяющиеся вытесняют менее повторяющиеся.


Описание процесса работы системы:

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

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

Далее, пользователь начинает "обучать" движок.  Делает это так:

Значения входных параметров своей стратегии связывает с конкретными сигнатурами. То есть, устанавливает зависимость значений входных параметров от конкретных цифровых "слепков" текущей ситуации.  Также, пользователь может связять с выбранными сигнатурами вызовы своих функций, просто проиндексировав эти вызовы. Движок будет вызывать пользовательские функции по их номеру на выбранных сигнатурах.

Однако, на этом этапе система не самостоятельна, так как пользователь вынужден в ручную "обучать" систему, связывая наилучшие значения входных параметров своей стратегии с конкретными сигнатурами. Давайте представим как можно было бы дальше развивать эту систему в сторону абсолютной самостоятельности:

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

//===================================================================================

Возможно, этот подход не имеет отношения к классическому пониманию машинного обучения, но то, что он реализует его цель в трейдинге - несомненно. Пока это все в общих чертах, но у меня нет сомнения в правильности подхода и реальности его реализации на MQL.

Прошу высказать мнение специалистов по МО и всех кого это интересует.

Спасибо за внимание.



 
pantural:

Огромное спасибо, это то что доктор прописал! Коротко и ясно! Всё МО в 10 строчках! Пантарал доволен, Пантурал благодарит Вас! Йоу хай, камон!

double perceptron() 
  {
   double w1 = x1 - 100;
   double w2 = x2 - 100;
   double w3 = x3 - 100;
   double w4 = x4 - 100;
   double a1 = iAC(Symbol(), 00);
   double a2 = iAC(Symbol(), 07);
   double a3 = iAC(Symbol(), 014);
   double a4 = iAC(Symbol(), 021);
   return(w1 * a1 + w2 * a2 + w3 * a3 + w4 * a4);
  }

И вот отличи теперь, детскую наивность, от толстого троллинга...

Но судя по всему первое. 

pantural:

Всем здраствуйте. Я Пантурал.

Третий раз я уже пытаюсь обосноваться на Форексе, чувствую что в этом что то есть, но жизнь гнёт свою линию, и дальше слива 2-х депо по 200$ дело не доходило. Судя по всему сейчас ситуация куда лучше чем 4 года назад, по крайней мере со спредами очень всё стало вау кул!(oh my god! It is the pantural! wow!)

 
Реter Konow:

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

Не важно на каком языке MO, важно что именно тут концепция МО рассматривается так:

1. Взбрела в голову идея

2. Взяли первый попавшийся пакет из R

3. Проверили, убедились что пакет гомно или даёт неудовлетворительные результаты согласно идеи, переходим к пункту 2 что бы перебрать все пакеты. Когда кончатся все пакеты, переходим к пункту 1.

А то что Вы пытаетесь осмыслить или реализовать - Вас тут не поймут, в лучшем случае объявят тролем. 

 
Andrey Dik:

Не важно на каком языке MO, важно что именно тут концепция МО рассматривается так:

1. Взбрела в голову идея

2. Взяли первый попавшийся пакет из R

3. Проверили, убедились что пакет гомно или даёт неудовлетворительные результаты согласно идеи, переходим к пункту 2 что бы перебрать все пакеты. Когда кончатся все пакеты, переходим к пункту 1.

А то что Вы пытаетесь осмыслить или реализовать - Вас тут не поймут, в лучшем случае объявят тролем. 

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

Если и им сказать нечего по сути концепции, значит здешнии рамки взглядов настолько узки, что не пропускают никакого свободомыслия. Вот и посмотрим...

 
Реter Konow:

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

Если и им сказать нечего по сути концепции, значит здешнии рамки взглядов настолько узки, что не пропускают никакого свободомыслия. Вот и посмотрим...

Не простые пользователи, а очень даже умные пользователи, некоторые с докторскими степенями, но они пользователи R, этим всё сказано.

Можете по теме общаться с Юрием Решетовым, но и у него не надолго хватает терпения здесь что то писать. 

 
mytarmailS:

то что показал toxic  это как бы кластеризацыя но с учителем, точки в самом начале это как бы признаки вернее их числовые параметры, есть у вас целевая бай и сел, те предварительно перед обучением вы разметили где был рост (бай) и падение(сел), и алгоритм начинает тупо разделять параметры признаков по целевой, типа синяя область ето бай, красная это сел...  

Но сейчас последний писк это что то типа этого

https://www.youtube.com/watch?v=05rEefXlmhI 

https://www.youtube.com/watch?v=qv6UVOQ0F44 

https://www.youtube.com/watch?v=xcIBoPuNIiw

но я в этом полный нуб 

А это вообще умора)))

https://www.youtube.com/watch?v=pgaEE27nsQw 

Спасибо за эти видео, прыгающие динозавры особенно доставляют ))))

имхо нейросеть для марио наглядно показывает важный момент:

можно обучить алгоритм для прохождения конкретного уровня (даже очень сложного)

но это совершенно не означает что он будет так же успешен на другом уровне

и если присмотреться внимательно как этот бот проходит уровень то становится понятно

что это просто подгонка и бот не понимает смысл ситуации и у него нет настоящего геймерского интеллекта

сеть только лишь подобрала тайминг для кнопок

это видно по тому как марио тычется мордой в препятствия и прыгает в стены 

его успех скорее случайный чем закономерный

так же и на форексе бот может успешно пройти один участок/уровень и завалить другой

так как у него нет трейдерского интеллекта и бот "не понимает" что он делает...

чтобы быть успешным на любом участке/уровне бот должен иметь объектную модель того мира в котором он существует

то есть алгоритм не должен просто оптимизировать паттерны

алгоритм должен оперировать смысловыми категориями и описывать ситуацию так как это видит трейдер/геймер 

бот должен различать типы объектов и их характеристики и оценивать опасность ситуации в динамике

и это требует совсем другого уровня эвристики чем просто оптимизация нейросети

результатом обучения должна быть смысловая модель и знание об объектах и процессах

если этого нет то торговые боты обречены на рандомное тыкание

часто это видно по истории сделок ботов насколько тупо алгоритм оценивает торговую ситуацию

и входит там где нормальный трейдер-человек никогда бы не стал ввязываться

по этой причине я пессимистично смотрю на роботописание 

в лучшем случае можно сделать полу-робота с описанием предметной области в виде отработки некоторых типичных ситуаций

(напрмиер выход из флэта или разворот тренда)

но так или иначе нужно присматривать за роботом чтобы он на начал косячить как марио-бот на новом уровне

 
transcendreamer:

...

согласен с Вашей точкой зрения.
 
Реter Konow:

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

Если и им сказать нечего по сути концепции, значит здешнии рамки взглядов настолько узки, что не пропускают никакого свободомыслия. Вот и посмотрим...

МО это прежде всего инженерное искусство, результат оправдывает любые концепции. Дайте результат. Вот Вам челенж: https://numer.ai/  

Numerai
Numerai
  • numer.ai
A new kind of hedge fund built by a network of data scientists.
 
Реter Konow:

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

Сначала об основных понятиях:...................

Прошу высказать мнение специалистов по МО и всех кого это интересует.

Спасибо за внимание.

лично я даже не понял ничего )

но мне можно, я себя специалистом не считаю. 

 
toxic:

МО это прежде всего инженерное искусство, результат оправдывает любые концепции. Дайте результат. Вот Вам челенж: https://numer.ai/  

А как насчет того чтобы разбираться? А то - "дайте, дайте... ".)) Я сделаю этот движок. Но после завершения основного проекта.
Причина обращения: