StrategyManager.Register
Atom Ответить
09.09.2010


Скажите - а для чего там 3 параметра? ITrader - понятно, а зачем
портвель и бумага? ведь стратегия может торговать более чем одгим
инструментом и более чем на одном счете. Я понимаю что это
перекочевало из контсруктора стратегии, но сама суть вопроса не
меняется.

Теги:


Спасибо:




9 Ответов
Mikhail Sukhov

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


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

Спасибо:

dart

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


А если несколько стратегий, и у них много одинаковых действий -
обращение к одной и той же БД, например.
Имеет смысл создать головную стратегию, которая читает БД, а потом в
зависимости от условий, вызывает ту или иную стратегию, чтобы одно и
тоже действие не производилось несколько раз?
И ещё, все стратегии работают параллельно. Значит ли это что например
две стратегии одновременно могут производить котирование по разным
инструментам? Или это как-то по другому происходит.

Спасибо:

Mikhail Sukhov

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


Выносите в отдельный блоки, наследуйте стратегии одна от другой.
Ограничений по организации кода, по сути, никаких.

Да, будут котировать параллельно.

Спасибо:

Tauler

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


так а если стратегия работает с двумя инструментами? тот же арбитраж?
или спредер?

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

Mikhail Sukhov

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


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

Но я полностью согласен по поводу парно-инструментальный стратегий.
Более того, не только по таким, но и по стратегиям, где собирается
корзина инструментов... Думаю, даже банальное использование множества
портфелей так же не экзотика (особено в ДУ).

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

Спасибо:

Иванов Андрей

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


Вместо одного объекта передавать массив или IEnumerable =)
Другие варианты отсутствуют.

Но мне кажется, что это ускорение энтропии.
А лучше делать базовую стратегию для нескольких инструментов и
нескольких портфелей, с расширением класса StrategyManager, который
будет понимать эту ветку стратегий. Начальная регистрация стратегии
через обычный путь -- StrategyManager.Register(Strategy, ITrader,
Portfolio, Security). А расширять тремя методами (ну или по-другому
как-нибудь) типа StrategyManager.Register(StrategyWide, ITrader),
StrategyManager.Register(StrategyWide, Portfolio) и
StrategyManager.Register(StrategyWide, Security); Соответственно,
начальные параметры стратегии будут доступны через свойства Strategy,
остальные параметры через свойства StrategyWide.

Мне пока не требовалось такого, пишу чего придумалось за 3 минуты.
Может быть, поможет найти правильный путь.

Спасибо:

Tauler

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


Ну в вариант - конструткор для Strategy только ITrader и класс
Strategy - асбтрактный?
Кому надо - то намутит фабрику.
Автор топика
Спасибо:

Tauler

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


в смысле параметр в конструкторе Strategy - только ITrader

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

Иванов Андрей

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


У стратегии вроде не должно быть конструкторов с параметрами.
Класс Strategy абстрактный и есть.

Думаю, что эффективнее всего сделать свою такую стратегию и
посмотреть, чего там требуется. Потому что эмпирически слишком долго
думать надо.

Спасибо:


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

loading
clippy