HistoryEmulationConnector для двух инструментов
Atom Ответить
05.07.2017


Здравствуйте.
Как правильно создать 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[] { portfolio })
{
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 не была остановлена.)



Спасибо:




11 Ответов
Support

Фотография
Дата: 06.07.2017
Ответить


В конструктор HistoryEmulationConnector передаете список инструментов... Создаете CandleSeries для каждого инструмента. Вызываете метод CandleManager.Start(series) для каждой серии..
Спасибо:

Дмитрий_

Фотография
Курсы Благотворитель
Дата: 06.07.2017
Ответить


var connector = new HistoryEmulationConnector(new List<Security> { security1, security2 }, new[] { portfolio })
или
var connector = new HistoryEmulationConnector(new[] { security1, security2 }, new[] { portfolio }) в методе
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[] { security1}, new[] { portfolio }) работает.

Как правильно передать в конструктор HistoryEmulationConnector список инструментов?
Автор топика
Спасибо:

Support

Фотография
Дата: 07.07.2017
Ответить


Просто передаете список :List<Security> или массив Security[] инструментов...
Спасибо:

Дмитрий_

Фотография
Курсы Благотворитель
Дата: 07.07.2017
Ответить


И
var sec = new Security[] { security1, security2 };
и
var sec = new List<Security> { security1, security2 };
var connector = new HistoryEmulationConnector(sec, new[] { portfolio })
{...}
выдаёт всё тоже исключение.

"Просто передаете список :List<Security> или массив Security[] инструментов" - покажите пример кодом, пожалуйста
Автор топика
Спасибо:

Support

Фотография
Дата: 10.07.2017
Ответить


Ищите какое знание Вы не присвоили... Исключение внимательно посмотрите, может там "нулевое" свойство упоминается... Может в инструменте площадку не присвоили...
Спасибо:

Дмитрий_

Фотография
Курсы Благотворитель
Дата: 10.07.2017
Ответить


Снимок1.PNGСнимок2.PNG

var sec = new List<Security> { security1, security2 };
var connector = new HistoryEmulationConnector(sec, new[] { portfolio })
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[] { portfolio })
или только security2
var sec = new List<Security> { /*security1, */security2 };
var connector = new HistoryEmulationConnector(sec, new[] { portfolio }) то исключения не возникает.

Покажите пример кода, где успешно запускается
candleManager.Start(series),
в котором
var candleManager = new CandleManager((Connector)connector); где connector создан для двух и более инструментов.
Снимок1.PNG 69 KB (16) Снимок2.PNG 143 KB (16)
Автор топика
Спасибо:

Дмитрий_

Фотография
Курсы Благотворитель
Дата: 11.07.2017
Ответить


Возможно, я что-то путаю с созданием коннектора
var connector = new HistoryEmulationConnector(sec, new[] { portfolio })
{
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,
};
Пример создания взят из gitHub
Данный для одного инструмента работает, для 2-х - нет
Автор топика
Спасибо:

Support

Фотография
Дата: 11.07.2017
Ответить


Ошибка когда вы серию создаете... Проверьте все ли поля в candleseries инициализированы...
Спасибо:

Support

Фотография
Дата: 11.07.2017
Ответить


Весь код пришлите...
Спасибо:

Дмитрий_

Фотография
Курсы Благотворитель
Дата: 11.07.2017
Ответить


Поля в candleseries
Снимок.PNG

Код пришлю на почту info@stocksharp.com, т.к. он содержит алгоритмы, которые у вас находятся не в открытом доступе
Снимок.PNG 73 KB (16)
Автор топика
Спасибо:

Support

Фотография
Дата: 12.07.2017
Ответить


ок
Спасибо:


Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy