Перенос данные от одного инструмента другому~/topic/3974/perenos-dannye-ot-odnogo-instrumenta-drugomu/Copyright @ StockSharp Platform LLC 2010 - 20242024-03-29T07:15:23Zhttps://stocksharp.ru/images/logo.pnghttps://stocksharp.ru/posts/m/27446/Я уже несколько недель достаю разработчиков, прошу склейку в Гидре подремонтировать. Обычные данные ...2013-09-13T05:18:01Z2013-09-13T05:18:01ZVoDAhttps://stocksharp.ru/users/27725/info@stocksharp.ru<div class="quote"><span class="quotetitle">Bond <a href="https://stocksharp.ru/posts/m/27394/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote">Я уже несколько недель достаю разработчиков, прошу склейку в Гидре подремонтировать. Обычные данные и склеенные фьючерсы со свечами с Финама уже выложил в общий доступ на Яндекс диске. Как сделаю с правильными днями экспирации, тоже постараюсь выложить [wink] </div></div><br /><br />А еще лучше код для создания Cont Security или таблица где выписаны называния и даты переходов между фьючами. Это намного полезнее ;)<br /><br />Данные у всех одинаковые, так что гонять их между компами необходимости мало. А вот результат (свечки/стратегии/etc) и места занимает меньше и полезнее =)Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/27445/Я уже несколько недель достаю разработчиков, прошу склейку в Гидре подремонтировать. Обычные данные ...2013-09-13T05:11:12Z2013-09-13T05:11:12ZVoDAhttps://stocksharp.ru/users/27725/info@stocksharp.ru<div class="quote"><span class="quotetitle">Bond <a href="https://stocksharp.ru/posts/m/27394/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote">Я уже несколько недель достаю разработчиков, прошу склейку в Гидре подремонтировать. Обычные данные и склеенные фьючерсы со свечами с Финама уже выложил в общий доступ на Яндекс диске. Как сделаю с правильными днями экспирации, тоже постараюсь выложить [wink] </div></div><br /><br />Тогда лучше отдельно свечки выложи. У свечек размер сильно меньше и качать проще ;)Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/27394/Спасибо за код! Интересно получилось. Вот только как ни крути лучше ручками даты выставлять. К тому ...2013-09-11T11:47:32Z2013-09-11T11:47:32ZBondhttps://stocksharp.ru/users/26882/info@stocksharp.ru<div class="quote"><span class="quotetitle">VoDA <a href="https://stocksharp.ru/posts/m/27393/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote"><div class="quote"><span class="quotetitle">Bond <a href="https://stocksharp.ru/posts/m/27391/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote">Спасибо за код! Интересно получилось. Вот только как ни крути лучше ручками даты выставлять. К тому же, я пришел к выводу, что лучше склеивать за день до экспирации. И в день экспирации уже работать с новым инструментом. Тогда тесты получатся более реальными.</div></div><br /><br />зависит от задачи ;)<br /><br />сделаешь руками - выкладывай на сайт :)</div></div><br /><br />Я уже несколько недель достаю разработчиков, прошу склейку в Гидре подремонтировать. Обычные данные и склеенные фьючерсы со свечами с Финама уже выложил в общий доступ на Яндекс диске. Как сделаю с правильными днями экспирации, тоже постараюсь выложить [wink] Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/27393/Спасибо за код! Интересно получилось. Вот только как ни крути лучше ручками даты выставлять. К тому ...2013-09-11T10:39:26Z2013-09-11T10:39:26ZVoDAhttps://stocksharp.ru/users/27725/info@stocksharp.ru<div class="quote"><span class="quotetitle">Bond <a href="https://stocksharp.ru/posts/m/27391/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote">Спасибо за код! Интересно получилось. Вот только как ни крути лучше ручками даты выставлять. К тому же, я пришел к выводу, что лучше склеивать за день до экспирации. И в день экспирации уже работать с новым инструментом. Тогда тесты получатся более реальными.</div></div><br /><br />зависит от задачи ;)<br /><br />сделаешь руками - выкладывай на сайт :)Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/27391/Спасибо за код! Интересно получилось. Вот только как ни крути лучше ручками даты выставлять. К тому ...2013-09-11T09:14:06Z2013-09-11T09:14:06ZBondhttps://stocksharp.ru/users/26882/info@stocksharp.ruСпасибо за код! Интересно получилось. Вот только как ни крути лучше ручками даты выставлять. К тому же, я пришел к выводу, что лучше склеивать за день до экспирации. И в день экспирации уже работать с новым инструментом. Тогда тесты получатся более реальными.Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/27390/А как это будет выглядеть в коде? Я создаю континиус через цикл: private static readonly string Moun...2013-09-11T08:53:02Z2013-09-11T08:53:02ZVoDAhttps://stocksharp.ru/users/27725/info@stocksharp.ru<div class="quote"><span class="quotetitle">Bond <a href="https://stocksharp.ru/posts/m/27387/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote">А как это будет выглядеть в коде?[rolleyes] </div></div><br /><br />Я создаю континиус через цикл:<br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
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;
}</pre>
</div></div><br />Переход прибит гвоздями на 7-е число. Конечно лучше дату выставлять руками, а это упрощение.<br /><br />Работа с таким инструментом идет через те же вызовы, что и обычный Security.Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/27387/Отвечу сам себе - для создания свечек по непрерывному фьючу (или иному инструменту) необходимо и дос...2013-09-11T07:31:33Z2013-09-11T07:31:33ZBondhttps://stocksharp.ru/users/26882/info@stocksharp.ru<div class="quote"><span class="quotetitle">VoDA <a href="https://stocksharp.ru/posts/m/27386/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote">Отвечу сам себе - для создания свечек по непрерывному фьючу (или иному инструменту) необходимо и достаточно сделать ContinuousSecurity. <br /><br />ContinuousSecurity хранит свечки в базовых инструментах, что уменьшает расходы на хранение "составных" инструментов (нет дублирования).</div></div><br /><br />А как это будет выглядеть в коде?[rolleyes] Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/27386/Отвечу сам себе - для создания свечек по непрерывному фьючу (или иному инструменту) необходимо и дос...2013-09-11T07:14:04Z2013-09-11T07:14:04ZVoDAhttps://stocksharp.ru/users/27725/info@stocksharp.ruОтвечу сам себе - для создания свечек по непрерывному фьючу (или иному инструменту) необходимо и достаточно сделать ContinuousSecurity. <br /><br />ContinuousSecurity хранит свечки в базовых инструментах, что уменьшает расходы на хранение "составных" инструментов (нет дублирования).Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/27384/Вопрос - как программно перенести данные от одного инструмента другому? Сделал простейший код, котор...2013-09-11T05:21:24Z2013-09-11T05:21:24ZVoDAhttps://stocksharp.ru/users/27725/info@stocksharp.ruВопрос - как программно перенести данные от одного инструмента другому?<br /><br />Сделал простейший код, который читает тики из инструментов, генерит свечки и складывает под другим именем.<br />Все бы хорошо, но при сохранении свечек вылетает ошибка "Инструмент для TimeFrameCandle равен RIZ8@FORTS, а должен быть TESTING@FORTS." TESTING@FORTS это название тестового инструмента.<br /><br />PS делается для создания склеенных свечек по фьючу.<br /><br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
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);
}</pre>
</div></div>Copyright @ StockSharp Platform LLC 2010 - 2024