← Zurück

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

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

War dieses Thema hilfreich?

Thema teilen

Kommentare (7)

Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen

Moadip
Moadip

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

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

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

Lipot
Lipot Autor

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

Moadip
Moadip

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

Lipot
Lipot Autor

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

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

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

Lipot
Lipot Autor

Что-то не получается. Кто-нибудь может поподробнее объяснить? Я передаю 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 другой(второй, правильный) инструмент?

esper
esper

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

Lipot
Lipot Autor

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