HistoryEmulationConnector для двух инструментов

HistoryEmulationConnector для двух инструментов
Atom
7/5/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 не была остановлена.)


1 2  >
Support

Avatar
Date: 7/6/2017
Reply


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

Дмитрий_

Avatar
Date: 7/6/2017
Reply


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 список инструментов?
Thanks:

Support

Avatar
Date: 7/7/2017
Reply


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

Дмитрий_

Avatar
Date: 7/7/2017
Reply


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

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

Support

Avatar
Date: 7/10/2017
Reply


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

Дмитрий_

Avatar
Date: 7/10/2017
Reply


Снимок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 (595) Снимок2.PNG 143 KB (557)
Thanks:

Дмитрий_

Avatar
Date: 7/11/2017
Reply


Возможно, я что-то путаю с созданием коннектора
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-х - нет
Thanks:

Support

Avatar
Date: 7/11/2017
Reply


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

Support

Avatar
Date: 7/11/2017
Reply


Весь код пришлите...
Thanks:

Дмитрий_

Avatar
Date: 7/11/2017
Reply


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

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

Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy