Вопрос - как программно перенести данные от одного инструмента другому?
Сделал простейший код, который читает тики из инструментов, генерит свечки и складывает под другим именем. Все бы хорошо, но при сохранении свечек вылетает ошибка "Инструмент для TimeFrameCandle равен RIZ8@FORTS, а должен быть TESTING@FORTS." TESTING@FORTS это название тестового инструмента.
PS делается для создания склеенных свечек по фьючу.
var timeFrame = TimeSpan.FromMinutes(30);
var tradesSecurity = new Security
{
Id = "RIZ8@FORTS",
Name = "RIZ8@FORTS",
Code = "RIZ8@FORTS",
MinStepPrice = 1,
MinStepSize = 1,
MinPrice = 1,
MaxPrice = 1000000,
ExchangeBoard = ExchangeBoard.Forts,
};
var candlesSecurity = new Security
{
Id = "TESTING@FORTS",
Name = "TESTING@FORTS",
Code = "TESTING@FORTS",
MinStepPrice = 1,
MinStepSize = 1,
MinPrice = 1,
MaxPrice = 1000000,
ExchangeBoard = ExchangeBoard.Forts,
};
var tradesRegistry = new StorageRegistry();
((LocalMarketDataDrive) tradesRegistry.DefaultDrive).Path = "some path 1";
((LocalMarketDataDrive) tradesRegistry.DefaultDrive).UseAlphabeticPath = true;
var candlesRegistry = new StorageRegistry();
((LocalMarketDataDrive) candlesRegistry.DefaultDrive).Path = "some path 2";
((LocalMarketDataDrive) candlesRegistry.DefaultDrive).UseAlphabeticPath = true;
var candlesStorage = candlesRegistry.GetCandleStorage(typeof (TimeFrameCandle), candlesSecurity, timeFrame);
var candleSeries = new CandleSeries(typeof (TimeFrameCandle), candlesSecurity, timeFrame);
var tradesStorage = tradesRegistry.GetTradeStorage(tradesSecurity);
var trades = tradesStorage.Load(new DateTime(2008, 11, 01), new DateTime(2008, 11, 05));
var candles = trades.ToCandles(candleSeries);
if (candles.Count > 0)
{
candlesStorage.Save(candles);
}
Comments (8)
Login or Create account, Log in or register to leave a comment
Отвечу сам себе - для создания свечек по непрерывному фьючу (или иному инструменту) необходимо и достаточно сделать ContinuousSecurity.
ContinuousSecurity хранит свечки в базовых инструментах, что уменьшает расходы на хранение "составных" инструментов (нет дублирования).
А как это будет выглядеть в коде?🙄
Я создаю континиус через цикл:
Переход прибит гвоздями на 7-е число. Конечно лучше дату выставлять руками, а это упрощение.
Работа с таким инструментом идет через те же вызовы, что и обычный Security.
Спасибо за код! Интересно получилось. Вот только как ни крути лучше ручками даты выставлять. К тому же, я пришел к выводу, что лучше склеивать за день до экспирации. И в день экспирации уже работать с новым инструментом. Тогда тесты получатся более реальными.
зависит от задачи ;)
сделаешь руками - выкладывай на сайт :)
Я уже несколько недель достаю разработчиков, прошу склейку в Гидре подремонтировать. Обычные данные и склеенные фьючерсы со свечами с Финама уже выложил в общий доступ на Яндекс диске. Как сделаю с правильными днями экспирации, тоже постараюсь выложить 😉
Тогда лучше отдельно свечки выложи. У свечек размер сильно меньше и качать проще ;)
А еще лучше код для создания Cont Security или таблица где выписаны называния и даты переходов между фьючами. Это намного полезнее ;)
Данные у всех одинаковые, так что гонять их между компами необходимости мало. А вот результат (свечки/стратегии/etc) и места занимает меньше и полезнее =)