﻿<?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">order log. StockSharp</title>
  <id>https://stocksharp.ru/handlers/atom.ashx?category=tag&amp;id=order log&amp;type=community</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-04-06T08:09:57Z</updated>
  <logo>https://stocksharp.ru/images/logo.png</logo>
  <link href="https://stocksharp.ru/handlers/atom.ashx?category=tag&amp;id=order log&amp;type=community" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.ru/topic/315/</id>
    <title type="text">Один день из жизни Ri. Или введение в микроструктурный анализ</title>
    <published>2013-10-10T11:26:28Z</published>
    <updated>2013-10-10T11:30:44Z</updated>
    <author>
      <name>vlad1024</name>
      <uri>https://stocksharp.ru/users/768/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="данные" />
    <category term="Ri" />
    <category term="Order log" />
    <category term="Статьи" />
    <content type="html">Для большинства трейдеров свечные графики различного таймфрейма это и есть рынок, там скрывается все - и тренд и боковик и хитрый маркет мэйкер с глобальным кукловодом. Начнем с простых фактов, за одну сессию 2012.11.07 на фьючерсе Ri ядро биржи обработало 10 449 043 транзакций или примерно 12 000 транзакций в минуту, одна свечка самого &amp;quot;высоко частотного&amp;quot; минутного таймфрема скрывает за собой огромное количество более элементарных действий. Поэтому мы спустимся на самый низкий уровень того, что происходит на бирже и начнем оттуда. &lt;br /&gt;&lt;br /&gt;Можно долго рассказывать про то как устроена биржа, про промежуточные сервера и другие части &amp;quot;транспортной&amp;quot; инфракстуры, какие задержки они вносят при путешествии заявки, но в конце пути любая заявка попадает в ядро биржие, где непосредственно происходит то ради чего все собственно и затевалось - сведение(matching). И на этом уровне, в смысле формата данных и производимых элементарных действий, FORTS мало чем отличается от той же CME или любой другой современной биржи. Входной поток состоит из заявко двух типов, на вставку(insert) и отмену(cancel). Бьете вы по рынку или выставляете заявку в глубь стакана - для ядра нет разницы, все это в конечном итоге преобразуется в заявку на вставку, которой присваивается свой уникальный идентификатор. Другой тип заявок - на отмену, позволяет убрать часть(или всю) предшествующей заявки на вставку. Ядро принимая на входе поток состоящий из заявок на вставку и отмену, создает поток сведенных сделок, каждая сведенная сделка связана с двумя заявками участвующих в сделке. Исходя из полученного потока, затем строятся стаканы, и тиковые данные(сведенные сделки), которые рассылаются пользователям(к примеру на RTS срезы стаканов строятся с периодичностью 30 миллисекунд), и лишь затем тики преобразуются в красивые свечки, отображаемые на экране. Поток данных содержащий заявки на вставку, отмену и сведенные сделки, на FORTS называется Full Order Log. &lt;br /&gt;&lt;br /&gt;Рассмотрим более подробно формат данных Full Order Log. Возьмем для примера маленький, кусочек:&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:cpp"&gt;
 QUOTE  TYPE    TIMESTAMP      SESSION    ORDER_ID  STATUS ACTION PRICE  VOL  DEAL_ID DEAL_PRICE
[&amp;#39;riz2&amp;#39;,  1, 1352315357375000, 20121107, 9368447574, 101401, 1, 141870.0, 1,,]
[&amp;#39;riz2&amp;#39;, -1, 1352315357380000, 20121107, 9368447558, 100001, 0, 141900.0, 3,,]
[&amp;#39;riz2&amp;#39;, -1, 1352315357380000, 20121107, 9368447580, 101401, 1, 141890.0, 3,,]
[&amp;#39;riz2&amp;#39;, -1, 1352315357381000, 20121107, 9368447559, 100001, 0, 141890.0, 2,,]
[&amp;#39;riz2&amp;#39;, -1, 1352315357381000, 20121107, 9368447581, 101401, 1, 141880.0, 2,,]
[&amp;#39;riz2&amp;#39;,  1, 1352315357381000, 20121107, 9368447507, 100001, 0, 141840.0, 4,,]
[&amp;#39;riz2&amp;#39;,  1, 1352315357381000, 20121107, 9368447582, 101401, 1, 141860.0, 4,,]
[&amp;#39;riz2&amp;#39;,  1, 1352315357384000, 20121107, 9368447522, 100001, 0, 141850.0, 8,,]
[&amp;#39;riz2&amp;#39;,  1, 1352315357384000, 20121107, 9368447586, 101401, 1, 141860.0, 8,,] &amp;lt;- A
[&amp;#39;riz2&amp;#39;,  1, 1352315357386000, 20121107, 9368447255, 201401, 0, 141850.0, 2,,]
           .... 
[&amp;#39;riz2&amp;#39;, 1, 1352315358149000, 20121107, 9368447396,      1, 2, 141860.0, 2, 657525271, 141860.0]
[&amp;#39;riz2&amp;#39;, 1, 1352315358149000, 20121107, 9368447454,      1, 2, 141860.0, 2, 657525272, 141860.0]
[&amp;#39;riz2&amp;#39;, 1, 1352315358149000, 20121107, 9368447586,      1, 2, 141860.0, 1, 657525273, 141860.0] &amp;lt;- B
[&amp;#39;riz2&amp;#39;,-1, 1352315358149000, 20121107, 9368447766,    402, 1, 134840.0, 5, ,,] &amp;lt;- C
[&amp;#39;riz2&amp;#39;,-1, 1352315358149000, 20121107, 9368447766,      2, 2, 134840.0, 2, 657525271, 141860.0]
[&amp;#39;riz2&amp;#39;,-1, 1352315358149000, 20121107, 9368447766,      2, 2, 134840.0, 2, 657525272, 141860.0]
[&amp;#39;riz2&amp;#39;,-1, 1352315358149000, 20121107, 9368447766,   1002, 2, 134840.0, 1, 657525273, 141860.0] &amp;lt;- D
[&amp;#39;riz2&amp;#39;, 1, 1352315358189000, 20121107, 9368447761, 100001, 0, 141840.0, 4, ,,]
[&amp;#39;riz2&amp;#39;, 1, 1352315358189000, 20121107, 9368447770, 101401, 1, 141860.0, 4, ,,]
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;QUOTE - содержит название инструмента, TYPE - направление заявки (+1 - bid, -1 - ask), TIMESTAMP - временная метка в микросекундах, SESSION - идентификатор сессии, ORDER_ID - идентификатор заявки, STATUS - флаги заявки, ACTION - тип заявки (0 - отмена, 1 - вставка, 2 - сведенная сделка), PRICE - цена, VOL - объем заявки, DEAL_ID - идентификатор сделки, DEAL_PRICE - цена сделки. &lt;br /&gt;На примере выше показан цикл жизни заявки, вставка заявки c идентификатором 9368447586 в поток (A), вставка встречно заявки (C), первая сторона сведенной сделки (B) и вторая сторона (D).&lt;br /&gt;&lt;br /&gt;Теперь, немного разобравшись в формате данных, можно приступить к статистическому анализу. Всего за сессию было произведено 10 449 043 транзакций, из них 4 990 732 на вставку, и 4 362 829 на отмену, а сведено сделок - 1 095 482. То есть &amp;quot;в среднем по больнице&amp;quot; на каждую сделку приходилось 4 перестановки. Следующий вопрос, который возникает - каким образом данная активность распределена по объемам. Для этого посчитаем следующие факторы - количестов вставок и отмен для заданного объема, отношение отмененых заявок к выставленным, чем меньше это соотношение тем больше количество сделок сведено на каждую вставленную заявку, тогда умножив соотношение на количество вставленных заявок, мы получим количество проторгованных заявок для данного объема заявки. В результате получим следующую табличку, отсортированную по столбцу проторгованного объема(для анализа использовался python + scipy):&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:cpp"&gt;
   cancel_count  cancel_volume  insert_count  insert_volume     ratio    trade_volume  
        1176407              1       1452121              1  0.810130      275714  
         272998              5        327113              5  0.834568      270575  
        1257775              2       1369794              2  0.918222      224038  
          39698             10         55877             10  0.710453      161790  
         432361              4        470513              4  0.918914      152608  
         668395              3        718625              3  0.930103      150690  
          15002             20         20662             20  0.726067      113200  
           1455             50          3608             50  0.403271      107650  
            453            100          1404            100  0.322650       95100  
         201295              8        212359              8  0.947900       88512  
          21651             15         27185             15  0.796432       83010   
          99168              6        110608              6  0.896572       68640  
           1989             30          4107             30  0.484295       63540  
           4926             25          7438             25  0.662275       62800  
           1025            200          1310            200  0.782443       57000  
          37216             12         41715             12  0.892149       53988  
             68            500           172            500  0.395349       52000  
          17857              7         25274              7  0.706536       51919  &lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;cancel_volume, insert_volume - объем в заявке на вставку или отмену, cancel_count - количество отмен, insert_count - количество вставок, ratio - соотношение, trade_volume - оценка проторгованного объема в контрактах. &lt;br /&gt;          &lt;br /&gt;Как видно, объемы заявок на вставку, можно условно разделить на две группы, small-volume traders с диапазоном объема 1-10 - высокочастотные трейдеры и скальперы, и всех остальных, как видно во второй группе, значения проторгованного объема кучкуются вокруг &amp;quot;психологических&amp;quot; уровней заявок - 15, 20, 25, 30, 50, 100, 200, 500.&lt;br /&gt;&lt;br /&gt;&lt;a target="_blank" rel="nofollow" href="https://stocksharp.ru/away/?u=AQAAAAAAAACGbKb4OGqyVRvP33DJbGKgV8JAcGjEFb2CD5EV31L_kA" title="http://pastebin.com/ZBqyiY0n"&gt;код на питоне&lt;/a&gt;&lt;br /&gt;Продолжение следует... </content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/331/</id>
    <title type="text">Спасти скальпера или тестирование на Full Orders Log</title>
    <published>2013-07-18T17:02:51Z</published>
    <updated>2013-07-18T17:07:33Z</updated>
    <author>
      <name>Николай_Флёров</name>
      <uri>https://stocksharp.ru/users/6456/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Торговые роботы" />
    <category term="S#.Data" />
    <category term="тестирование" />
    <category term="Скальпинг" />
    <category term="Order log" />
    <category term="Статьи" />
    <content type="html">&lt;span style="font-size:120%"&gt;&lt;b&gt;Спасти скальпера или тестирование на Full Orders Log.&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://stocksharp.com/forum/yaf_postst3617_Skal-pingh.aspx" title="http://stocksharp.com/forum/yaf_postst3617_Skal-pingh.aspx"&gt;Скальпинг&lt;/a&gt; - это стратегия, подразумевающая быстрый вход на импульсе, снятие прибыли(скальпа трендового движения) и выход, до момента возврата цены к средней.&lt;br /&gt;&lt;br /&gt;Инструментами рядового скальпера являются стакан, скальперский привод, а также (поводыри) западные индексы и природные ресурсы от которых зачастую зависят цены базового актива, и в следствии цены на фьючерсы, которыми скальперы и торгую. Это знают все.&lt;br /&gt;У меня есть свое мнение на эту тему, так как лично я и сам торговал в пропе.&lt;br /&gt;Инструментами правильного скальпера должны стать не привод и не поводыри, они пригодятся - это само собой, но главным объектом внимания, любого трейдера должны стать не графики, или приводы - а исследования рынка.&lt;br /&gt;&lt;br /&gt;Обратите внимание на засилье различных курсов по скальпингу в последнее время. Такие курсы зачастую предоставляют помимо базовых принципов, стартегии, которые уже не работают, или перестанут работать в ближайшее время, потому что на таких маленьких таймфреймах - рынок меняется намного быстрее, чем, например на часовках. А самые безбашенные авторы и вообще не проводили никаких изысканий в этой области.&lt;br /&gt;&lt;br /&gt;Я призываю трейдеров, которые собираются пройти один из таких курсов, какие бы копейки он не стоил - &amp;quot;научиться ловить рыбу самим&amp;quot; вместо того, чтобы брать ее непонятно у кого и непонятно какого качества!&lt;br /&gt;&lt;br /&gt;Но, ближе к делу! &lt;br /&gt;&lt;br /&gt;Каким инструментарием может пользоваться новоявленный исследователь:&lt;br /&gt;&lt;a href='https://stocksharp.ru/file/102588/0_b4972_654256c2_XL.png' class='lightview' data-lightview-options="skin: 'mac'" data-lightview-group='mixed'&gt;&lt;img src="https://stocksharp.ru/file/102588/0_b4972_654256c2_XL.png?size=800x800" alt="Инструменты для исследовательской работы" title="Инструменты для исследовательской работы" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Excel&lt;/b&gt; - это очень полезная программа и я лично ей пользуюсь, но исключительно, как дополнение к более продвинутому софту. Я знал людей, которые пробовали даже тестировать стратегии в Excel.. Мое мнение - это не серьезно, не понимаю, как в нем можно протестировать какую-то стратегию, но как помощник - самое то!&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Мат-lab &lt;/b&gt;- это профессиональный инструмент математиков, как и excel он платен , но лицензия на него стоит не дешево. На нем можно тестировать все что угодно, были бы данные. И стратегии на индикаторах и мани-менеджмент. Однако из-за его дороговизны, необходимости изучать еще один язык программирования и нужды прописывать все что уже и так есть в системах для тестирования стратегий, считаю такие усилия неоправданными. Лично я использую его, когда не хватает функционала у Excel, для расчетов.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Wealth&lt;/b&gt; и подобные программы, специально созданные для тестирования стратегий. &lt;br /&gt;Я пробовал тестировать тиковые стратегии. Мне есть что написать по этому поводу:&lt;br /&gt;- Тики можно сжать до любых свечек, 2-10 или 47 секундных. Здесь мы уже можем подсчитать проскальзывание и комиссию. Проблема в том, что такого медленного тестирования вам не захочется. Когда программа сжимает тики и без того медленное тестирование превращается в 5-ти дневное ожидание, когда за час до окончания теста у Вас или перегревается компьютер, или один маленький перепад напряжения и все тесты насмарку, а они ведь могут оказаться и отрицательными!&lt;br /&gt;- Часто наши любимые, в иных случаях программы, Wealth-lab и т.д., начинают тормозить и подвисать. Конечно, вам нужны достаточно хороший компьютер, но я говорю про ситуации даже когда у Вас больше 16GB оперативной памяти.&lt;br /&gt;- Это все еще тестирование на свечках. Это значит, что мы не видим стакан. А для скальпера - это критично! &lt;br /&gt;Программа не видит, как &amp;quot;живет&amp;quot; рынок. И это еще одна причина по которой скептики отказываются от исследований.&lt;br /&gt;- Тиковых данных по  фьючерсу на индекс РТС когда я его тестировал, в блокнот у меня помещалось только 3 месяца сделок. Их нужно было скачать по одному дню(только так,  по-другому никак ее было скачать нельзя ), затем самостоятельно склеить.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;StockSharp&lt;/b&gt; -  я узнал об этом способе проведения исследований от человека, которые предоставлял такие курсы по скальпингу, про которые я писал в начале. Оказалось, что он тестирует скальперские стратегии в StockSharp, но не на свечках а на ордер логе. &lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;	&lt;em&gt;    &lt;em&gt;&lt;a href="http://stocksharp.com/forum/yaf_postst1771_Torghovyie-roboty--Full-Orders-Log.aspx" title="http://stocksharp.com/forum/yaf_postst1771_Torghovyie-roboty--Full-Orders-Log.aspx"&gt;Full orders log&lt;/a&gt; — это список всех заявок с полной информацией по каждой заявке. Еще его называют анонимным ордер логом (анонимная рыночная информация), т.к. из всей информации о заявке в нем не доступен только номер счета клиента, пославшую эту заявку. Как вы понимаете, эта информация конфиденциальна. Ордер лог, это самый глубокий и детальный уровень информации, который доступен трейдеру.&lt;br /&gt;&lt;/em&gt;&lt;/em&gt;	Источник &amp;lt;&lt;a target="_blank" rel="nofollow" href="https://stocksharp.ru/away/?u=AQAAAAAAAABxFPEHo8XF-9D_Xl4-u5Hl6Kz2znQjSyDNMuqcwl7psJdkmAgMsbRdfmszvckDEIrBO1IdZlsPEcCXYo1SGWSz" title="http://robostroy.ru/community/Article.aspx?id=319"&gt;http://robostroy.ru/community/Article.aspx?id=319&lt;/a&gt;&amp;gt; &lt;br /&gt;&lt;br /&gt;Тестирование на ордер логе, тоже не является панацеей, рынок все также меняется, а тестирование все такое же медленное. Но ничего лучше еще не придумали, здесь мы получаем всю полноту информации,  тестирование на стакане, а стакан для скальпера - самое важное.&lt;br /&gt;&lt;br /&gt;Также, пользуясь инструментарием  StockSharp можно скачать ордер лог, или тиковые данные и уже из них создать свечки любого тайм-фрейма! Для чего нам это нужно?&lt;br /&gt;&lt;br /&gt;Когда нам не приходится сжимать тики в 10-ти секундные свечки в самом &lt;a href="http://stocksharp.com/forum/yaf_topics62_Voprosy-otviety-Wealth-Lab.aspx" title="http://stocksharp.com/forum/yaf_topics62_Voprosy-otviety-Wealth-Lab.aspx"&gt;Wealth-lab&lt;/a&gt; - тестирование проходит намного быстрее и сама программа &amp;quot;чувствует&amp;quot; себя лучше, не тормозит и не зависает. Поэтому кому не нужно супер точное тестирование - этот вариант для вас! Главное уделять внимание исследовательской работе и ваши результаты улучшаться!&lt;br /&gt;&lt;br /&gt;&lt;a href='https://stocksharp.ru/file/102580/0_b496a_83fbf5e2_XL.png' class='lightview' data-lightview-options="skin: 'mac'" data-lightview-group='mixed'&gt;&lt;img src="https://stocksharp.ru/file/102580/0_b496a_83fbf5e2_XL.png?size=800x800" alt="Ресурсы для проведения исследования" title="Ресурсы для проведения исследования" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:120%"&gt;&lt;b&gt;Качественные данные.&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Есть 2 новости хорошая и плохая. Плохая - то что скорее всего данные ордер лога вам найти не удастся. Качественные данные можно, конечно купить напрямую у RTS - но это будет неоправданно дорого.Хорошая новость заключается в том, что для тестирования скальперских стратегий много истории не нужно. подключение плаза - это обязательное условие скальпинга, так что считаем, что оно у нас есть по определению. Так что, ничего нам не мешает записать ордер лог с плазы. Особенно радует тот факт, что к плазе можно подключить одновременно и программу для записи ордер лога и скальперский привод. Так что можем и торговать и записывать данные одновременно. Софт для записи называется S#.Data.&lt;br /&gt;&lt;br /&gt;Единственным его назначением является записывать данные сохранять их в специальном формате и преобразовывать одни данные в другие. Благодаря ему, из ордер лога можно вытащить и стаканы и тиковые данные, из тиковых данных можно сделать свечки любого таймфрейма. Ордер лог - самый полный пакет данных, поэтому кроме как записью с плазы получить синтезировать его никак нельзя.&lt;br /&gt;Также, можно записать сделки и стаканы с обычного Quik, но они будут рассинхронизированы, а для скальперов - стакан имеет важное, если не первостепенное значение. Тестирование без стакана возможно, но оно более грубое и лишено важных преимуществ.&lt;br /&gt; &lt;br /&gt;S#.Data выглядит вот так:&lt;br /&gt;&lt;a href='https://stocksharp.ru/file/102581/0_b496b_4df1915c_XL.png' class='lightview' data-lightview-options="skin: 'mac'" data-lightview-group='mixed'&gt;&lt;img src="https://stocksharp.ru/file/102581/0_b496b_4df1915c_XL.png?size=800x800" alt="S#.Data" title="S#.Data" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href='https://stocksharp.ru/file/102582/0_b496c_dde68e5d_XL.png' class='lightview' data-lightview-options="skin: 'mac'" data-lightview-group='mixed'&gt;&lt;img src="https://stocksharp.ru/file/102582/0_b496c_dde68e5d_XL.png?size=800x800" alt="Порядок действий для записи лога заявок" title="Порядок действий для записи лога заявок" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Как пользоваться S#.Data:&lt;br /&gt;&lt;a href='https://stocksharp.ru/file/102584/0_b496e_ad2c4d29_XXL.png' class='lightview' data-lightview-options="skin: 'mac'" data-lightview-group='mixed'&gt;&lt;img src="https://stocksharp.ru/file/102584/0_b496e_ad2c4d29_XXL.png?size=800x800" alt="Как пользоваться S#.Data" title="Как пользоваться S#.Data" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Как создать инструмент:&lt;br /&gt;&lt;a href='https://stocksharp.ru/file/102585/0_b496f_f734dfc0_L.png' class='lightview' data-lightview-options="skin: 'mac'" data-lightview-group='mixed'&gt;&lt;img src="https://stocksharp.ru/file/102585/0_b496f_f734dfc0_L.png?size=800x800" alt="Как создать инструмент" title="Как создать инструмент" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Как настроить плазу:&lt;br /&gt;&lt;a href='https://stocksharp.ru/file/102583/0_b496d_2acc24c0_XL.png' class='lightview' data-lightview-options="skin: 'mac'" data-lightview-group='mixed'&gt;&lt;img src="https://stocksharp.ru/file/102583/0_b496d_2acc24c0_XL.png?size=800x800" alt="Как настроить плазу" title="Как настроить плазу" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Как запустить приложение:&lt;br /&gt;&lt;a href='https://stocksharp.ru/file/102587/0_b4971_dd8693f9_L.png' class='lightview' data-lightview-options="skin: 'mac'" data-lightview-group='mixed'&gt;&lt;img src="https://stocksharp.ru/file/102587/0_b4971_dd8693f9_L.png?size=800x800" alt="Запустить приложение" title="Запустить приложение" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:120%"&gt;&lt;b&gt;Тестер стратегий.&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Когда вы записали данные считайте, что половину дела вы уже сделали. Осталось всего-навсего написать свой привод для тестирования и саму стратегию. =)&lt;br /&gt;&lt;br /&gt;Под меня написанный тестер, он простой, без визуализации, специально под тот шаблон стратегий, к которому я привык. Статистика в динамике выгружается автоматически в Excel. Здесь я взял шаблон, что давали, на обучении и пользуюсь им практически без его доработки. Он симпатичен на вид и есть графики эквити и проскальзывания.&lt;br /&gt;&lt;br /&gt;Шаблон тестера выглядит так.&lt;br /&gt;&lt;a href='https://stocksharp.ru/file/102586/0_b4970_8e2a4d54_XL.png' class='lightview' data-lightview-options="skin: 'mac'" data-lightview-group='mixed'&gt;&lt;img src="https://stocksharp.ru/file/102586/0_b4970_8e2a4d54_XL.png?size=800x800" alt="Шаблон тестера стратегий" title="Шаблон тестера стратегий" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Для примера взял трендовую стратегию пробоя полос Боллинджера.&lt;br /&gt;&lt;a href='https://stocksharp.ru/file/102589/0_b4973_f4207ac4_XL.png' class='lightview' data-lightview-options="skin: 'mac'" data-lightview-group='mixed'&gt;&lt;img src="https://stocksharp.ru/file/102589/0_b4973_f4207ac4_XL.png?size=800x800" alt="Визуальное представление стратегии" title="Визуальное представление стратегии" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;С точки зрения самого процесса, тестирование на ордер логе практически ничем не отличается от обычного, главное не забыть вписать:&lt;br /&gt;&lt;br /&gt;Trader.RegisterOrderLog(security);&lt;br /&gt;&lt;a href='https://stocksharp.ru/file/102578/0_b4a19_259465e_L.png' class='lightview' data-lightview-options="skin: 'mac'" data-lightview-group='mixed'&gt;&lt;img src="https://stocksharp.ru/file/102578/0_b4a19_259465e_L.png?size=800x800" alt="Регистрируем Ордер лог" title="Регистрируем Ордер лог" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;UseOrderLog = true,&lt;br /&gt;&lt;a href='https://stocksharp.ru/file/102577/0_b4a18_8c3e0682_L.png' class='lightview' data-lightview-options="skin: 'mac'" data-lightview-group='mixed'&gt;&lt;img src="https://stocksharp.ru/file/102577/0_b4a18_8c3e0682_L.png?size=800x800" alt="Использовать Ордер лог" title="Использовать Ордер лог" /&gt;&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;Условия тестирования:&lt;br /&gt;&lt;a href='https://stocksharp.ru/file/102590/0_b4974_7b3a3988_XL.png' class='lightview' data-lightview-options="skin: 'mac'" data-lightview-group='mixed'&gt;&lt;img src="https://stocksharp.ru/file/102590/0_b4974_7b3a3988_XL.png?size=800x800" alt="Условия тестирования" title="Условия тестирования" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Почему я не учитываю комиссию. Все просто, частенько приходится тестировать стратегии, для которых наиболее выгодным вариантом будет Fix комиссия. Такую услугу предлагает практически каждый брокер, но цены разные, поэтому просто вычитаю ее из прибыли.&lt;br /&gt;В любом случае, вы можете посчитать комиссию, как общее количество закрывающих сделок умножить на вашу нынешнюю комиссию на круг и вычесть ее из общего результата . Хотя данная &amp;quot;стратегия&amp;quot; всего лишь пример - это не готовая стратегия, которую можно было бы торговать.&lt;br /&gt;&lt;br /&gt;Статистика и эквити протестированной нами стратегии с 15-ого по 25-ое января 2013, в расчете на 1 контракт.&lt;br /&gt;&lt;a href='https://stocksharp.ru/file/102579/0_b49de_cd58ca84_XL.png' class='lightview' data-lightview-options="skin: 'mac'" data-lightview-group='mixed'&gt;&lt;img src="https://stocksharp.ru/file/102579/0_b49de_cd58ca84_XL.png?size=800x800" alt="Результаты тестирования стратегии" title="Результаты тестирования стратегии" /&gt;&lt;/a&gt;&lt;br /&gt;Просадки впечатляют, но положительное мат. ожидание -  на лицо.&lt;br /&gt;Проскальзывание - 0, потому что и на вход и на выход использовалось лимитное котирование.&lt;br /&gt; &lt;br /&gt;&lt;span style="font-size:120%"&gt;&lt;b&gt;Время.&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Как я писал ранее, тестирование на ордер логе требует больше времени, из-за того что оно в точности повторяет все события, происходящие на рынке. Лично я решил для себя эту проблему, используя несколько компьютеров для тестирования. Также, я использую методику, которая называется тестирование под управлением пользователя. &lt;br /&gt;По сути это ручная генетическая оптимизация. Такой подход  экономит машинное время, но мне приходится тратить больше моего личного времени на проведение оптимизации. Также я часто использую прикидочные тесты в Wealth-lab. &lt;br /&gt;Для того, чтобы результаты тестирования в Wealth-la были близки к тестам в StockSharp при входах, например котированием, нужно использовать специальный компоненты &lt;b&gt;EnterAtPrice&lt;/b&gt; и &lt;b&gt;ExitAtPrice&lt;/b&gt;. С помощью них, входы происходят по точно определенной цене на том баре, который мы укажем. Ориентировочно по этим ценам мы и войдем в рынок котированием. Эти компоненты позволяют нам тестировать входы на [bar] а не на [bar+1], что намного точнее.&lt;br /&gt;&lt;br /&gt;Тестируйте свои стратегии, проверяйте по 3 раза код, чтобы не переделывать тесты!&lt;br /&gt;Пользуйтесь только лучшими инструментами, будьте исследователями, но не забывайте торговать!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:120%"&gt;&lt;em&gt;Код стратегии:&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class='spoilertitle'&gt;&lt;input type='button' value='Показать спойлер' class='btn btn-primary' onclick="toggleSpoiler(this, 'spolier_262e19f60c734ac79879e687ff7bb23d');" title='Показать спойлер' /&gt;&lt;/div&gt;&lt;div class='spoilerbox' id='spolier_262e19f60c734ac79879e687ff7bb23d' style='display:none'&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;
namespace BollingerTrendStrategy
{
	using System;
	using Ecng.Common;
	using Ecng.ComponentModel;
    using Stops;
	using StockSharp.Algo;
	using StockSharp.Algo.Candles;
	using StockSharp.Algo.Indicators;
	using StockSharp.Algo.Indicators.Trend;
	using StockSharp.Algo.Strategies;
	using StockSharp.BusinessEntities;
    using StockSharp.Algo.Candles.Compression;
    using StockSharp.Algo.Indicators;
    using StockSharp.Algo.Indicators.Misc;
    using StockSharp.Algo.Indicators.Trend;
    
	/// &amp;lt;summary&amp;gt;
    /// Стратегия по полосам Болинджера, пробойная.
    /// &amp;lt;/summary&amp;gt;
    internal class BollingerTrendStrategy : Strategy
    {
        private BollingerBands _bands;
        private CandleSeries _series;
	   
        /// &amp;lt;summary&amp;gt;
        /// Событие отрисовки новой свечки и значения индикатора.
        /// &amp;lt;/summary&amp;gt;
        public event Action&amp;lt;Candle, IIndicator&amp;gt; Draw;

        protected override void OnStarted()
        {
            //создаем серию свечек и индикатор
            this._series = Security.TimeFrame(TimeSpan.FromSeconds(60));
            this._bands = new BollingerBands
            {
                Length = 64
            };

            //указываем период, за который должны формироваться свечки для данной серии
            this._series.WorkingTime = new WorkingTime
            {
                Times = new[] { new Range&amp;lt;TimeSpan&amp;gt;(TimeSpan.FromHours(10), TimeSpan.FromHours(19)), }
            };
          
            //подписываемся на событие окончания формирования свечек по серии
            //а так же на событие изменения свечек, чтобы можно было перерисовывать график в реалтайм режиме
            this._series
                .WhenCandlesFinished()
                .Do(Process)
                .Apply(this);

            //запускаем процесс формирования свечек
            this
                .GetCandleManager()
                .Start(this._series);

            base.OnStarted();
        }

        /// &amp;lt;summary&amp;gt;
        /// Основной алгоритм.
        /// &amp;lt;/summary&amp;gt;
        /// &amp;lt;param name=&amp;quot;candle&amp;quot;&amp;gt;Свечка.&amp;lt;/param&amp;gt;
        private void Process(Candle candle)
        {
            //пересчитать значение индикатора для новой свечки
            this._bands.Process(candle);

            //вызываем событие отрисовки свечки и индикатора на графике
            this.Draw.SafeInvoke(candle, this._bands);

            //если состояние свечки не Finished, значит сработало событие
            //изменения свечки и нет необходимости принимать решение о входе или выходе из позиции
            if (candle.State != CandleStates.Finished)
                return;

            //получаем таймфрейм свечек
            var timeFrame = (TimeSpan)this._series.Arg;
            //получаем время начала последней свечки с учетом текущего времени
            var time = timeFrame.GetCandleBounds(Security).Min - timeFrame;

            bool SignalLong; //Переменная для входа в лонг
            bool SignalShort; //Переменная для входа в шорт
            SignalLong = candle.ClosePrice &amp;gt; this._bands.UpBand.GetCurrentValue();
            SignalLong &amp;amp;= Position&amp;lt;=0;
            SignalShort = candle.ClosePrice &amp;lt; this._bands.LowBand.GetCurrentValue();
            SignalShort &amp;amp;= Position &amp;gt;=0;
            
            if (this._bands.IsFormed)
            {
                //При пробитии канала нет открытой позиции или открыта длинная позиция - Long, предварительно продав

                if (SignalLong &amp;amp;&amp;amp; doNotEnter &amp;gt; Security.GetMarketTime().TimeOfDay &amp;amp;&amp;amp; Security.GetMarketTime().TimeOfDay &amp;gt; isItMorning)
                {

                      if (Position == 1)
                        {
                            //sell
                            ChildStrategies.Add(new LimitQuotingStrategy(OrderDirections.Sell, 1,_bands.UpBand.GetCurrentValue()));
                            //RegisterOrder(this.SellAtMarket());
                        }
                    if (ChildStrategies.Count == 0)
                    {
                        //RegisterOrder(this.BuyAtMarket());

                        ChildStrategies.Add(new LimitQuotingStrategy(OrderDirections.Buy, 1, _bands.UpBand.GetCurrentValue()));
                    }
                }
                //При пробитии канала нет открытой позиции или открыта короткая позиция - Short, предварительно откупив
                if (SignalShort &amp;amp;&amp;amp; doNotEnter &amp;gt;Security.GetMarketTime().TimeOfDay &amp;amp;&amp;amp; Security.GetMarketTime().TimeOfDay &amp;gt; isItMorning)
                {
                    if (Position == -1)
                            {
                                //buy
                                ChildStrategies.Add(new LimitQuotingStrategy(OrderDirections.Buy, 1,_bands.LowBand.GetCurrentValue()));
                                 //RegisterOrder(this.BuyAtMarket());
                            }
                       if (ChildStrategies.Count == 0)
   
                        {
                            
                            //sell
                            ChildStrategies.Add(new LimitQuotingStrategy(OrderDirections.Sell, 1, _bands.LowBand.GetCurrentValue()));
                            //RegisterOrder(this.SellAtMarket());
                    }
                }
           
            }
        }
    }
}
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Спасибо за внимание!</content>
  </entry>
</feed>