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


Как выставлять заявки сразу по нескольким инструментам
Atom
3/25/2013


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

Tags:


Thanks:


Moadip

Avatar
Date: 3/25/2013
Reply


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

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

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

Lipot

Avatar
Date: 3/26/2013
Reply


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

Moadip

Avatar
Date: 3/26/2013
Reply


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

Lipot

Avatar
Date: 3/26/2013
Reply


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

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

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

Lipot

Avatar
Date: 3/26/2013
Reply


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

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

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 другой(второй, правильный) инструмент?
Thanks:

esper

Avatar
Date: 3/26/2013
Reply


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

Lipot

Avatar
Date: 3/27/2013
Reply


Да вроде разобрался. Спасибо!
Запускаю по всем инструментам 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. Подозреваю, что это можно сделать буквально одной-двумя строчками. Не подскажите как?
Thanks:


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

loading
clippy