﻿<?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/3293/kak-ustroeno-testirovanie-strategii/</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-04-30T07:13:17Z</updated>
  <logo>https://stocksharp.com/images/logo.png</logo>
  <link href="https://stocksharp.com/handlers/atom.ashx?category=topic&amp;id=3293" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.com/posts/m/23486/</id>
    <title type="text">Эспер, спасибо. То есть получается, что тестеру все таки необходимы стаканы. И иеархия выходит такая...</title>
    <published>2013-01-16T03:50:47Z</published>
    <updated>2013-01-16T03:50:47Z</updated>
    <author>
      <name>esper</name>
      <uri>https://stocksharp.com/users/5990/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;FlashPlayer &lt;a href="https://stocksharp.com/posts/m/23373/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;Эспер, спасибо. То есть получается, что тестеру все таки необходимы стаканы. И иеархия выходит такая: сделки --&amp;gt; стаканы --&amp;gt; ордерлог.&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Не обязательно, тестер может производить эмуляцию и по сделкам. Стаканы могут быть, а могут и эмулироваться по сделкам. Если есть ордерлог, то тогда и сделки и стаканы будут строиться по нему, причем это будут реальные данные.&lt;br /&gt;&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;FlashPlayer &lt;a href="https://stocksharp.com/posts/m/23373/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;Есть тогда еще несколько вопросов:&lt;br /&gt; 1. Вот есть у меня только сделки. Если я не пропишу дополнительно о необходимости генерирования стакана по ним - стратегия никаких данных не получит?&lt;br /&gt; 2. Есть у меня только стаканы. Они имеют периодичность (ну раз в минуту предположим). Что будет, если я эту периодичность отдельно не озвучу. Ее вообще по идее озвучивать не надо? &lt;br /&gt; 3. Если есть ордерлог - автоматом используется он? Никаких доп настроек не надо? Просто видел какую то настройку в примере, при создании тестера, UseMarketDepth вроде. Коммент там стоит - если нужна более точная прогонка по стакану, включите эту настройку. Она меня смутила - что именно она включает?&lt;br /&gt; 4. Если я хочу запустить стратегию не в начале работы тестера, а скажем в определенное время в истории, я должен подписаться на событие обновления времени в тестере - и проверять, когда оно стало таким, каким мне надо - запустить страту?&lt;br /&gt; 5. Очень важный вопрос. Как в тестере реализовано понимание, что прошла моя сделка? В целом, я осознаю, что есть только один единственный способ - если у нас стояла заявка на уровне цены, и лучшие котировки полностью стали выше(или ушли полностью ниже) этого уровеня цены, то вот тогда только считается, что наша заявка исполнена. При таком алгоритме - какой бы ни был объем нашей заявки, он исполняется сразу и весь. Частичного исполнения не бывает. Правильно ли я понимаю, что именно такой алгоритм используется в S#?&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;1. Нет, не получит.&lt;br /&gt;2. Данные просто читаются с той переодичностью, с которой они есть.&lt;br /&gt;3. Нет, для использования ордерлога надо выставить UseOrderLog, для использования стаканов UseMarketDepth. Но, если используется ордерлог, то стаканы и сделки автоматически не используются.&lt;br /&gt;4. Да.&lt;br /&gt;5. То как заявка будет исполнена зависит от многих факторов, таких как тип заявки, настройки эмулятора. Например, если кидается заявка по рынку, то он может собрать несколько строк в стакане и будет несколько сделок.&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/23373/</id>
    <title type="text">Эспер, спасибо. То есть получается, что тестеру все таки необходимы стаканы. И иеархия выходит такая...</title>
    <published>2013-01-14T07:46:17Z</published>
    <updated>2013-01-14T07:46:17Z</updated>
    <author>
      <name>FlashPlayer</name>
      <uri>https://stocksharp.com/users/16669/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">Эспер, спасибо. То есть получается, что тестеру все таки необходимы стаканы. И иеархия выходит такая: сделки --&amp;gt; стаканы --&amp;gt; ордерлог. &lt;br /&gt;&lt;br /&gt;Есть тогда еще несколько вопросов:&lt;br /&gt; 1. Вот есть у меня только сделки. Если я не пропишу дополнительно о необходимости генерирования стакана по ним - стратегия никаких данных не получит?&lt;br /&gt; 2. Есть у меня только стаканы. Они имеют периодичность (ну раз в минуту предположим). Что будет, если я эту периодичность отдельно не озвучу. Ее вообще по идее озвучивать не надо? &lt;br /&gt; 3. Если есть ордерлог - автоматом используется он? Никаких доп настроек не надо? Просто видел какую то настройку в примере, при создании тестера, UseMarketDepth вроде. Коммент там стоит - если нужна более точная прогонка по стакану, включите эту настройку. Она меня смутила - что именно она включает?&lt;br /&gt; 4. Если я хочу запустить стратегию не в начале работы тестера, а скажем в определенное время в истории, я должен подписаться на событие обновления времени в тестере - и проверять, когда оно стало таким, каким мне надо - запустить страту?&lt;br /&gt; 5. Очень важный вопрос. Как в тестере реализовано понимание, что прошла моя сделка? В целом, я осознаю, что есть только один единственный способ - если у нас стояла заявка на уровне цены, и лучшие котировки полностью стали выше(или ушли полностью ниже) этого уровеня цены, то вот тогда только считается, что наша заявка исполнена. При таком алгоритме - какой бы ни был объем нашей заявки, он исполняется сразу и весь. Частичного исполнения не бывает. Правильно ли я понимаю, что именно такой алгоритм используется в S#?&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/23368/</id>
    <title type="text">А теперь, я дополнительно создам стратегию (пусть даже пустую), и в настройках стратегии скажу ей - ...</title>
    <published>2013-01-14T05:07:22Z</published>
    <updated>2013-01-14T05:07:22Z</updated>
    <author>
      <name>esper</name>
      <uri>https://stocksharp.com/users/5990/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;FlashPlayer &lt;a href="https://stocksharp.com/posts/m/23348/" 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;div class="quote"&gt;&lt;span class="quotetitle"&gt;FlashPlayer &lt;a href="https://stocksharp.com/posts/m/23348/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;То есть вопрос больше вот в чем - эмулятор запустить все равно нужно, но важно ли когда я запускаю стратегию? Не получится ли так, что я запускаю стратегию почти одновременно с эмулятором, но чуть позже и она не с старт тайма начинает работать, а с того времени, которое было в эмуляторе на момент запуска стратегии?&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Да, есть разница в том, когда запускать стратегию. Сам запуск стратегии лучше делать либо перед запуском эмулятора, либо у эмулятора есть событие изменения состояния и необходимо запускать стратегии когда он становится Started.&lt;br /&gt;&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;FlashPlayer &lt;a href="https://stocksharp.com/posts/m/23348/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;И еще один вопрос. При тестировании на исторических данных тестер всегда тестирует на стаканах? То есть если я имею из истории - только трейды - он из них постарается сделать стаканы и на них тестировать? Ведь как тестировать на трейдах - непонятно. А если есть ордерлог и трейды - чтобы тестер тестил на стаканах, построенных на ордерлоге, я должен это дополнительно указать - в противном случае он будет стараться строить стаканы по трейдам, так? То есть интересует - как устроены умолчания. Что по умолчанию берется для тестинга - какой тип сохраненной истории.&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Эмулятор использует все доступные данные, причем набор доступных данных определяется для каждого дня истории. Если нет записанных стаканов и необходимо генерировать их по сделкам, то необходимо зарегистрировать TrendMarketDepthGenerator для инструмента и указать UseMarketDepths, если есть записанные стаканы, то просто указать UseMarketDepths. Если для инструмента есть ордерлог, то трейды и стаканы автоматически не используются.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/23348/</id>
    <title type="text">Подскажите пожалуйста такой момент: Предположим, я хочу протестировать какую-то стратегию на историч...</title>
    <published>2013-01-12T22:55:44Z</published>
    <updated>2013-01-12T22:59:05Z</updated>
    <author>
      <name>FlashPlayer</name>
      <uri>https://stocksharp.com/users/16669/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">Подскажите пожалуйста такой момент:&lt;br /&gt;&lt;br /&gt;Предположим, я хочу протестировать какую-то стратегию на исторических данных. Создаю эмулятор трейдер, подсасываюсь к сохраненной истории. Запускаю эмулятор трейдер. Если просто его запустить - он пробежится от старт тайма до стоп тайма, отреагировав на все подписанные события (сделки, заявки итп итд) ну и остановится. А теперь, я дополнительно создам стратегию (пусть даже пустую), и в настройках стратегии скажу ей - используй этот же эмулятор трейдер. Запускаю стратегию. Что в этот момент технически происходит? В дополнительном потоке заново запускается эмулятор трейдер от времени старта до стопа, но теперь исполняя стратегию? То есть вопрос больше вот в чем - эмулятор запустить все равно нужно, но важно ли когда я запускаю стратегию? Не получится ли так, что я запускаю стратегию почти одновременно с эмулятором, но чуть позже и она не с старт тайма начинает работать, а с того времени, которое было в эмуляторе на момент запуска стратегии? &lt;br /&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>
</feed>