StrategyManager.Register

StrategyManager.Register
Atom
9/9/2010
Tauler


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


Tags:


Thanks:


Mikhail Sukhov

Avatar
Date: 9/9/2010
Reply


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

Thanks:

dart

Avatar
Date: 9/9/2010
Reply


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

Thanks:

Mikhail Sukhov

Avatar
Date: 9/9/2010
Reply


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

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

Thanks:

Tauler

Avatar
Date: 9/9/2010
Reply


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

Thanks:

Mikhail Sukhov

Avatar
Date: 9/10/2010
Reply


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

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

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

Thanks:

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

Avatar
Date: 9/12/2010
Reply


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

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

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

Thanks:

Tauler

Avatar
Date: 9/13/2010
Reply


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

Thanks:

Tauler

Avatar
Date: 9/14/2010
Reply


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

Thanks:

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

Avatar
Date: 9/15/2010
Reply


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

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

Thanks:


Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy