Pull to refresh

Comments 24

UFO landed and left these words here
Непонятно, сколько денег в итоге удалось заработать.
Если-бы удалось что-то заработать, не было-бы этой статьи, полагаю)
Пацаны, кто-нибудь хоть что-то понял?
Автор что-то непонятное написал, но пользуясь случаем, оставлю ссылку на нечто более серьезное — мой бесплатный курс по схожей теме.
Правильно понимаю, что есть внешняя система для разработки роботов на языке MQL, предлагающим набор функций для получения предметных знаний о работе биржи. Вы воссоздали эту систему и научились самостоятельно генерировать и обучать торговых роботов. И создали свой язык SadLobster для описания роботов, который транслируется в MQL/C++, и в результате роботы тестируются быстро, а потом они же используются на внешней площадке?

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

Из Вашего опыта также выделю полезные знания о фитнес функции. Сложном критерии оценки качества алгоритма.
Напишите пожалуйста, как правильно скрещиваются функции?
Функция отражает некое правило, которое влияет на решение покупать или нет (результат типа BOOL, согласно статье). И как происходит скрещивание, какие типы или виды возможны?

Предполагаю, что если есть два робота, принимающие решение покупать акции ОАО Тыква или нет, то скрещивание может быть таким.

Первый робот:
— Есть свободные деньги?
— ОАО Тыква является прибыльной компанией согласно последнему отчёту?
— Лето было урожайным в регионе-поставщике?

Второй робот:
— Есть свободные деньги?
— ОАО Тыква является прибыльной компанией согласно последнему отчёту?
— Была засуха в регионе-покупателе?

Результат скрещивания:
— Есть свободные деньги?
— ОАО Тыква является прибыльной компанией согласно последнему отчёту?
— Лето было урожайным в регионе-поставщике или была засуха в регионе-покупателе?

Скрещивание — процесс случайный, поэтому в результате могут получиться такие варианты:
— Есть свободные деньги?
— ОАО Тыква является прибыльной компанией согласно последнему отчёту?
— Лето было урожайным в регионе-поставщике или была засуха в регионе-покупателе?


И еще, я бы рассмотрел варианты где правил становится больше или меньше:
— Есть свободные деньги?
— Была засуха в регионе-покупателе?


— Есть свободные деньги?
— ОАО Тыква является прибыльной компанией согласно последнему отчёту?
— Лето было урожайным в регионе-поставщике и
— Была засуха в регионе-покупателе?


Кроме и/или можно включить not, xor, тогде вариантов станет больше.


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


Пример:
— Первый модуль — покупать или нет?
— Второй модуль — сколько покупать?

«MetaTrader (сервер) содержит технические возможности, которые могут использоваться брокерами для повышения своей доходности за счёт выполнения операций по худшим для клиента ценам» — т.е. на сервере брокер настраивает «проскальзывание» которое я так понимаю вносит в принципе не предсказываемое нейросетью искажение в торговые тренды, как Вы это обходите?
2. можно ли использовать QUIC от сбербанка? или с этим какие то технические проблемы
  1. Никак не обхожу.
  2. Можно скорее всего, но MT удобнее для моих целей.
    Цель в том, чтоб убедиться, что можно заставить машину создать алгоритм
1. Это справедливо для форекс-«кухонь». При использовании MT брокерами на FORTS таких манипуляций вряд ли стоит опасаться. И, кстати, не факт, что адаптированный для FORTS сервер MT вообще обладает такими возможностями — в отличие от форексе, на бирже это просто никому не нужно.

2. По ответу автора я бы предположил, что он не имел дел с QLua и, тем более, QPILE.
Вы бы определились, вам нужно описать как вы делали робота. Или принципы построения «генетических роботов». Принципа работы я не увидел. Я не настолько разбираюсь в С++, что бы из кода понять ход ваших мыслей. Из статьи не видно не результатов тестирования, ни толкового отчета по «просадкам».
Ни конкретно на каких инструментах тестировался робот.
Только голый текст, из серии «вот я попробовал и получилось».
А «метатрейдер» вообще используют на лохотроне, под названием Форекс
MT используют и на FORTS тоже. Отзывы тех, кто использовал — отличные.
Возьмем какой-либо достаточно ресурсоемкий в человеческом и машинном отношении алгоритм, например, гармонический анализ. Мы же говорим не просто о подборе коэффициентов, верно?

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

Как вы думаете, возможно ли создание такими методами принципиального нового улучшения данного алгоритма в разумное время (которое исчисляется не миллионами лет)? Теоретически это возможно, но на практике мне почему-то кажется что роботам нужно будет «Показать, рассказать, а потом самому за них все сделать»

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


  1. Воспроизвести создание такого алгоритма через ГА
  2. Менять начальные условия, что даст доступ к созданию всего класса алгоритмов этого типа
  3. Расширять базу и условия, что расширит класс находимых алгоритмов.

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


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

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

По сути вопроса могу сказать вот что: я несколько лет занимался чем-то подобным, тоже было построение правил стратегии торговли при помощи ГП, только довел это до практического применения на реальной бирже на реальных деньгах. То есть это (иногда) действительно работает, но есть огромное количество нюансов. Мне было интересно это прочитать, публикации на эту тему относительно редки, отчасти видимо из-за коммерческой тайны.
Важны лишь предикторы, иначе система не будет профитной…
Интереснейшая идея на мой взгляд. Даже если система и не профитная.
Если это открытый проэкт с удовольствием бы поучаствовал
Спасибо за статью!
Для всех кто интересуется вот интересные ссылки: вот и вот и еще
криво запостилось, ток первая ссылка доступна. надо починить)
извините… исправлено ... вот — это главная статья по ГА, и еще… очень увлекательные статьи
Only those users with full accounts are able to leave comments. Log in, please.