-
Atom Ответить
18.10.2013


-



Спасибо:




32 Ответов
1 2  >
Bond

Фотография
Курсы
Дата: 21.10.2013
Ответить


-
Автор топика
Спасибо: Андрей Гунинский

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 21.10.2013
Ответить


Bond Перейти
Примерная структура работы системы. Что можно добавить? Что можно оптимизировать?


Сложно сказать. Картинка мне напоминает архитектурный чертеж высотки с многоуровневой стоянкой.

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

Bond

Фотография
Курсы
Дата: 22.10.2013
Ответить


Михаил Сухов Перейти
Bond Перейти
Примерная структура работы системы. Что можно добавить? Что можно оптимизировать?


Сложно сказать. Картинка мне напоминает архитектурный чертеж высотки с многоуровневой стоянкой.

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


Хороший чертеж на мой взгляд. Довольно просторная парковка! Отличный ландшафтный дизайн! BigGrin

Это всего лишь концепция. Чего от нее можно ждать)
К сожалению о генетике пока даже речь не идет. Оптимтзация будет производиться методом перебора(
Автор топика
Спасибо:

Kazai Mazai

Фотография
Автор статей
Дата: 22.10.2013
Ответить


Могу порекомендовать оптимизаторы ХОП!

Многомерные. Тут и генетика, и рой частиц,и дифференциальная эволюция и много другое, в том числе и параллельное.

Пользоваться просто. Есть оптимизируемый вектор, есть целевая функция.
Спасибо: Bond dij1

Bond

Фотография
Курсы
Дата: 22.10.2013
Ответить


Kazai Mazai Перейти
Могу порекомендовать оптимизаторы ХОП!

Многомерные. Тут и генетика, и рой частиц,и дифференциальная эволюция и много другое, в том числе и параллельное.

Пользоваться просто. Есть оптимизируемый вектор, есть целевая функция.


Спасибо большое за информацию! Хорошо, когда уже есть наработки.
Но там столько всего... Как бы во всем это не запутаться. Вы использовали что-нибудь? Что стоит поюзать, а что хлам?
Автор топика
Спасибо:

Kazai Mazai

Фотография
Автор статей
Дата: 24.10.2013
Ответить


Bond Перейти
Kazai Mazai Перейти
Могу порекомендовать оптимизаторы ХОП!

Многомерные. Тут и генетика, и рой частиц,и дифференциальная эволюция и много другое, в том числе и параллельное.

Пользоваться просто. Есть оптимизируемый вектор, есть целевая функция.


Спасибо большое за информацию! Хорошо, когда уже есть наработки.
Но там столько всего... Как бы во всем это не запутаться. Вы использовали что-нибудь? Что стоит поюзать, а что хлам?



Нужно качать swarmOps.

Пользоваться не сложно. Есть базовый класс - Problem, от него наследуемся, и реализуем, что там нужно. Можно посмотреть, там примеров Problems много.

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

Ну а дальше смотрим, опять же, пример - Test CurveFitting, какой нить, и делаем так же.

Я использовал PSO - particle swarm optimization, и все было круто, хотя авторы, кажется, рекомендовали генетический алгоритм. Там он должен быть где-то.

Ну а еще на википедии много инфы про всевозможные алгоритмы оптимизации.




Спасибо: Bond

Bond

Фотография
Курсы
Дата: 25.10.2013
Ответить


Цитата:

Нужно качать swarmOps.

Пользоваться не сложно. Есть базовый класс - Problem, от него наследуемся, и реализуем, что там нужно. Можно посмотреть, там примеров Problems много.

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

Ну а дальше смотрим, опять же, пример - Test CurveFitting, какой нить, и делаем так же.

Я использовал PSO - particle swarm optimization, и все было круто, хотя авторы, кажется, рекомендовали генетический алгоритм. Там он должен быть где-то.

Ну а еще на википедии много инфы про всевозможные алгоритмы оптимизации.



Спасибо за рекомендации! Разнообразия много. Может с вашего опытного взгляда подскажете с чего начать? Я для начала планировал итерационный тестировщик сделать. Или стоит сразу пробовать с генетики?
Автор топика
Спасибо:

Андрей Шабанов

Фотография
Автор статей
Дата: 26.10.2013
Ответить


Я бы начал с обычного перебора по сетки в 90% его достаточно для ответа на вопрос о дееспособности стратегии..ну а уж "оптимальные" параметры можно искать после этого:)
P.S. есть возможность подключиться к вашему проекту каким-нибудь образом?
Спасибо:

Bond

Фотография
Курсы
Дата: 27.10.2013
Ответить


Андрей Шабанов Перейти
Я бы начал с обычного перебора по сетки в 90% его достаточно для ответа на вопрос о дееспособности стратегии..ну а уж "оптимальные" параметры можно искать после этого:)
P.S. есть возможность подключиться к вашему проекту каким-нибудь образом?


Добрый день, Андрей!
Да, конечно, можно. Мой скайп bond_algotrade. Присоединяйтесь. Все что будет сделано - сделано нами и для нас!
В данный момент завершается основная работа над "Анализатором". Спасибо большое Бухарину Ивану за помощь в реализации класса BackgroundWorker!
Примерный план действий на данный момент такой:
1. Доделать и оптимизировать "Анализатор"
2. Разобраться с промежуточным "Хранилищем стратегий". Определиться с сериализацией и десериализацией данных хранилища. Что и как там хранить.
3. Работа над "Оптимизатором". Сохранение промежуточных данных в "Хранилище стратегий", их сортировка и структуризация. Оптимизация итерационного механизма. Работа над производительностью и многопоточностью.
4. И в конце уже создание торгового "Робота" с заявками, транзакциями, переавторизациями и переподключениями и т.д.
Любая помощь приветствуется! Проект открытый и предназначен для создания инфраструктуры для анализа, оптимизации и торговли.
Автор топика
Спасибо: Андрей Гунинский

Bond

Фотография
Курсы
Дата: 27.10.2013
Ответить


-
Автор топика
Спасибо: Андрей Гунинский

Kazai Mazai

Фотография
Автор статей
Дата: 27.10.2013
Ответить


Bond Перейти
Цитата:

Нужно качать swarmOps.

Пользоваться не сложно. Есть базовый класс - Problem, от него наследуемся, и реализуем, что там нужно. Можно посмотреть, там примеров Problems много.

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

Ну а дальше смотрим, опять же, пример - Test CurveFitting, какой нить, и делаем так же.

Я использовал PSO - particle swarm optimization, и все было круто, хотя авторы, кажется, рекомендовали генетический алгоритм. Там он должен быть где-то.

Ну а еще на википедии много инфы про всевозможные алгоритмы оптимизации.



Спасибо за рекомендации! Разнообразия много. Может с вашего опытного взгляда подскажете с чего начать? Я для начала планировал итерационный тестировщик сделать. Или стоит сразу пробовать с генетики?


Тут же от задач зависит, и от масштабов вычислений.

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


Спасибо: Bond

Bond

Фотография
Курсы
Дата: 05.11.2013
Ответить


-
Analyzer (1).rar 4,6MB (0)
Автор топика
Спасибо: Андрей Гунинский SavosRU Aleksey24

Иван З.

Фотография
Курсы Автор статей Благотворитель
Дата: 06.11.2013
Ответить


Если свечи в минутах, то у меня не улетают сделки вот так:
Код
        private void DrawTrade(IEnumerable<MyTrade> trade)
        {
            this.GuiAsync(
                () =>
                CandleChart.ProcessValues(
                    TimeSpan.FromMinutes(SelectedTimeFrame).GetCandleBounds(trade.Last().Trade.Time).Min,
                    new Dictionary<IChartElement, object>
                        {
                            {_tradeElement, trade.Last()},
                        }));
        }

Сделки передаю так:
Код
_trader.NewMyTrades += DrawTrade;

Для других видов свечей (VolumeCandle, TickCandle, и тп) этот код не пойдет.
Спасибо: Bond

Андрей Гунинский

Фотография
Дата: 08.11.2013
Ответить


Великолепное начинание! Спасибо Алексей.

В C# коде не профи поэтому особо не помогу, есть ряд идей по поводу адаптивного поиска, то есть «тестирование» на первом этапе не идёт в полном виде с учётом бид-аск разницы, комиссии проскальзываний и прочих давлеющих факторов, а ищется некий фактор валидности закономерности данной ТС при данных параметрах, такое вычисление делается очень быстро и оно очень сильно коррелирует с детальным тестированием, другими словами, такое фаст-вычисление для разряженного пространства параметров даст «разметку», те места которые показали наличие закономерности «пробить» тем же алгоритмом но уже с меньшим шагом в пространстве параметров, 2-3 итерации такой процедуры даст «маску» в параметрическом пространстве(ПП), для тестирования уже «классическим» путём, перебором генетикой и тп. Это в сотни раз быстрее с потерями за пределами 2х сигм валидных вариантов, причем эти патери скорее шум. Такое маскирование ПП можно настраивать в зависимости от например погога и тп. Одно можно сказать что профитные кластера в ПП будут топологически совпадать как если бы вычисления делать детальным тестером, отличия будут только в отрицательную сторону из за издержек. Можно ещё ускорить есть это вычисление сделать выборочным по какому нибуть стохастическому алгоритму.

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

Bond

Фотография
Курсы
Дата: 11.11.2013
Ответить


-
Автор топика
Спасибо:

SavosRU

Фотография
Курсы
Дата: 18.11.2013
Ответить


Bond Перейти
Хорошая новость! Вышла первая версия Анализатора)
Возможности:
- Отрисовывает исторические данные,
- Строит индикаторы,
- Показывает процесс отрисовки и тестирования стратегий,
- Можно выбирать свои таймфреймы и временные диапазоны тестирования,
- Ведет логирование,
- Отображает в процессе тестирования сделки на графиках.


Спасибо, начал разбираться и тестировать.
НО...
При проверке на данных по RIZ3, закачанных Гидрой из Финама (это я на всякий случай, хотя источник данных тут явно не причем) я наблюдаю следующее:
- график и индикаторы рисует, то есть с данными вроде бы работает верно
- но сделок не совершено ни одной (стратегия та же, что в исходниках - пока ничего не менял, хотел сначала заставить сам софт работать)
- а в логах 900 ошибок одинаковых, мол, заявка не была принята по причине нехватки денег: надо 142 тысячи с чем-то, а у вас НОЛЬ

Вот скрин прикрепляю.
Analyzer_v.1.0 - нет денег на тестируемом счету
Там видно сразу две проблемы:
- первая самая очевидная - в тестовом кошельке (счете, портфеле) не указана изначальная сумма.
- вторая менее очевидная, но все же... если на счету у меня будет меньше, чем "цена" RI в проверяемый момент, то я не смогу совершить сделку даже в том случае, если бы в реальности у меня хватило денег на ГО даже нескольких контрактов. Ведь фактически можно с 15 тысячами рублей торговать одним контрактом RIZ3 сейчас, а программа не даст ни одного контракта купить, пока в кошельке не будет 140-150 тысяч.

Вопросы по обеим вышеописанным проблемам:
как быть, что делать, где копать и в чем я не прав (если не прав)???
Спасибо:

SavosRU

Фотография
Курсы
Дата: 18.11.2013
Ответить


По поводу стартового капитала - уже нашел ответ.
Надо в коде сразу после строки
var portfolio = new Portfolio {Name = "test"};
вписать еще одну строку:
portfolio.BeginValue = 300000; // Это мы, допустим, начинаем с тремя сотнями тысяч в кошельке

А вот как тестер научить понимать, что для покупки одного контракта можно не иметь все 142-143 тысячи???
То есть как ему передать, что это фьючерс а не акция и у фьючерсов свои законы???

ДОБАВЛЕНО ПОЗЖЕ:
Поскольку вопрос остался, но вопрос явно не по программе уважаемого BOND, а по самому S#.API - то вынес вопрос в отдельную ветку.
А за Analyzer - большое спасибо!!!
Спасибо:

SavosRU

Фотография
Курсы
Дата: 18.11.2013
Ответить


SavosRU Перейти

А вот как тестер научить понимать, что для покупки одного контракта можно не иметь все 142-143 тысячи???
То есть как ему передать, что это фьючерс а не акция и у фьючерсов свои законы???


Не дождался ответа. В том числе и в расхваленном чате техподдержки на сервере TFS Bored ...

Методом ненаучного тыка нашел решение. Делюсь, если кому интересно.
Сначала скриншот результатов - реально вплоть до 10 тысяч на счету (и ниже!) можно еще в тестере купить один контракт RI, если сумма ГО + комиссия не превышает размер оставшихся средств:
Фьючерсы в тестере торгуются не за их стоимость по графику, а за установленный размер ГО (как и должно быть)

Теперь что надо было сделать для этого...
В коде при создании тестового инструмента надо было дописать две строчки, которые на нижеприведенном листинге имеют номера 9 и 10:
Код
//Создаем тестовый инструмент, на котором будет производится тестирование
        var security = new Security
            {
                Id = "RIZ3@FORTS",
                Code = "RIZ3",
                Name = "RTS-12.13",
                MinStepSize = 10,
                MinStepPrice = (decimal) 6.50506,
                MarginBuy = (decimal) 7615.44,
                MarginSell = (decimal) 7615.44,
                ExchangeBoard = ExchangeBoard.Forts,
            };


Разумеется, кому-то для тестирования не нужно указывать размер ГО с точностью до копейки. Ради Бога - можно просто 7620 указать.
Но это в любом случае в двадцать раз меньше, чем пытается использовать тестер без такой поправки кода.
Ну и, конечно, у каждого фьючерса при тестировании нужно указывать его собственный размер ГО - это, надеюсь, многие и сами понимают BigGrin


ДОБАВЛЕНО:
Кстати, в реальном роботе, который будет работать с QUIK (с другими коннекторами не знаю, не проверял) для того, чтобы он тоже корректно мог работать с ГО (вдруг надо будет кому-то) после стандартного создания трейдера надо еще добавить вот такие строчки:

Код
        if (!_trader.SecuritiesTable.Columns.Contains(DdeSecurityColumns.MarginBuy))
        {
            _trader.SecuritiesTable.Columns.Add(DdeSecurityColumns.MarginBuy);
        }
        if (!_trader.SecuritiesTable.Columns.Contains(DdeSecurityColumns.MarginSell))
        {
            _trader.SecuritiesTable.Columns.Add(DdeSecurityColumns.MarginSell);
        }   


В этом случае программа будет прямо из Квика получать корректные данные по требуемому Гарантийному Обеспечению для каждого выбранного инструмента.
Спасибо: wkj

Bond

Фотография
Курсы
Дата: 19.11.2013
Ответить


Спасибо за исследование! Я до этого еще не добрался. Довожу до ума Оптимизатор и Анализатор. Сериализация и десериализация многомерных массивов массивов объектов меня убивает... Но уже почти допилил.
От родного логировпния S# я отказался. Написал свое. Под себя.
Переделал полностью график Эквити, а если быть точнее тоже от него отказался и написал свой))) Оказалось он еруеду какую-то считает. Не то что нужно.
Вообще приложения притерпели значительные изменения. Не гарантирую, что все выложу, но интересными вещами конечно поделюсь)

П.С. Программа заточена под работу со свечами. С тиками работает на много медленнее. Если вообще работает) Советую скачать мои свечки из хранилища.
Автор топика
Спасибо:

SavosRU

Фотография
Курсы
Дата: 19.11.2013
Ответить


С данными проблем нет: и Гидра качает, и Велслаб и свои наработки.
Если будет новая версия Анализатора и/или оптимизатора, которые пожелаете сделать публичными - с удовольствием приму участие в тестировании.
Особо, конечно, интересует, что за "ерунду" рисует график эквити в этой версии, что пришлось переписывать полностью самому???
Спасибо:

Bond

Фотография
Курсы
Дата: 19.11.2013
Ответить


SavosRU Перейти
С данными проблем нет: и Гидра качает, и Велслаб и свои наработки.
Если будет новая версия Анализатора и/или оптимизатора, которые пожелаете сделать публичными - с удовольствием приму участие в тестировании.
Особо, конечно, интересует, что за "ерунду" рисует график эквити в этой версии, что пришлось переписывать полностью самому???


https://stocksharp.ru/forum/4152/Mutnaia-statistika/
Автор топика
Спасибо:

Bond

Фотография
Курсы
Дата: 20.11.2013
Ответить


В приложении базовая версия Оптимизатора!

Обзорная статья
Автор топика
Спасибо: Андрей Гунинский Maxxx

Bond

Фотография
Курсы
Дата: 26.11.2013
Ответить


-
Автор топика
Спасибо: Андрей Гунинский

Андрей Гунинский

Фотография
Дата: 28.11.2013
Ответить


Bond Перейти
Доброго времени суток!
Задался мыслью, а как собственно проводить тестирование? Взять один большой диапазон и загнать его в Оптимизатор? А если ошибка какая появится или некорректное значение выпадет будет обидно, когда на вторые сутки тестирование встанет и все данные пропадут. ...


Если я правильно понял суть вопроса, то это смотря какой алгоритм, линейный или динамический. Если линейный то можно распараллелить, если какой либо динамический(например генетический) когда ход тестирования имеет обратную связь со своими же результатами в прошлый момент времени, то тогда нельзя(в общем случае). Но никто не мешает кэшировать состояние во время хода тестирование с определённым интервалом, из которого можно будет восстановиться если произойдёт сбой.
Спасибо:

Bond

Фотография
Курсы
Дата: 28.11.2013
Ответить


-
Автор топика
Спасибо:
1 2  >

Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy