Как выставлять заявки сразу по нескольким инструментам

Как выставлять заявки сразу по нескольким инструментам
Atom
25.03.2013
Lipot


Где можно прочитать, - каким образом работать в рамках одной стратегии с несколькими инструментами? Слышал, что делается это через BasketSecurity, но какой-либо другой информации не нашел.


Теги:


Спасибо:


Moadip

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


Передали в стратегию несколько инструментов, создали по ним ордера, зарегистрировали.

BasketSecurityэто другое. Это абстрактный класс у которого есть несколько наследников с которыми можно работать - BasketSecurity.

Корзина инструментов.

Спасибо:

Lipot

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


То есть получается в стратегию надо передавать коллекции Candleseries и CandleManager?

Спасибо:

Moadip

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


CandleSeries можно и внутри стратегии создать(инструменты же будут переданы). А зачем создавать коллекцию CandleManager? Будет достаточно одного объекта.

Спасибо:

Lipot

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


Насчет CandleSeries понятно.

Насчет CandleManager, просто подумал раз его метод Start требует CandleSeries в качестве аргумента, то и CandleManager'ов должно быть несколько...

Получается я могу передать любой CandleSeries для метода Start?

Спасибо:

Lipot

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


Что-то не получается. Кто-нибудь может поподробнее объяснить? Я передаю Trader.Securities через List в стратегию в качестве аргумента.

Потом в конструкторе стратегии добавляю следующее:

foreach (var security in _securityList) { var tempSeries = new CandleSeries(typeof(TimeFrameCandle), security, _timeFrame); _candleSeriesList.Add(tempSeries); } _candleManager.Start(_candleSeriesList.ElementAt(0)); _candleManager.Start(_candleSeriesList.ElementAt(1));

Потом в перегрузке метода OnStarted добавляю следующий код:

foreach (var series in _candleSeriesList) { series .WhenCandlesFinished() .Do(ProcessCandle) .Apply(this); }

Но при работе метода OnProcessCandle, если по первому инструменту все заявки выставляются, то по второму инструменту - заявки не выставляются по следующей причине: RS_SRM3@RTS_SPBFUT007r0 | 26.03.2013 18:14:02.746 | Ошибка | Заявка 65608703 (0x20B08B3) не была принята по причине StockSharp.Quik.ApiException: Код ошибки Failed Сообщение Ошибка создания заявки. [FORTS][32] "Цена сделки вне лимита"..

Как передать в OnProcessCandle другой(второй, правильный) инструмент?

Спасибо:

esper

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


Смотрите в логе какие заявки с какими ценами уходят, потом посмотрите лимиты по этим инструментам и будет понятно в чем ошибка.

Спасибо:

Lipot

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


Да вроде разобрался. Спасибо! Запускаю по всем инструментам CandleSeries и регистрируюсь на события окончания свечки. Когда событие приходит создаю ордер и передаю ему candle.Security:

var orderBuy = new Order { Type = OrderTypes.Limit, Volume = 1, Price = candle.ClosePrice - 30, Portfolio = base.Portfolio, Security = candle.Security, Direction = OrderDirections.Buy, };

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

Спасибо:


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

loading
clippy