← Atrás

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

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

¿Le resultó útil este tema?

Compartir tema

Comentarios (7)

Iniciar sesión o Crear cuenta, Inicie sesión o regístrese para dejar un comentario

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