VoDA
|
Дата: 11.09.2013
Отвечу сам себе - для создания свечек по непрерывному фьючу (или иному инструменту) необходимо и достаточно сделать ContinuousSecurity.
ContinuousSecurity хранит свечки в базовых инструментах, что уменьшает расходы на хранение "составных" инструментов (нет дублирования).
|
|
|
|
|
Bond
|
Дата: 11.09.2013
VoDA Отвечу сам себе - для создания свечек по непрерывному фьючу (или иному инструменту) необходимо и достаточно сделать ContinuousSecurity.
ContinuousSecurity хранит свечки в базовых инструментах, что уменьшает расходы на хранение "составных" инструментов (нет дублирования). А как это будет выглядеть в коде?[rolleyes]
|
|
Спасибо:
|
|
|
|
|
VoDA
|
Дата: 11.09.2013
|
|
|
|
Bond А как это будет выглядеть в коде?[rolleyes] Я создаю континиус через цикл: Код
private static readonly string[] Mounths = new[] {"H", "M", "U", "Z",}; // последовательность важна для правильной генерации имен фьючерсов
public const int FIRST_YEAR = 2005;
public ContinuousSecurity GenerateSecurity(decimal minStepPrice, decimal minStepSize)
{
var prefix = "RI";
var securityName = prefix + "@CONTINIOUS";
var result = new ContinuousSecurity
{
Id = securityName,
Code = securityName,
Name = "ContinuousSecurity for " + securityName,
MinStepPrice = minStepPrice,
MinStepSize = minStepSize,
MinPrice = 1,
MaxPrice = 1000000,
ExchangeBoard = ExchangeBoard.Forts,
};
for (var year = FIRST_YEAR; year < 2020; 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,
MinStepPrice = minStepPrice,
MinStepSize = minStepSize,
MinPrice = 1,
MaxPrice = 1000000,
ExchangeBoard = ExchangeBoard.Forts,
};
var expiration = new DateTime(year, mounth, 7); // переход между фьючами происходит 7-го числа
result.ExpirationJumps.Add(security, expiration);
}
}
return result;
}
Переход прибит гвоздями на 7-е число. Конечно лучше дату выставлять руками, а это упрощение. Работа с таким инструментом идет через те же вызовы, что и обычный Security.
|
|
|
|
|
Bond
|
Дата: 11.09.2013
Спасибо за код! Интересно получилось. Вот только как ни крути лучше ручками даты выставлять. К тому же, я пришел к выводу, что лучше склеивать за день до экспирации. И в день экспирации уже работать с новым инструментом. Тогда тесты получатся более реальными.
|
|
Спасибо:
|
|
|
|
|
VoDA
|
Дата: 11.09.2013
Bond Спасибо за код! Интересно получилось. Вот только как ни крути лучше ручками даты выставлять. К тому же, я пришел к выводу, что лучше склеивать за день до экспирации. И в день экспирации уже работать с новым инструментом. Тогда тесты получатся более реальными. зависит от задачи ;) сделаешь руками - выкладывай на сайт :)
|
|
Спасибо:
|
|
|
|
|
Bond
|
Дата: 11.09.2013
VoDA Bond Спасибо за код! Интересно получилось. Вот только как ни крути лучше ручками даты выставлять. К тому же, я пришел к выводу, что лучше склеивать за день до экспирации. И в день экспирации уже работать с новым инструментом. Тогда тесты получатся более реальными. зависит от задачи ;) сделаешь руками - выкладывай на сайт :) Я уже несколько недель достаю разработчиков, прошу склейку в Гидре подремонтировать. Обычные данные и склеенные фьючерсы со свечами с Финама уже выложил в общий доступ на Яндекс диске. Как сделаю с правильными днями экспирации, тоже постараюсь выложить [wink]
|
|
Спасибо:
|
|
|
|
|
VoDA
|
Дата: 13.09.2013
Bond Я уже несколько недель достаю разработчиков, прошу склейку в Гидре подремонтировать. Обычные данные и склеенные фьючерсы со свечами с Финама уже выложил в общий доступ на Яндекс диске. Как сделаю с правильными днями экспирации, тоже постараюсь выложить [wink] Тогда лучше отдельно свечки выложи. У свечек размер сильно меньше и качать проще ;)
|
|
Спасибо:
|
|
|
|
|
VoDA
|
Дата: 13.09.2013
Bond Я уже несколько недель достаю разработчиков, прошу склейку в Гидре подремонтировать. Обычные данные и склеенные фьючерсы со свечами с Финама уже выложил в общий доступ на Яндекс диске. Как сделаю с правильными днями экспирации, тоже постараюсь выложить [wink] А еще лучше код для создания Cont Security или таблица где выписаны называния и даты переходов между фьючами. Это намного полезнее ;) Данные у всех одинаковые, так что гонять их между компами необходимости мало. А вот результат (свечки/стратегии/etc) и места занимает меньше и полезнее =)
|
|
Спасибо:
|
|
|
|