﻿<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type='text/css' href='https://stocksharp.ru/css/style.css'?>
<?xml-stylesheet type='text/css' href='https://stocksharp.ru/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-06-21T14:25:46Z</updated>
  <logo>https://stocksharp.ru/images/logo.png</logo>
  <link href="https://stocksharp.ru/handlers/atom.ashx?category=topic&amp;id=3974" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.ru/posts/m/27446/</id>
    <title type="text">Bond: Я уже несколько недель достаю разработчиков, прошу склейку в Гидре подремонтировать. Обычные д...</title>
    <published>2013-09-13T05:18:01Z</published>
    <updated>2013-09-13T05:18:01Z</updated>
    <author>
      <name>VoDA</name>
      <uri>https://stocksharp.ru/users/27725/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(27394)" rel="nofollow" target="_blank"&gt;Bond&lt;/a&gt;:&lt;/strong&gt;
Я уже несколько недель достаю разработчиков, прошу склейку в Гидре подремонтировать. Обычные данные и склеенные фьючерсы со свечами с Финама уже выложил в общий доступ на Яндекс диске. Как сделаю с правильными днями экспирации, тоже постараюсь выложить [wink]&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;А еще лучше код для создания Cont Security или таблица где выписаны называния и даты переходов между фьючами. Это намного полезнее ;)&lt;/p&gt;
&lt;p&gt;Данные у всех одинаковые, так что гонять их между компами необходимости мало. А вот результат (свечки/стратегии/etc) и места занимает меньше и полезнее =)&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/27445/</id>
    <title type="text">Bond: Я уже несколько недель достаю разработчиков, прошу склейку в Гидре подремонтировать. Обычные д...</title>
    <published>2013-09-13T05:11:12Z</published>
    <updated>2013-09-13T05:11:12Z</updated>
    <author>
      <name>VoDA</name>
      <uri>https://stocksharp.ru/users/27725/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(27394)" rel="nofollow" target="_blank"&gt;Bond&lt;/a&gt;:&lt;/strong&gt;
Я уже несколько недель достаю разработчиков, прошу склейку в Гидре подремонтировать. Обычные данные и склеенные фьючерсы со свечами с Финама уже выложил в общий доступ на Яндекс диске. Как сделаю с правильными днями экспирации, тоже постараюсь выложить [wink]&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Тогда лучше отдельно свечки выложи. У свечек размер сильно меньше и качать проще ;)&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/27394/</id>
    <title type="text">VoDA: Bond: Спасибо за код! Интересно получилось. Вот только как ни крути лучше ручками даты выставл...</title>
    <published>2013-09-11T11:47:32Z</published>
    <updated>2013-09-11T11:47:32Z</updated>
    <author>
      <name>Bond</name>
      <uri>https://stocksharp.ru/users/26882/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(27393)" rel="nofollow" target="_blank"&gt;VoDA&lt;/a&gt;:&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(27391)" rel="nofollow" target="_blank"&gt;Bond&lt;/a&gt;:&lt;/strong&gt;
Спасибо за код! Интересно получилось. Вот только как ни крути лучше ручками даты выставлять. К тому же, я пришел к выводу, что лучше склеивать за день до экспирации. И в день экспирации уже работать с новым инструментом. Тогда тесты получатся более реальными.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;зависит от задачи ;)&lt;/p&gt;
&lt;p&gt;сделаешь руками - выкладывай на сайт :)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Я уже несколько недель достаю разработчиков, прошу склейку в Гидре подремонтировать. Обычные данные и склеенные фьючерсы со свечами с Финама уже выложил в общий доступ на Яндекс диске. Как сделаю с правильными днями экспирации, тоже постараюсь выложить [wink]&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/27393/</id>
    <title type="text">Bond: Спасибо за код! Интересно получилось. Вот только как ни крути лучше ручками даты выставлять. К...</title>
    <published>2013-09-11T10:39:26Z</published>
    <updated>2013-09-11T10:39:26Z</updated>
    <author>
      <name>VoDA</name>
      <uri>https://stocksharp.ru/users/27725/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(27391)" rel="nofollow" target="_blank"&gt;Bond&lt;/a&gt;:&lt;/strong&gt;
Спасибо за код! Интересно получилось. Вот только как ни крути лучше ручками даты выставлять. К тому же, я пришел к выводу, что лучше склеивать за день до экспирации. И в день экспирации уже работать с новым инструментом. Тогда тесты получатся более реальными.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;зависит от задачи ;)&lt;/p&gt;
&lt;p&gt;сделаешь руками - выкладывай на сайт :)&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/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.ru/users/26882/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Спасибо за код! Интересно получилось. Вот только как ни крути лучше ручками даты выставлять. К тому же, я пришел к выводу, что лучше склеивать за день до экспирации. И в день экспирации уже работать с новым инструментом. Тогда тесты получатся более реальными.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/27390/</id>
    <title type="text">Bond: А как это будет выглядеть в коде?[rolleyes] Я создаю континиус через цикл: private static read...</title>
    <published>2013-09-11T08:53:02Z</published>
    <updated>2013-09-11T08:53:02Z</updated>
    <author>
      <name>VoDA</name>
      <uri>https://stocksharp.ru/users/27725/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(27387)" rel="nofollow" target="_blank"&gt;Bond&lt;/a&gt;:&lt;/strong&gt;
А как это будет выглядеть в коде?[rolleyes]&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Я создаю континиус через цикл:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-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;/code&gt;&lt;/pre&gt;
&lt;p&gt;Переход прибит гвоздями на 7-е число. Конечно лучше дату выставлять руками, а это упрощение.&lt;/p&gt;
&lt;p&gt;Работа с таким инструментом идет через те же вызовы, что и обычный Security.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/27387/</id>
    <title type="text">VoDA: Отвечу сам себе - для создания свечек по непрерывному фьючу (или иному инструменту) необходимо...</title>
    <published>2013-09-11T07:31:33Z</published>
    <updated>2013-09-11T07:31:33Z</updated>
    <author>
      <name>Bond</name>
      <uri>https://stocksharp.ru/users/26882/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(27386)" rel="nofollow" target="_blank"&gt;VoDA&lt;/a&gt;:&lt;/strong&gt;
Отвечу сам себе - для создания свечек по непрерывному фьючу (или иному инструменту) необходимо и достаточно сделать ContinuousSecurity.&lt;/p&gt;
&lt;p&gt;ContinuousSecurity хранит свечки в базовых инструментах, что уменьшает расходы на хранение &amp;quot;составных&amp;quot; инструментов (нет дублирования).&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;А как это будет выглядеть в коде?[rolleyes]&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/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.ru/users/27725/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Отвечу сам себе - для создания свечек по непрерывному фьючу (или иному инструменту) необходимо и достаточно сделать ContinuousSecurity.&lt;/p&gt;
&lt;p&gt;ContinuousSecurity хранит свечки в базовых инструментах, что уменьшает расходы на хранение &amp;quot;составных&amp;quot; инструментов (нет дублирования).&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/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.ru/users/27725/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Вопрос - как программно перенести данные от одного инструмента другому?&lt;/p&gt;
&lt;p&gt;Сделал простейший код, который читает тики из инструментов, генерит свечки и складывает под другим именем.
Все бы хорошо, но при сохранении свечек вылетает ошибка &amp;quot;Инструмент для TimeFrameCandle равен RIZ8@FORTS, а должен быть TESTING@FORTS.&amp;quot; TESTING@FORTS это название тестового инструмента.&lt;/p&gt;
&lt;p&gt;PS делается для создания склеенных свечек по фьючу.&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-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;/code&gt;&lt;/pre&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>