Здравствуйте. Как правильно создать HistoryEmulationConnector для двух инструментов, если candleManager.Start(this ICandleManager manager, CandleSeries series) только для одного инструмента var security1 = new Security { Id = "SBER@TQBR", Code = "SBER", Board = _exchangeInfoProvider.GetOrCreateBoard("TQBR") }; var candleManager = new CandleManager((Connector)connector);
var seriesSecurity1 = new CandleSeries(typeof(TimeFrameCandle), security1, timeFrame) { BuildCandlesMode = emulationInfo.UsedCandleTimeFrame == null ? BuildCandlesModes.Build : BuildCandlesModes.Load };
var portfolio = new Portfolio { Name = "Test Arbitrage Account", BeginValue = 1000000, };
var connector = new HistoryEmulationConnector(new[] { security1, security2 }, new[] ) { EmulationAdapter = { Emulator = { Settings = { // match order if historical price touched our limit order price. // It is terned off, and price should go through limit order price level // (more "severe" test mode) MatchOnTouch = false, } } },
CreateDepthFromOrdersLog = emulationInfo.IsUseOrderLog,
CreateTradesFromOrdersLog = emulationInfo.IsUseOrderLog,
HistoryMessageAdapter =
{
StorageRegistry = storageRegistry,
// set history range
StartDate = startTime,
StopDate = stopTime,
OrderLogMarketDepthBuilders =
{
//{
// secId,
// LocalizedStrings.ActiveLanguage == Languages.Russian
// ? (IOrderLogMarketDepthBuilder)new PlazaOrderLogMarketDepthBuilder(secId)
// : new ItchOrderLogMarketDepthBuilder(secId)
//}
}
},
// set market time freq as time frame
MarketTimeChangedInterval = timeFrame,
};
candleManager.Start(seriesSecurity1); - исключение (An exception of type 'System.ArgumentException' occurred in StockSharp.Algo.dll but was not handled in user code
Additional information: Серия TimeFrameCandle_SBER@TQBR_00-01-00 не была остановлена.)
Comentários (11)
Entrar ou Criar conta, Faça login ou cadastre-se para deixar um comentário
В конструктор HistoryEmulationConnector передаете список инструментов... Создаете CandleSeries для каждого инструмента. Вызываете метод CandleManager.Start(series) для каждой серии..
var connector = new HistoryEmulationConnector(new List<Security> { security1, security2 }, new[] ) или var connector = new HistoryEmulationConnector(new[] { security1, security2 }, new[] ) в методе candleManager.Start(seriesSecurity1); появляется исключение (An exception of type 'System.ArgumentException' occurred in StockSharp.Algo.dll but was not handled in user code Additional information: Серия TimeFrameCandle_SBER@TQBR_00-01-00 не была остановлена.)
var connector = new HistoryEmulationConnector(new[] , new[] ) работает.
Как правильно передать в конструктор HistoryEmulationConnector список инструментов?
Просто передаете список :List или массив Security[] инструментов...
И var sec = new Security[] { security1, security2 }; и var sec = new List<Security> { security1, security2 }; var connector = new HistoryEmulationConnector(sec, new[] ) выдаёт всё тоже исключение.
"Просто передаете список :List<Security> или массив Security[] инструментов" - покажите пример кодом, пожалуйста
Ищите какое знание Вы не присвоили... Исключение внимательно посмотрите, может там "нулевое" свойство упоминается... Может в инструменте площадку не присвоили...
var sec = new List<Security> { security1, security2 }; var connector = new HistoryEmulationConnector(sec, new[] ) var seriesSecurity1 = new CandleSeries(typeof(TimeFrameCandle), security1, timeFrame) { BuildCandlesMode = emulationInfo.UsedCandleTimeFrame == null ? BuildCandlesModes.Build : BuildCandlesModes.Load };
Причём, если использовать только security1, где var sec = new List<Security> { security1/*, security2 */}; var connector = new HistoryEmulationConnector(sec, new[] ) или только security2 var sec = new List<Security> { /*security1, */security2 }; var connector = new HistoryEmulationConnector(sec, new[] ) то исключения не возникает.
Покажите пример кода, где успешно запускается candleManager.Start(series), в котором var candleManager = new CandleManager((Connector)connector); где connector создан для двух и более инструментов.
Возможно, я что-то путаю с созданием коннектора var connector = new HistoryEmulationConnector(sec, new[] ) { EmulationAdapter = { Emulator = { Settings = { // match order if historical price touched our limit order price. // It is terned off, and price should go through limit order price level // (more "severe" test mode) MatchOnTouch = false, } } },
Пример создания взят из gitHub Данный для одного инструмента работает, для 2-х - нет
Ошибка когда вы серию создаете... Проверьте все ли поля в candleseries инициализированы...
Весь код пришлите...
Поля в candleseries
Код пришлю на почту info@stocksharp.com, т.к. он содержит алгоритмы, которые у вас находятся не в открытом доступе
ок