﻿<?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">EmulationTrader и MarketTimeChangedInterval в одну миллисекунду.</title>
  <id>~/topic/2305/emulationtrader-i-markettimechangedinterval-v-odnu-millisekundu_/</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-05-02T12:47:50Z</updated>
  <logo>https://stocksharp.ru/images/logo.png</logo>
  <link href="https://stocksharp.ru/handlers/atom.ashx?category=topic&amp;id=2305" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.ru/posts/m/15587/</id>
    <title type="text">Михаил, спасибо большое, попробую и отпишусь в этой ветке о результатах - вдруг кому-то еще пригодит...</title>
    <published>2012-01-12T15:08:22Z</published>
    <updated>2012-01-12T15:08:22Z</updated>
    <author>
      <name>apostar</name>
      <uri>https://stocksharp.ru/users/668/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">Михаил, спасибо большое, попробую и отпишусь в этой ветке о результатах - вдруг кому-то еще пригодится эта информация.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/15585/</id>
    <title type="text">Михаил, спасибо за ответ. Дело в том что стаканы сохранены в моем собственном формате, про который S...</title>
    <published>2012-01-12T13:14:38Z</published>
    <updated>2012-01-12T13:14:38Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.ru/users/201/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;apostar &lt;a href="https://stocksharp.ru/posts/m/15582/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;Михаил, спасибо за ответ. Дело в том что стаканы сохранены в моем собственном формате, про который S# ничего не знает.&lt;br /&gt;Сохраненные стаканы загружаются и попадают в DumpMarketDepthGenerator как PciCurve curve.&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Тогда лучше подменить реализацию IMarketDataStorage&amp;lt;Trade&amp;gt; через ITradingStorage.AddTradeStorage. Тогда вы напрямую сделки будете загружать из вашего хранилища через правильный механизм. Или, что еще правильнее, сохранять стаканы через вашу программу с помощью того же IMarketDataStorage&amp;lt;Trade&amp;gt;</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/15582/</id>
    <title type="text">Михаил, спасибо за ответ. Дело в том что стаканы сохранены в моем собственном формате, про который S...</title>
    <published>2012-01-12T11:52:56Z</published>
    <updated>2012-01-12T11:52:56Z</updated>
    <author>
      <name>apostar</name>
      <uri>https://stocksharp.ru/users/668/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">Михаил, спасибо за ответ. Дело в том что стаканы сохранены в моем собственном формате, про который S# ничего не знает.&lt;br /&gt;Сохраненные стаканы загружаются и попадают в DumpMarketDepthGenerator как PciCurve curve.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/15581/</id>
    <title type="text">Все правильно. Но если стаканы уже сохранены, генерировать их не нужно. И нет необходимости писать г...</title>
    <published>2012-01-12T11:28:59Z</published>
    <updated>2012-01-12T11:28:59Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.ru/users/201/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">Все правильно. Но если стаканы уже сохранены, генерировать их не нужно. И нет необходимости писать генератор свой.&lt;br /&gt;</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/15574/</id>
    <title type="text">Михаил, в этих терминах - генерация. /// /// Market depth generator based on dump file. /// public s...</title>
    <published>2012-01-12T04:18:55Z</published>
    <updated>2012-01-12T04:18:55Z</updated>
    <author>
      <name>apostar</name>
      <uri>https://stocksharp.ru/users/668/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">Михаил, в этих терминах - генерация.&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;

    /// &amp;lt;summary&amp;gt;
    /// Market depth generator based on dump file.
    /// &amp;lt;/summary&amp;gt;
    public sealed class DumpMarketDepthGenerator : MarketDepthGenerator
    {
        /// &amp;lt;summary&amp;gt;
        /// The piecewise constant interpolation curve.
        /// &amp;lt;/summary&amp;gt;
        private readonly PciCurve curve;

        /// &amp;lt;summary&amp;gt;
        /// Сгенерировать маркет-данные.
        /// &amp;lt;/summary&amp;gt;
        /// &amp;lt;param name=&amp;quot;data&amp;quot;&amp;gt;Маркет-данные.&amp;lt;/param&amp;gt;&amp;lt;param name=&amp;quot;time&amp;quot;&amp;gt;Текущее время.&amp;lt;/param&amp;gt;
        public override void Generate(MarketDepth data, DateTime time)
        {
            .......
        }
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/15560/</id>
    <title type="text">У меня есть стаканы, сохраненные в файл. При тестировании они попадают в EmulationTrader через напис...</title>
    <published>2012-01-11T15:31:29Z</published>
    <updated>2012-01-11T15:31:29Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.ru/users/201/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;apostar &lt;a href="https://stocksharp.ru/posts/m/15558/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;У меня есть стаканы, сохраненные в файл. При тестировании они попадают в EmulationTrader через написанный мной MarketDepthGenerator.&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Стаканы загружаются автоматически, через EmulationTrader.Storage. Как и сделки. MarketDepthGenerator нужен для генерации стакана. Другими словами, или загрузка из хранилища, или генерация.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/15558/</id>
    <title type="text">У меня есть стаканы, сохраненные в файл. При тестировании они попадают в EmulationTrader через напис...</title>
    <published>2012-01-11T14:07:10Z</published>
    <updated>2012-01-11T14:07:10Z</updated>
    <author>
      <name>apostar</name>
      <uri>https://stocksharp.ru/users/668/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">У меня есть стаканы, сохраненные в файл. При тестировании они попадают в EmulationTrader через написанный мной MarketDepthGenerator.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/15556/</id>
    <title type="text">Неясен один момент. У вас есть стаканы и вы по ним тестируете или же стаканов нет и вы их эмулируете...</title>
    <published>2012-01-11T13:32:14Z</published>
    <updated>2012-01-11T13:32:14Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.ru/users/201/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">Неясен один момент. У вас есть стаканы и вы по ним тестируете или же стаканов нет и вы их эмулируете?</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/15538/</id>
    <title type="text">Идея следующая: Для того чтобы проверить корректность работы робота, есть две одновременно работающи...</title>
    <published>2012-01-11T05:30:53Z</published>
    <updated>2012-01-11T05:30:53Z</updated>
    <author>
      <name>apostar</name>
      <uri>https://stocksharp.ru/users/668/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">Идея следующая: &lt;br /&gt;Для того чтобы проверить корректность работы робота, есть две одновременно работающих стратегии: одна торговая (trading) и одна (dump quotes) которая записывает стаканы в файл по наступлению события Trader.QuotesChanged. А также есть сторонний софт (testing), который умеет обрабатывать файл созданный dump quotes стратегией и эмулировать работу торговой модели, реализованной в trading.&lt;br /&gt;&lt;br /&gt;Чтобы убедится что trading работает правильно с математической точки зрения, результаты работы testing и trading (который в режиме тестирования работает с EmuationTrader и генераторами стаканов по файлу из dump quotes) должны совпасть.&lt;br /&gt;Поскольку генератор стаканов не может сам сгенерировать стакан в нужное ему время, я беру минимальное разрешение времени с которым может записаться стакан в dump quotes и возвращаю true из MarketDepthGenerator.IsTimeToGenerate в нужные мне моменты времени. Минимальное разрешение времени в моем случае - одна миллисекунда, а с ней EmulationTrader не хочет работать.&lt;br /&gt;&lt;br /&gt;Возможно, Вы уже решали подобные задачи и можете посоветовать альтернативный подход, который был бы более &amp;quot;нативным&amp;quot; для S#.&lt;br /&gt;</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/15530/</id>
    <title type="text">А действительно ли нужен такой MarketTimeChangedInterval для тестирования?</title>
    <published>2012-01-10T15:11:28Z</published>
    <updated>2012-01-10T15:11:28Z</updated>
    <author>
      <name>Alexander</name>
      <uri>https://stocksharp.ru/users/2826/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">А действительно ли нужен такой MarketTimeChangedInterval для тестирования?</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/15529/</id>
    <title type="text">Здравствуйте, Имеется следующий код для тестирования стратегии: var emulationTrader = new EmulationT...</title>
    <published>2012-01-10T13:36:13Z</published>
    <updated>2012-01-10T13:37:32Z</updated>
    <author>
      <name>apostar</name>
      <uri>https://stocksharp.ru/users/668/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">Здравствуйте,&lt;br /&gt;&lt;br /&gt;Имеется следующий код для тестирования стратегии:&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;

var emulationTrader = new EmulationTrader(allSecurities, new[] { traderInfo.Portfolio })
	{ 
		MarketTimeChangedInterval = TimeSpan.FromMilliseconds(1),
		WorkingTime = Exchange.Rts.WorkingTime,
		DaysInMemory = 1,
		LoadingThreadCount = 6,
	};
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;При этом если используется&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;
MarketTimeChangedInterval = TimeSpan.FromMilliseconds(1)&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;то программа зависает после инициализации генераторов трейдов и стаканов, если же используется большее разрешение для MarketTimeChangedInterval, например&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;
MarketTimeChangedInterval = TimeSpan.FromSeconds(1)&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;то все работает нормально.&lt;br /&gt;Не подскажите, с чем это может быть связано?&lt;br /&gt;&lt;br /&gt;Используется S# 4.0.14</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>