Где можно прочитать, - каким образом работать в рамках одной стратегии с несколькими инструментами? Слышал, что делается это через BasketSecurity, но какой-либо другой информации не нашел.
Где можно прочитать, - каким образом работать в рамках одной стратегии с несколькими инструментами? Слышал, что делается это через BasketSecurity, но какой-либо другой информации не нашел.
コメント (7)
ログイン または アカウントを作成, コメントを残すにはログインまたは新規登録してください
Передали в стратегию несколько инструментов, создали по ним ордера, зарегистрировали.
BasketSecurityэто другое. Это абстрактный класс у которого есть несколько наследников с которыми можно работать - BasketSecurity.
Корзина инструментов.
То есть получается в стратегию надо передавать коллекции Candleseries и CandleManager?
CandleSeries можно и внутри стратегии создать(инструменты же будут переданы). А зачем создавать коллекцию CandleManager? Будет достаточно одного объекта.
Насчет CandleSeries понятно.
Насчет CandleManager, просто подумал раз его метод Start требует CandleSeries в качестве аргумента, то и CandleManager'ов должно быть несколько...
Получается я могу передать любой CandleSeries для метода Start?
Что-то не получается. Кто-нибудь может поподробнее объяснить? Я передаю 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 другой(второй, правильный) инструмент?
Смотрите в логе какие заявки с какими ценами уходят, потом посмотрите лимиты по этим инструментам и будет понятно в чем ошибка.
Да вроде разобрался. Спасибо! Запускаю по всем инструментам 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. Подозреваю, что это можно сделать буквально одной-двумя строчками. Не подскажите как?