﻿<?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">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-06-15T02:38:58Z</updated>
  <logo>https://stocksharp.com/images/logo.png</logo>
  <link href="https://stocksharp.com/handlers/atom.ashx?category=topic&amp;id=2305" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.com/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.com/users/668/</uri>
      <email>info@stocksharp.com</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.com/posts/m/15585/</id>
    <title type="text">apostar: Михаил, спасибо за ответ. Дело в том что стаканы сохранены в моем собственном формате, про ...</title>
    <published>2012-01-12T13:14:38Z</published>
    <updated>2012-01-12T13:14:38Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.com/users/201/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(15582)" rel="nofollow" target="_blank"&gt;apostar&lt;/a&gt;:&lt;/strong&gt;
Михаил, спасибо за ответ. Дело в том что стаканы сохранены в моем собственном формате, про который S# ничего не знает.
Сохраненные стаканы загружаются и попадают в DumpMarketDepthGenerator как PciCurve curve.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Тогда лучше подменить реализацию IMarketDataStorage&lt;Trade&gt; через ITradingStorage.AddTradeStorage. Тогда вы напрямую сделки будете загружать из вашего хранилища через правильный механизм. Или, что еще правильнее, сохранять стаканы через вашу программу с помощью того же IMarketDataStorage&lt;Trade&gt;&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/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.com/users/668/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Михаил, спасибо за ответ. Дело в том что стаканы сохранены в моем собственном формате, про который S# ничего не знает.
Сохраненные стаканы загружаются и попадают в DumpMarketDepthGenerator как PciCurve curve.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/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.com/users/201/</uri>
      <email>info@stocksharp.com</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.com/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.com/users/668/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Михаил, в этих терминах - генерация.&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-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;/code&gt;&lt;/pre&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/15560/</id>
    <title type="text">apostar: У меня есть стаканы, сохраненные в файл. При тестировании они попадают в EmulationTrader че...</title>
    <published>2012-01-11T15:31:29Z</published>
    <updated>2012-01-11T15:31:29Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.com/users/201/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(15558)" rel="nofollow" target="_blank"&gt;apostar&lt;/a&gt;:&lt;/strong&gt;
У меня есть стаканы, сохраненные в файл. При тестировании они попадают в EmulationTrader через написанный мной MarketDepthGenerator.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Стаканы загружаются автоматически, через EmulationTrader.Storage. Как и сделки. MarketDepthGenerator нужен для генерации стакана. Другими словами, или загрузка из хранилища, или генерация.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/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.com/users/668/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;У меня есть стаканы, сохраненные в файл. При тестировании они попадают в EmulationTrader через написанный мной MarketDepthGenerator.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/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.com/users/201/</uri>
      <email>info@stocksharp.com</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.com/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.com/users/668/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Идея следующая:
Для того чтобы проверить корректность работы робота, есть две одновременно работающих стратегии: одна торговая (trading) и одна (dump quotes) которая записывает стаканы в файл по наступлению события Trader.QuotesChanged. А также есть сторонний софт (testing), который умеет обрабатывать файл созданный dump quotes стратегией и эмулировать работу торговой модели, реализованной в trading.&lt;/p&gt;
&lt;p&gt;Чтобы убедится что trading работает правильно с математической точки зрения, результаты работы testing и trading (который в режиме тестирования работает с EmuationTrader и генераторами стаканов по файлу из dump quotes) должны совпасть.
Поскольку генератор стаканов не может сам сгенерировать стакан в нужное ему время, я беру минимальное разрешение времени с которым может записаться стакан в dump quotes и возвращаю true из MarketDepthGenerator.IsTimeToGenerate в нужные мне моменты времени. Минимальное разрешение времени в моем случае - одна миллисекунда, а с ней EmulationTrader не хочет работать.&lt;/p&gt;
&lt;p&gt;Возможно, Вы уже решали подобные задачи и можете посоветовать альтернативный подход, который был бы более &amp;quot;нативным&amp;quot; для S#.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/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.com/users/2826/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;А действительно ли нужен такой MarketTimeChangedInterval для тестирования?&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/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.com/users/668/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Здравствуйте,&lt;/p&gt;
&lt;p&gt;Имеется следующий код для тестирования стратегии:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;
var emulationTrader = new EmulationTrader(allSecurities, new[] { traderInfo.Portfolio })
	{ 
		MarketTimeChangedInterval = TimeSpan.FromMilliseconds(1),
		WorkingTime = Exchange.Rts.WorkingTime,
		DaysInMemory = 1,
		LoadingThreadCount = 6,
	};

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;При этом если используется&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;MarketTimeChangedInterval = TimeSpan.FromMilliseconds(1)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;то программа зависает после инициализации генераторов трейдов и стаканов, если же используется большее разрешение для MarketTimeChangedInterval, например&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;MarketTimeChangedInterval = TimeSpan.FromSeconds(1)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;то все работает нормально.
Не подскажите, с чем это может быть связано?&lt;/p&gt;
&lt;p&gt;Используется S# 4.0.14&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>