В документации устарело описание ContinuousSecurity. API изменился. Теперь совершенно не понятно, как создать ContinuousSecurity на основе данных из Hydra. В примерах ничего на эту тему нет.
Раньше я создавал его таким методом
/// <summary>
/// Создание склеенного фьючерса RI
/// </summary>
/// <returns></returns>
public ContinuousSecurity GenerateSecurity()
{
var prefix = "RI";
var securityName = prefix + "@CONTINIOUS";
var result = new ContinuousSecurity
{
Id = securityName,
Code = securityName,
Name = "ContinuousSecurity for " + securityName,
Board = ExchangeBoard.Forts,
};
for (var year = FIRST_YEAR; year < 2018; year++)
{
for (var i = 0; i < 4; i++)
{
var yearPart = year % 10; // тут получаем последнюю цифру года
var mounth = i * 3 + 3;
var mounthPart = Mounths[i]; // тут выбирается индекс, показывающий месяц
var id = prefix + mounthPart + yearPart + "@FORTS";
var code = prefix + "-" + (yearPart) + "." + (mounth);
var security = new Security
{
Id = id,
Code = code,
Name =
"ContinuousSecurity for " + prefix + " expiration in " + mounth + "." +
year,
Board = ExchangeBoard.Forts,
};
var expiration = new DateTime(year, mounth, FortsExpirationTable[year - 2000][i]);
result.ExpirationJumps.Add(security, expiration);
}
}
return result;
}
Соответственно сейчас Add адово изменился. Теперь, очевидно, требуется использование FillFortsJumps. Вопрос: как? (загрузка идёт через IMarketDataStorage<Trade>)
Comments (1)
Login or Create account, Log in or register to leave a comment
Похоже, разобрался. С ContinuousSecurity всё практически то же самое. Судя по коду FillFortsJumps, он здесь не нужен. Бумага создаётся, но похоже, что разработчики забыли, как хранилище должно её грузить. Не грузится ни в старом виде, ни в виде сообщений. Количество сделок - 0, как и количество дат. Слава Богу, что мне это нужно только на начальном этапе предзагрузки в свой собственный формат. Просто загружаю теперь данные последовательно для списка фьючерсных бумаг.