Автоматизация поиска стратегий. - страница 2

 
майнер нужен, но все равно поиск будет в рамках заданных условий. Оптимизация это тоже поиск стратегии, в узком смысле. Вопрос не корректно поставлен.
 
Yuriy Asaulenko:

ИМХО, вопрос совершенно корректный. Прежде чем рисовать стратегию, неплохо бы для начала знать, а будет ли она работать.

Для этого есть 2 пути.

1.Ексель - пишем там стратегию и проверяем. любые графики + неплохая математика к вашим услугам. Да, и + VBA.

2.MatLab - закачиваем котировки в БД, поключаем ее к МатЛаб и там моделируем стратегию. Проще чем в Ексель.

А не проще непосредственно в МТ4/5 все делать? Зачем сторонние программы, если под поиском понимается оптимизация портфеля стратегий? Хотя я не уверен, что вопрос был об этом?
 
Stanislav Korotky:
А не проще непосредственно в МТ4/5 все делать? Зачем сторонние программы, если под поиском понимается оптимизация портфеля стратегий? Хотя я не уверен, что вопрос был об этом?
Если искать стратегию, то не проще. Про остальное не знаю, не думал на эту тему. Хотя, любое моделирование проще в спец средах, а не в МТ. МТ - это конечный продукт, для исследований не создан и не оч. подходит
 
Youri Tarshecki:

Каждый раз, когда загружаю варианты в автотестер об этом думаю. Надумал

1. Генератор стратегий должен работать по принципу эволюционного дерева от простого к сложному.

2. Варианты должны тут же проверяться на волкинг-форварде и отсеиваться

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

Кстати, в английской ветке встречал упоминание какой-то болгарской проги с элементами чего-то такого. Но поскольку она была на МТ4 не заинтересовался.

И вот еще какой-то немец, тоже на МТ4    http://darwins-fx-tools.com/

В таком варианте и идёт разработка... Строится граф взаимодействия функций, пространство поиска бесконечно...

Связи между функциями будут более "осмысленными", например, выражение Open>Low имеет смысл, а Open>Volume не имеет, и другие нюансы...

 
Вот ещё пример бессмысленного выражения: =High>(Open-Close), тоже не проскочит.
 
Aliaksandr Hryshyn:
Вот ещё пример бессмысленного выражения: =High>(Open-Close), тоже не проскочит.

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

Скажем, кусок, определяющий фракталы на истории. Или кусок, считающий все, что ему не подсунешь. Или определяющий скорость изменения. Или определяющий уровни.

Задача генератора - всячески соединять эти разные куски в единое инженерное решение. К примеру - считаем количество фракталов на уровне и в зависимости от результата ставим приоритет покупке или продаже. Или определяем сумму ускорений на уровне,  сравниваем с этим же на истории и вносим поправочный коэффициент в другую функцию. Итд и тп. 

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

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

Поэтому задача подобного генератора - по определенному алгоритму рекомбинировать такие функции. Только тогда есть шанс, что  возникнет что-то новое 

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

 
Youri Tarshecki:

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

Скажем, кусок, определяющий фракталы на истории. Или кусок, считающий все, что ему не подсунешь. Или определяющий скорость изменения. Или определяющий уровни.

Задача генератора - всячески соединять эти разные куски в единое инженерное решение. К примеру - считаем количество фракталов на уровне и в зависимости от результата ставим приоритет покупке или продаже. Или определяем сумму ускорений на уровне,  сравниваем с этим же на истории и вносим поправочный коэффициент в другую функцию. Итд и тп. 

Поэтому задача подобного генератора - по определенному алгоритму рекомбинировать такие функции. Только тогда есть шанс, что  возникнет что-то новое 

А что если один кусок кода (функция) предлагает купить, а другой продать. Как соединить генератору эти куски в консолидированное  решение?

Ставить эмпирически приоритеты?  Или, допустим, одна функия А считает что цена пойдет вниз с вероятностью Р(А), а другая функция В считает что цена пойдет вверх с вероятностью Р(В), тогда что? Применять формулы теории вероятности? 

 
Yuriy Asaulenko:
Если искать стратегию, то не проще. Про остальное не знаю, не думал на эту тему. Хотя, любое моделирование проще в спец средах, а не в МТ. МТ - это конечный продукт, для исследований не создан и не оч. подходит
Кому как. По мне так моделировать стратегию проще как раз в МТ, а прикрутить поверх этого любые алгоритмы оценивания - не проблема.
 
Yuri Evseenkov:

А что если один кусок кода (функция) предлагает купить, а другой продать. Как соединить генератору эти куски в консолидированное  решение?

Ставить эмпирически приоритеты?  Или, допустим, одна функия А считает что цена пойдет вниз с вероятностью Р(А), а другая функция В считает что цена пойдет вверх с вероятностью Р(В), тогда что? Применять формулы теории вероятности? 

Насколько я понимаю, на выходе у этих кусков кода (функций) нужны аналоговые значения, а двоичные - купить/продать будут уже у комбинируемых из этих функций, с помощью генетической селекции, торговых стратегий.
 
Youri Tarshecki:

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

Скажем, кусок, определяющий фракталы на истории. Или кусок, считающий все, что ему не подсунешь. Или определяющий скорость изменения. Или определяющий уровни.

Задача генератора - всячески соединять эти разные куски в единое инженерное решение. К примеру - считаем количество фракталов на уровне и в зависимости от результата ставим приоритет покупке или продаже. Или определяем сумму ускорений на уровне,  сравниваем с этим же на истории и вносим поправочный коэффициент в другую функцию. Итд и тп. 

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

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

Поэтому задача подобного генератора - по определенному алгоритму рекомбинировать такие функции. Только тогда есть шанс, что  возникнет что-то новое 

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

Мелочей действительно много.

Стараюсь делать универсальную систему, чтобы с минимальными усилиями можно было добавлять разные возможности анализа индикаторов, свечей и др. Каждая функция имеет информацию, с какими данными может работать,и какие данные будут на выходе. Индикаторы тоже будут описываться, какого рода данные они предоставляют. Данные разделяются на типы как простые так и сложные, например {double} и {int,double}. Разделяются на категории, для того же примера "цена" и "позиции на графике", ещё пример:"прямая"(можно использовать для определения каналов) и т.п. Разделяются по "типу шкалы", например "константа"(параметр стратегии), "индекс"(есть минимум и максимум), "отношение"(есть только одна точка отсчёта, например цена, объём) и т.д. Необходимо непротиворечиво модифицировать стратегию, тут такой нюанс возникает, модификация в одном месте может влиять на условия модификации в другом месте.

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

"рекомбинация  тоже спонтанная , но уже  целых готовых решений" - приходила данная мысль), сложно представить, как это всё можно реализовать. У группы объединённых функций связей с "внешним миром" скорее всего будет больше чем в одной функции, поэтому возможностей вклинить это всё будет меньше. Алгоритм сильно усложняется, оставим до лучших времён)).