﻿<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type='text/css' href='https://stocksharp.com/css/style.css'?>
<?xml-stylesheet type='text/css' href='https://stocksharp.com/css/bbeditor.css'?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title type="html">Перенос данные от одного инструмента другому</title>
  <id>~/topic/3974/perenos-dannye-ot-odnogo-instrumenta-drugomu/</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-04-03T20:57:52Z</updated>
  <logo>https://stocksharp.com/images/logo.png</logo>
  <link href="https://stocksharp.com/handlers/atom.ashx?category=topic&amp;id=3974" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.com/posts/m/27446/</id>
    <title type="text">Я уже несколько недель достаю разработчиков, прошу склейку в Гидре подремонтировать. Обычные данные ...</title>
    <published>2013-09-13T05:18:01Z</published>
    <updated>2013-09-13T05:18:01Z</updated>
    <author>
      <name>VoDA</name>
      <uri>https://stocksharp.com/users/27725/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Bond &lt;a href="https://stocksharp.com/posts/m/27394/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;Я уже несколько недель достаю разработчиков, прошу склейку в Гидре подремонтировать. Обычные данные и склеенные фьючерсы со свечами с Финама уже выложил в общий доступ на Яндекс диске. Как сделаю с правильными днями экспирации, тоже постараюсь выложить [wink] &lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;А еще лучше код для создания Cont Security или таблица где выписаны называния и даты переходов между фьючами. Это намного полезнее ;)&lt;br /&gt;&lt;br /&gt;Данные у всех одинаковые, так что гонять их между компами необходимости мало. А вот результат (свечки/стратегии/etc) и места занимает меньше и полезнее =)</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/27445/</id>
    <title type="text">Я уже несколько недель достаю разработчиков, прошу склейку в Гидре подремонтировать. Обычные данные ...</title>
    <published>2013-09-13T05:11:12Z</published>
    <updated>2013-09-13T05:11:12Z</updated>
    <author>
      <name>VoDA</name>
      <uri>https://stocksharp.com/users/27725/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Bond &lt;a href="https://stocksharp.com/posts/m/27394/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;Я уже несколько недель достаю разработчиков, прошу склейку в Гидре подремонтировать. Обычные данные и склеенные фьючерсы со свечами с Финама уже выложил в общий доступ на Яндекс диске. Как сделаю с правильными днями экспирации, тоже постараюсь выложить [wink] &lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Тогда лучше отдельно свечки выложи. У свечек размер сильно меньше и качать проще ;)</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/27394/</id>
    <title type="text">Спасибо за код! Интересно получилось. Вот только как ни крути лучше ручками даты выставлять. К тому ...</title>
    <published>2013-09-11T11:47:32Z</published>
    <updated>2013-09-11T11:47:32Z</updated>
    <author>
      <name>Bond</name>
      <uri>https://stocksharp.com/users/26882/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;VoDA &lt;a href="https://stocksharp.com/posts/m/27393/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Bond &lt;a href="https://stocksharp.com/posts/m/27391/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;Спасибо за код! Интересно получилось. Вот только как ни крути лучше ручками даты выставлять. К тому же, я пришел к выводу, что лучше склеивать за день до экспирации. И в день экспирации уже работать с новым инструментом. Тогда тесты получатся более реальными.&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;зависит от задачи ;)&lt;br /&gt;&lt;br /&gt;сделаешь руками - выкладывай на сайт :)&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Я уже несколько недель достаю разработчиков, прошу склейку в Гидре подремонтировать. Обычные данные и склеенные фьючерсы со свечами с Финама уже выложил в общий доступ на Яндекс диске. Как сделаю с правильными днями экспирации, тоже постараюсь выложить [wink] </content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/27393/</id>
    <title type="text">Спасибо за код! Интересно получилось. Вот только как ни крути лучше ручками даты выставлять. К тому ...</title>
    <published>2013-09-11T10:39:26Z</published>
    <updated>2013-09-11T10:39:26Z</updated>
    <author>
      <name>VoDA</name>
      <uri>https://stocksharp.com/users/27725/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Bond &lt;a href="https://stocksharp.com/posts/m/27391/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;Спасибо за код! Интересно получилось. Вот только как ни крути лучше ручками даты выставлять. К тому же, я пришел к выводу, что лучше склеивать за день до экспирации. И в день экспирации уже работать с новым инструментом. Тогда тесты получатся более реальными.&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;зависит от задачи ;)&lt;br /&gt;&lt;br /&gt;сделаешь руками - выкладывай на сайт :)</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/27391/</id>
    <title type="text">Спасибо за код! Интересно получилось. Вот только как ни крути лучше ручками даты выставлять. К тому ...</title>
    <published>2013-09-11T09:14:06Z</published>
    <updated>2013-09-11T09:14:06Z</updated>
    <author>
      <name>Bond</name>
      <uri>https://stocksharp.com/users/26882/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">Спасибо за код! Интересно получилось. Вот только как ни крути лучше ручками даты выставлять. К тому же, я пришел к выводу, что лучше склеивать за день до экспирации. И в день экспирации уже работать с новым инструментом. Тогда тесты получатся более реальными.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/27390/</id>
    <title type="text">А как это будет выглядеть в коде? Я создаю континиус через цикл: private static readonly string Moun...</title>
    <published>2013-09-11T08:53:02Z</published>
    <updated>2013-09-11T08:53:02Z</updated>
    <author>
      <name>VoDA</name>
      <uri>https://stocksharp.com/users/27725/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Bond &lt;a href="https://stocksharp.com/posts/m/27387/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;А как это будет выглядеть в коде?[rolleyes] &lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Я создаю континиус через цикл:&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Code&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;
private static readonly string[] Mounths = new[] {&amp;quot;H&amp;quot;, &amp;quot;M&amp;quot;, &amp;quot;U&amp;quot;, &amp;quot;Z&amp;quot;,}; // последовательность важна для правильной генерации имен фьючерсов
        public const int FIRST_YEAR = 2005;

        public ContinuousSecurity GenerateSecurity(decimal minStepPrice, decimal minStepSize)
        {
            var prefix = &amp;quot;RI&amp;quot;;
            var securityName = prefix + &amp;quot;@CONTINIOUS&amp;quot;;
            var result = new ContinuousSecurity
                             {
                                 Id = securityName,
                                 Code = securityName,
                                 Name = &amp;quot;ContinuousSecurity for &amp;quot; + securityName,
                                 MinStepPrice = minStepPrice,
                                 MinStepSize = minStepSize,
                                 MinPrice = 1,
                                 MaxPrice = 1000000,
                                 ExchangeBoard = ExchangeBoard.Forts,
                             };
            for (var year = FIRST_YEAR; year &amp;lt; 2020; year++)
            {
                for (var i = 0; i &amp;lt; 4; i ++)
                {
                    var yearPart = year%10;      // тут получаем последнюю цифру года
                    var mounth = i*3 + 3;
                    var mounthPart = Mounths[i]; // тут выбирается индекс, показывающий месяц

                    var id = prefix + mounthPart + yearPart + &amp;quot;@FORTS&amp;quot;;
                    var code = prefix + &amp;quot;-&amp;quot; + (yearPart) + &amp;quot;.&amp;quot; + (mounth);
                    var security = new Security
                                       {
                                           Id = id,
                                           Code = code,
                                           Name =
                                               &amp;quot;ContinuousSecurity for &amp;quot; + prefix + &amp;quot; expiration in &amp;quot; + mounth + &amp;quot;.&amp;quot; +
                                               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;
        }&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Переход прибит гвоздями на 7-е число. Конечно лучше дату выставлять руками, а это упрощение.&lt;br /&gt;&lt;br /&gt;Работа с таким инструментом идет через те же вызовы, что и обычный Security.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/27387/</id>
    <title type="text">Отвечу сам себе - для создания свечек по непрерывному фьючу (или иному инструменту) необходимо и дос...</title>
    <published>2013-09-11T07:31:33Z</published>
    <updated>2013-09-11T07:31:33Z</updated>
    <author>
      <name>Bond</name>
      <uri>https://stocksharp.com/users/26882/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;VoDA &lt;a href="https://stocksharp.com/posts/m/27386/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;Отвечу сам себе - для создания свечек по непрерывному фьючу (или иному инструменту) необходимо и достаточно сделать ContinuousSecurity. &lt;br /&gt;&lt;br /&gt;ContinuousSecurity хранит свечки в базовых инструментах, что уменьшает расходы на хранение &amp;quot;составных&amp;quot; инструментов (нет дублирования).&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;А как это будет выглядеть в коде?[rolleyes] </content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/27386/</id>
    <title type="text">Отвечу сам себе - для создания свечек по непрерывному фьючу (или иному инструменту) необходимо и дос...</title>
    <published>2013-09-11T07:14:04Z</published>
    <updated>2013-09-11T07:14:04Z</updated>
    <author>
      <name>VoDA</name>
      <uri>https://stocksharp.com/users/27725/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">Отвечу сам себе - для создания свечек по непрерывному фьючу (или иному инструменту) необходимо и достаточно сделать ContinuousSecurity. &lt;br /&gt;&lt;br /&gt;ContinuousSecurity хранит свечки в базовых инструментах, что уменьшает расходы на хранение &amp;quot;составных&amp;quot; инструментов (нет дублирования).</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/27384/</id>
    <title type="text">Вопрос - как программно перенести данные от одного инструмента другому? Сделал простейший код, котор...</title>
    <published>2013-09-11T05:21:24Z</published>
    <updated>2013-09-11T05:21:24Z</updated>
    <author>
      <name>VoDA</name>
      <uri>https://stocksharp.com/users/27725/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">Вопрос - как программно перенести данные от одного инструмента другому?&lt;br /&gt;&lt;br /&gt;Сделал простейший код, который читает тики из инструментов, генерит свечки и складывает под другим именем.&lt;br /&gt;Все бы хорошо, но при сохранении свечек вылетает ошибка &amp;quot;Инструмент для TimeFrameCandle равен RIZ8@FORTS, а должен быть TESTING@FORTS.&amp;quot; TESTING@FORTS это название тестового инструмента.&lt;br /&gt;&lt;br /&gt;PS делается для создания склеенных свечек по фьючу.&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Code&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;
            var timeFrame = TimeSpan.FromMinutes(30);

            var tradesSecurity = new Security
                                     {
                                         Id = &amp;quot;RIZ8@FORTS&amp;quot;,
                                         Name = &amp;quot;RIZ8@FORTS&amp;quot;,
                                         Code = &amp;quot;RIZ8@FORTS&amp;quot;,
                                         MinStepPrice = 1,
                                         MinStepSize = 1,
                                         MinPrice = 1,
                                         MaxPrice = 1000000,
                                         ExchangeBoard = ExchangeBoard.Forts,
                                     };
            var candlesSecurity = new Security
                                      {
                                          Id = &amp;quot;TESTING@FORTS&amp;quot;,
                                          Name = &amp;quot;TESTING@FORTS&amp;quot;,
                                          Code = &amp;quot;TESTING@FORTS&amp;quot;,
                                          MinStepPrice = 1,
                                          MinStepSize = 1,
                                          MinPrice = 1,
                                          MaxPrice = 1000000,
                                          ExchangeBoard = ExchangeBoard.Forts,
                                      };

            var tradesRegistry = new StorageRegistry();
            ((LocalMarketDataDrive) tradesRegistry.DefaultDrive).Path = &amp;quot;some path 1&amp;quot;;
            ((LocalMarketDataDrive) tradesRegistry.DefaultDrive).UseAlphabeticPath = true;

            var candlesRegistry = new StorageRegistry();
            ((LocalMarketDataDrive) candlesRegistry.DefaultDrive).Path = &amp;quot;some path 2&amp;quot;;
            ((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 &amp;gt; 0)
            {
                candlesStorage.Save(candles);
            }&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>