﻿<?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">[BUG] EmulationTrader выполняет лимитные заявки по неправильным ценам</title>
  <id>~/topic/2161/bug-emulationtrader-vypolnyaet-limitnye-zayavki-po-nepravilnym-tsenam/</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-06-10T15:03:27Z</updated>
  <logo>https://stocksharp.com/images/logo.png</logo>
  <link href="https://stocksharp.com/handlers/atom.ashx?category=topic&amp;id=2161" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.com/posts/m/13997/</id>
    <title type="text">Отключил полностью генерацию стаканов, все равно такое поведение встречается, вот пример лога без ге...</title>
    <published>2011-11-28T00:50:37Z</published>
    <updated>2011-11-28T00:50:37Z</updated>
    <author>
      <name>kenota</name>
      <uri>https://stocksharp.com/users/28502/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Отключил полностью генерацию стаканов, все равно такое поведение встречается, вот пример лога без генерации стаканов вообще:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-plain"&gt;
10:59:52.587 |            | MyStrategy        | TakeProfitPrice: 103855 stop price:103515
10:59:52.587 |            | MyStrategy        | Registering take profit order
10:59:53.040 |            | MyStrategy        | Новая Sell сделка 26 по цене 103865 на 1 заявки 16654826.

&lt;/code&gt;&lt;/pre&gt;
&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/13961/</id>
    <title type="text">Описание работы эмулятора в текущей версии. 1) Пусть был стакан (цена, направление, объем). Стакан (...</title>
    <published>2011-11-25T11:53:48Z</published>
    <updated>2011-11-25T11:53:48Z</updated>
    <author>
      <name>pyhta4og</name>
      <uri>https://stocksharp.com/users/497/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Описание работы эмулятора в текущей версии.&lt;/p&gt;
&lt;p&gt;1)
Пусть был стакан (цена, направление, объем). Стакан (А)&lt;/p&gt;
&lt;p&gt;10 SELL 1
9  SELL 1
8  SELL 1&lt;/p&gt;
&lt;p&gt;5  BUY  1
4  BUY  1&lt;/p&gt;
&lt;p&gt;Вы кидаете заявку 9 BUY 2. Она сводится со стаканом по ценам 8 и 9.
Это алгоритм матчинга по стакану (FillOnQuotes)&lt;/p&gt;
&lt;ol start="2"&gt;
&lt;li&gt;Пусть был тот же стакан (А). Вы кидаете заявку 7 BUY 2. Она становится в стакан.
Он будет
10 SELL 1
9  SELL 1
8  SELL 1&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;-7 BUY  2 - наша заявка.
5  BUY  1
4  BUY  1&lt;/p&gt;
&lt;p&gt;Теперь приходит с биржи новый стакан (Б)&lt;/p&gt;
&lt;p&gt;10 SELL 1
9 SELL 1
8 SELL 1
7 SELL 1 - 7 BUY 2 - наша заявка
6 SELL 1&lt;/p&gt;
&lt;p&gt;4 BUY 1
3 BUY 1
2 BUY 1&lt;/p&gt;
&lt;p&gt;Алгоритм сведения все тот же - (С). Будут сделки по ценам 6 и 7.&lt;/p&gt;
&lt;ol start="3"&gt;
&lt;li&gt;Та же ситуация что и в 2). Т.е. заявка встала в стакан
10 SELL 1
9  SELL 1
8  SELL 1&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;-7 BUY  2 - наша заявка.
5  BUY  1
4  BUY  1&lt;/p&gt;
&lt;p&gt;Приходит сделка 5 TRADE 1.  Она соответствует тому что стакан (А) стал стаканом (Б). Т.е. заявку 5 BUY 1 кто-то взял встречной заявкой (лимитной SELL с ценой &amp;lt;=5 или маркетной).&lt;/p&gt;
&lt;p&gt;Эмулятор в случае такой биржевой сделки также удовлетворит нашу заявку 7 BUY 2 по ее лимитной цене 7. Это алгоритм матчинга по сделкам (FillOnTrades)&lt;/p&gt;
&lt;p&gt;Ситуация (1) соответствует ситуации когда вы кидаете стратегией лимитную заявку которая сразу может быть зафиллена текущим стаканом. И алгоритм матчинга здесь корректный - она исполняется по лУчшей чем в ней указано цене.&lt;/p&gt;
&lt;p&gt;Ситуация (3) соответствует эмуляции ситуации, когда есть сделка совершенная по цене 5 ниже нашей заявки на покупку. Это означает что в стакан была помещена заявка на SELL с ценой (&amp;lt;=5) ниже нашей (7). Мы явно с биржи такой заявки в наших данных не видим и алгоритм 2) не отработает. Поэтому сделана такая дополнительная эмуляция по сделкам.&lt;/p&gt;
&lt;p&gt;При эмуляции по сделкам цена филла лимитной заявки всегда будет равна цене заявленной в лиминой заявке.&lt;/p&gt;
&lt;p&gt;В вашем случае видимо в эмулятор первым пришел обновленный стакан, а не сделка соответствующая этому обновлению.
И сработал алгоритм FillOnQuotes.&lt;/p&gt;
&lt;p&gt;Попробуйте провести эксперимент, отключив загрузку и генерацию стаканов. Если по сделкам матчинг будет правильный, значит я прав с объяснением ситуации.&lt;/p&gt;
&lt;p&gt;Вообще говоря, следует признать что это ошибка. И ситуацию (2) надо обрабатывать иначе. Т.е. при обработке вновь входящего стакана, в случае если есть заявка которая матчится этим стаканом, то филлить ее по цене заявки. Видимо такие стаканы, не сопровождающиеся сделками, иногда все таки приходят. Вопрос на сколько часто.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/13958/</id>
    <title type="text">Кто нибудь может подтвердить проблему? Или может команда стокшарпа может что то сказать? </title>
    <published>2011-11-25T10:17:38Z</published>
    <updated>2011-11-25T10:17:38Z</updated>
    <author>
      <name>kenota</name>
      <uri>https://stocksharp.com/users/28502/</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/13900/</id>
    <title type="text">Всем привет, в EmulationTrader есть проблема: похоже что цены исполнения лимитных ордеров считаются ...</title>
    <published>2011-11-24T02:01:51Z</published>
    <updated>2011-11-24T02:02:42Z</updated>
    <author>
      <name>kenota</name>
      <uri>https://stocksharp.com/users/28502/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Всем привет,&lt;/p&gt;
&lt;p&gt;в EmulationTrader есть проблема: похоже что цены исполнения лимитных ордеров считаются по любому тику который лучше или равен цене ордера, что не является верным. Поясню на логе:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-plain"&gt;
11:17:37.330 |            | MyStrategy        | Calculated ExitPrice: 96520 
11:17:37.330 |            | MyStrategy        | Registering exit order
11:17:52.360 |            | MyStrategy        | Новая Sell сделка 50 по цене 96525 на 1 заявки 20689543.
11:17:52.360 |            | MyStrategy        | ExitOrder filled!

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;В первой колонке время в эмуляции (то есть как оно должно быть &amp;quot;на рынке&amp;quot;). Тут мы поставили заявку в 37 секунд, мы должны встать в стакан. Через 15 секунд цена дошла до нас, в реальности мы не можем в таком случае получить цену, лучше чем ту, по которой поставили. Нас обязаны по ней забрать.&lt;/p&gt;
&lt;p&gt;EmulationTrader считает что мы получаем по любой цене которая удовлетворяет, или лучше нашей заявки. Бывают очень серьезные различия, например в 100 пунктов на фьючерсе РТС. Соответственно, это искажает результаты тестирования.&lt;/p&gt;
&lt;p&gt;Версия стокшарпа с codeplex: 11757&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>