StrategyManager.Register
Atom
09.09.2010
Tauler


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


Теги:


Спасибо:


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 первый инструмент и первый портфель. Если есть соображения, как улучшить дизайн, готов послушать.

Спасибо:

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

Фотография
Дата: 12.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